語法規(guī)則:
SQL不區(qū)分大小寫,通常做法是用大寫編寫所有SQL命令。
在SQL中,會忽略空格和換行。
一個SQL語句可以放在一個或多個文本行上。另外,多個SQL語句可以組合在一個文本行上。
SQL常用語句:Select,insert,update,delete,show等。
- SHOW語句
SHOW DATABASES(列出服務(wù)器管理的數(shù)據(jù)庫)
SHOW TABLES (顯示當(dāng)前選定的數(shù)據(jù)庫中的所有表)
SHOW columns FROM customers (顯示“customers”表中的列)
- SELECT語句(劃重點(diǎn)劃重點(diǎn))
SELECT column_1, column_2, column_3 FROM table1;(從table1表中,選取3列數(shù)據(jù))
SELECT * FROM table1; (*通配符,表示所有。選取table1表中的所有列)
SELECT DISTINCT column_1, column_2 FROM table1;(distinct用于返回唯一值,去掉重復(fù)記錄)
SELECT * FROM table1 LIMIT 6; (limit限定子集范圍。選取table1表中前6條記錄)
SELECT * FROM table1 LIMIT 2, 10; (選取table1表中從第3條開始的前10個結(jié)果)
SELECT table1. column_1 FROM table1;(列名前提供表名,用點(diǎn)分隔。完全限定名稱)
SELECT * FROM table1 ORDER BY column_1;(order by關(guān)鍵字默認(rèn)按升序ASC排序)
SELECT * FROM table1 ORDER BY column_1 DESC;(按DESC降序排序)
SELECT * FROM table1 ORDER BY column_1, column_2;(多列排序,先按列1,再按列2)
SELECT * FROM customers WHERE ID=6;(從customers表中選擇ID為6的記錄)
SELECT * FROM customers WHERE ID BETWEEN 2 AND 6;(選取ID介于2和6之間的記錄)
SELECT * FROM customers WHERE ID IN(3,4,6);(選取ID為3,4,6的記錄)
SELECT * FROM customers WHERE City=’London’;(單引號環(huán)繞文本值,選取London相關(guān)的記錄)
SELECT * FROM customers WHERE City=’London’AND state=’CA’;(AND語句)
SELECT * FROM customers WHERE City=’London’AND (Age=25 OR Age=28);(結(jié)合AND和OR)
SELECT ID, Salary+500 AS Salary FROM employees; (算術(shù)運(yùn)算符+,為員工工資加500)
SELECT CONCAT (FirstName,’,’,City)FROM customers;(concat()函數(shù)用于連接兩個或多個文本值,
并返回連接字符串。把FirstName與City連接起來,用逗號分隔)
執(zhí)行輸出結(jié)果:
CONCAT (FirstName,’,’,City)
John, New York
SELECT CONCAT (FirstName,’,’,City) AS new_column FROM customers;
(AS關(guān)鍵字為列自定義名稱)
執(zhí)行輸出結(jié)果:
new_column
John, New York
- LIKE操作符
LIKE操作符用于在WHERE子句中搜索列中的指定模式。
SQL模式允許使用“_”匹配任何單個字符,而使用“%”匹配任意數(shù)目字符(包括零個字符)。
案例:選擇FirstName以字母“D”開頭的所有員工:
SELECT * FROM employees WHERE FirstName LIKE ‘D%’;
案例:選擇LastName以字母“s”結(jié)尾的所有員工:
SELECT * FROM employees WHERE LastName LIKE ‘%s’;
- 函數(shù)
UPPER()函數(shù):將指定字符串中的所有字母轉(zhuǎn)換為大寫。(Smith>>SMITH)
LOWER()函數(shù):將指定字符串中的所有字母轉(zhuǎn)換為小寫。(Smith>>smith)
案例:SELECT FirstName, UPPER(LastName) AS LastName FROM employees;
SQRT():平方根。 AVG():平均值。 SUM():求和。 MIN():最小值。
案例:SELECT Salary, SQRT(Salary) FROM employees
- 子查詢
當(dāng)一個查詢是另一個查詢的條件時,稱之為子查詢。
例子: SELECT * FROM items WHERE cost>500 ORDER BY cost DESC;
SELECT Salary FROM employees WHERE Salary > (SELECT AVG(Salary) FROM employees);
- 表連接
組合來自兩個或?qū)€表的數(shù)據(jù)。表連接創(chuàng)建一個臨時表,顯示連接表中的數(shù)據(jù)。
案例:連接 customers表和orders表
SELECT customers.ID, customers.Name, orders.Name, orders.Amount FROM customers,
orders WHERE customers.ID=orders.Customer_ID ORDER BY customers.ID;
- 連接
JOIN操作符:橫向連接。又分內(nèi)連接和外連接。

