天天看點

mysql表常用操作

使用 SQL [charlist] 通配符

MySQL 中使用 REGEXP 或 NOT REGEXP 運算符 (或 RLIKE 和 NOT RLIKE) 來操作正規表達式。

下面的 SQL 語句選取 name 以 "G"、"F" 或 "s" 開始的所有網站:

SELECT * FROM Websites

WHERE name REGEXP '^[GFs]'; 

SQL SELECT DISTINCT 語句

在表中,一個列可能會包含多個重複值,有時您也許希望僅僅列出不同(distinct)的值。

DISTINCT 關鍵詞用于傳回唯一不同的值。

SELECT DISTINCT country FROM Websites;

SQL BETWEEN 操作符

BETWEEN 操作符選取介于兩個值之間的資料範圍内的值。這些值可以是數值、文本或者日期。

SQL BETWEEN 文法

SELECT column_name(s)

FROM table_name

WHERE column_name BETWEEN value1 AND value2; 

WHERE name BETWEEN 'A' AND 'H'; 

SELECT * FROM access_log

WHERE date BETWEEN '2016-05-10' AND '2016-05-14'; 

列的 SQL 别名文法

SELECT column_name AS alias_name

FROM table_name;

表的 SQL 别名文法

FROM table_name AS alias_name; 

SELECT w.name, w.url, a.count, a.date

FROM Websites AS w, access_log AS a

WHERE a.site_id=w.id and w.name="菜鳥教程"; 

"Websites" 表中的 "id" 列指向 "access_log" 表中的字段 "site_id"。上面這兩個表是通過 "site_id" 列聯系起來的。

然後,如果我們運作下面的 SQL 語句(包含 INNER JOIN):

執行個體

SELECT Websites.id, Websites.name, access_log.count, access_log.date

FROM Websites

INNER JOIN access_log

ON Websites.id=access_log.site_id; 

INNER JOIN 與 JOIN 是相同的。

 SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name=table2.column_name;

或:

JOIN table2

LEFT JOIN table2

LEFT OUTER JOIN table2

SQL FULL OUTER JOIN 關鍵字

FULL OUTER JOIN 關鍵字隻要左表(table1)和右表(table2)其中一個表中存在比對,則傳回行.

FULL OUTER JOIN 關鍵字結合了 LEFT JOIN 和 RIGHT JOIN 的結果。

SQL FULL OUTER JOIN 文法

FULL OUTER JOIN table2

MySQL中不支援 FULL OUTER JOIN

SQL UNIQUE 限制

UNIQUE 限制唯一辨別資料庫表中的每條記錄。

UNIQUE 和 PRIMARY KEY 限制均為列或列集合提供了唯一性的保證。

PRIMARY KEY 限制擁有自動定義的 UNIQUE 限制。

請注意,每個表可以有多個 UNIQUE 限制,但是每個表隻能有一個 PRIMARY KEY 限制。

CREATE TABLE 時的 SQL UNIQUE 限制

下面的 SQL 在 "Persons" 表建立時在 "P_Id" 列上建立 UNIQUE 限制:

MySQL:

CREATE TABLE Persons

(

P_Id int NOT NULL,

LastName varchar(255) NOT NULL,

FirstName varchar(255),

Address varchar(255),

City varchar(255),

UNIQUE (P_Id)

)

ALTER TABLE 時的 SQL UNIQUE 限制

當表已被建立時,如需在 "P_Id" 列建立 UNIQUE 限制,請使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons

ADD UNIQUE (P_Id)

如需命名 UNIQUE 限制,并定義多個列的 UNIQUE 限制,請使用下面的 SQL 文法:

ADD CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

撤銷 UNIQUE 限制

如需撤銷 UNIQUE 限制,請使用下面的 SQL:

DROP INDEX uc_PersonID

SQL Server / Oracle / MS Access:

DROP CONSTRAINT uc_PersonID

如需命名 PRIMARY KEY 限制,并定義多個列的 PRIMARY KEY 限制,請使用下面的 SQL 文法:

CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

ALTER TABLE 時的 SQL PRIMARY KEY 限制

當表已被建立時,如需在 "P_Id" 列建立 PRIMARY KEY 限制,請使用下面的 SQL:

ADD PRIMARY KEY (P_Id)

ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)

注釋:如果您使用 ALTER TABLE 語句添加主鍵,必須把主鍵列聲明為不包含 NULL 值(在表首次建立時)。

DROP PRIMARY KEY

DROP CONSTRAINT pk_PersonID

CREATE TABLE 時的 SQL FOREIGN KEY 限制

下面的 SQL 在 "Orders" 表建立時在 "P_Id" 列上建立 FOREIGN KEY 限制:

CREATE TABLE Orders

O_Id int NOT NULL,

OrderNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)

如需命名 FOREIGN KEY 限制,并定義多個列的 FOREIGN KEY 限制,請使用下面的 SQL 文法:

CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)

REFERENCES Persons(P_Id)

ALTER TABLE 時的 SQL FOREIGN KEY 限制

當 "Orders" 表已被建立時,如需在 "P_Id" 列建立 FOREIGN KEY 限制,請使用下面的 SQL:

ALTER TABLE Orders

ADD FOREIGN KEY (P_Id)

ADD CONSTRAINT fk_PerOrders

FOREIGN KEY (P_Id)

撤銷 FOREIGN KEY 限制

如需撤銷 FOREIGN KEY 限制,請使用下面的 SQL:

DROP FOREIGN KEY fk_PerOrders

DROP CONSTRAINT fk_PerOrders

 本文轉自 matengbing 51CTO部落格,原文連結:http://blog.51cto.com/matengbing/1875769