SQL
Structured Query Language,結構化查詢語言,可用于訪問和處理數據庫添寺。
基本操作:增刪改查。
大小寫不敏感该押,每一個命令用分號結尾。
為了更好的復習言蛇,所以這里就用命令行兔跌,而不用GUI
- 在所有操作之前的準備工作當然是要先安裝配置好SQL環(huán)境
- 命令行登陸
mysql -h localhost -u root -p
基礎語法
show databases;
查看所有的數據庫
use Databases_name;
選擇需要的數據庫show tables;
查看所選擇的數據庫中所有的表
create database db_name;
創(chuàng)建新的數據庫
create table table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
...
);
創(chuàng)建新的表
增(INSERT INTO)
語法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
刪(DELETE)
語法:
DELETE FROM table_name WHERE some_column = some_value;
刪除指定表中的某條數據
如果不加后面的WHERE語句宾抓,就會把整個表都刪除。
改(UPDATE)
語法:
UPDATE table_name SET column1 = value1, column2=value2, ... WHERE some_column=some_value;
更新某個表中的某條數據
如果不加WHERE語句豫喧,會把整個表的該字段都更新石洗。
查(SELECT)
SELECT * FROM table_name;
查看整個表的數據
SELECT column_name1, column_name2, ... FROM table_name;
查看指定表中某幾個字段的數據
運算符(AND&OR)
AND:兩個條件都滿足時紧显,顯示記錄讲衫;
OR:只要有其中一個條件滿足茴扁,就顯示記錄弃鸦。
關鍵字(ORDER BY&DESC)
對查詢的結果集進行排序,默認為升序,若要按降序排列载碌,可使用DESC關鍵字锌畸。
進階
因為本胖太菜了莹痢,只會一點MySQL疲陕,所以這后面都只考慮MySQL里面的情況。
通配符
通配符 | 描述 |
---|---|
% | 替代0個或多個字符 |
_ | 替代一個字符 |
[charlist] | 字符列中的任何單一字符 |
^[charlist]或![charlist] | 不在字符列中的任何單一字符 |
在MySQL中矿辽,用REGEXP或NOT REGEXP運算符來操作正則表達式丹允。(^和!都是正則表達式中的內容)
通配符%和_在下面LIKE部分做演示,這里演示后兩種情況袋倔。
查找出empno中有數字2或3的信息
查找出empno中有數字3-6其中之一的信息
查找出empno中沒有數字3-9任何一個數字的信息
SELECT TOP
用來規(guī)定返回的記錄的數目雕蔽。
并非所有的數據庫系統(tǒng)都支持這個語句。MySQL支持LIMIT語句宾娜,Oracle使用ROWNUM批狐。
MySQL語法:
SELECT column_name(s) FROM table_name LIMIT number;
LIKE
用在WHERE子句中,搜索某列內容中指定的內容前塔。
語法:
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
不知道pattern意思的自己去百度
查詢ename用J開頭的所有員工信息:
查詢ename以E/e結尾的所有員工信息:
查詢ename中包含了ar字符的所有員工信息:
查詢ename中以任意字符開頭嚣艇,以nne結尾的所有員工信息
IN
允許在WHERE子句中規(guī)定多個值。
語法:
SELECT column(s) WHERE table_name WHEREcolumn_name IN (value1, value2, ...)华弓;
如果你非要用=來去多個值的話食零,用or也可以實現
BETWEEN
查詢介于兩個值之間的數據范圍內的值,值得類型可以不僅僅是數值寂屏。
語法:
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
BETWEEN前面加上not也可以
AS
為指定表或列指定新的名字贰谣。
語法:
SELECT column_name AS new_name FROM table_name;
SELECT column_name(s) FROM table_name AS new_name;
使用AS修改的名字,是暫時的迁霎。
JOIN
基于兩個或多個表之間共同的字段吱抚,用JOIN把他們的行結合起來。
INNER JOIN
語法:
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name考廉;
dept表:
emp表:
結合之后:
LEFT (OUTER) JOIN
從左表(table1)返回所有的行秘豹,若右表(table2)沒有匹配,則結果為NULL昌粤。
語法:
SELECT column_name(s) FROM table1 LEFT (OUTER) JOIN table2 ON table1.column_name = table2.column_name;
RIGHT (OUTER) JOIN
從右表(table2)返回所有的行既绕,若左表(table1)沒有匹配,則結果為NULL婚苹。
語法:
SELECT column_name(s) FROM table1 RIGHT (OUTER) JOIN table2 ON table1.column_name = table2.column_name;
哪邊的JOIN岸更,哪邊的表就會被全部顯示鸵膏。
FULL (OUTER) JOIN
只要左右兩表其中一個存在匹配膊升,就返回行。
語法:
`SELECT column_name(s) FROM table1 FULL (OUTER) JOIN table2 ON table1.column_name = table2.column_name;``
UNION
用于聯合查詢谭企,聯合多個SELECT語句的結果集廓译,結果集中的列名等于UNION中第一個SELECT語句中的列名评肆。
UNION內部的每個SELECT語句結果必須列數相同,列的數據類型非区、順序也必須相同瓜挽。
語法:
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
默認將重復的值合并為一個。
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
允許重復的值征绸。
不管是啥基礎語言久橙,都還是要動手實踐一下才會更好吶