案例:有三個表如下:

內(nèi)連接:SELECT * FROM user_1, user_2 WHERE user_1.id = user_2.id

內(nèi)連接輸出結(jié)果
左外連接:SELECT * FROM user_1 LEFT OUTER JOIN user_2 ON user_1.id = user_2.id

image.png
全外連接:SELECT * FROM user_1 FULL OUTER JOIN user_2 ON user_1.id = user_2.id

全連接,兩個表的行都在
UNION操作符:縱向連接
UNION將多個數(shù)據(jù)集合并到單個數(shù)據(jù)集中,并刪除任何現(xiàn)有的重復(fù)項(xiàng)。
UNION ALL將多個數(shù)據(jù)集合并到一個數(shù)據(jù)集中,但不會刪除重復(fù)的行。
UNION ALL比UNION運(yùn)行速度快,因?yàn)樗粫?shù)據(jù)集執(zhí)行重復(fù)刪除操作。
UNION內(nèi)部每個SELECT語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。
同時,每個SELECT語句中的列的順序必須相同。
案例:SELECT ID, City FROM table1 UNION SELECT ID, City FROM table2;(不包括重復(fù)值)
SELECT ID, City FROM table1 UNION ALL SELECT ID, City FROM table2;(包括重復(fù)值)
CREATE TABLE語句:創(chuàng)建表
CREATE TABLE uesrs ( UserID int, FirstName varchar(100), LastName varchar(100), City varchar(100); PRIMARY KEY(UserID));
SQL約束:約束可在創(chuàng)建表時規(guī)定
NOT NULL:指示某列不能存儲NULL值。
UNIQUE:保證每列的每行必須有唯一值。
PRIMARY KEY:NOT NULL和UNIQUE的結(jié)合。主鍵。
FOREIGN KEY:保證一個表中的數(shù)據(jù)匹配另一個表中的值的參照完整性。
CHECK:保證列中的值符合指定的條件。
DEFAULT:規(guī)定沒有給列賦值時的默認(rèn)值。
AUTO INCREMENT:自動遞增,插入新記錄時,自動創(chuàng)建主鍵字段的值。
案例: UserID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (UserID)
CREATE TABLES users (id int NOT NULL AUTO_INCREMENT, username varchar(40) NOT NULL, password varchar(10) NOT NULL, PRIMARY KEY(id) );
INSERT INTO語句:用于向數(shù)據(jù)庫中的表添加新的數(shù)據(jù)行。
案例:向Employees表中插入新的一行信息。
INSERT INTO Employees VALUES (6, ‘Andrew’, ‘Thomas’, 43);
INSERT INTO Employees( ID, FirstName, LastName, Age) VALUES (6, ‘Andrew’, ‘Thomas’, 43); (指定表列名后,再插入數(shù)據(jù))
ALTER TABLE:用于在已有的表中添加、刪除或修改列。
案例:給“people”表中添加一個名為“Birthday”的列
ALTER TABLE people ADD Birthday date;
ALTER TABLE people DROP COLUMN Birthday ; (刪除“Birthday”列)
ALTER TABLE people CHANGE FirstName name varchar(55);(將“FirstName”列重命名為“name”)
UPDATE語句:更新表中記錄
UPDATE Employees SET Salary=6000 WHERE ID=1; (WHERE子句規(guī)定哪條記錄需要更新,如果省略WHERE子句,所有記錄都將被更新?。?
UPDATE Employees SET Salary=5500, FirstName=’Robert’WHERE ID=1; (逗號分隔,更新多列)
RENAME TABLE: 重命名整個表。
RENAME TABLE people TO users;
DELETE 語句:刪除表中記錄
DELETE FROM Employees WHERE ID=1;(WHERE子句規(guī)定哪條記錄需要刪除,如果省略WHERE子句,所有記錄都將被刪除?。?
DROP TABLE: 刪除整個表。
DROP TABLE people;
SQL視圖:是基于SQL語句的結(jié)果集的可視化的表。視圖包含行和列,就像一個真實(shí)的表。
案例:創(chuàng)建一個視圖List,顯示每個員工的“FirstName”和“Salary”。
CREATE VIEW List AS SELECT FirstName, Salary FROM Employees;
可以像查詢實(shí)際表一樣查詢列表視圖:
SELECT * FROM List;
DROP VIEW:刪除視圖。
DROP VIEW List;
- SQL運(yùn)算符
