sql:Structured Query Language,用於對結構化數據(關係型數據庫)做CURD 操作。
關係數據庫表內字段的關係,表與表之間的關係可以理解爲對現實世界的建模。
表與表之間的關係:一對一、一對多(一個表的一條記錄對應另一個表的多條記錄)、多對多。
主鍵:每個表必有主鍵,可以由一個或多個列共同組成,不允許重複;數據庫自動爲逐漸建立索引(由多個列組成的主鍵稱爲聯合主鍵)。
索引:是對數據庫一個或多個列做預先排序的數據結構。使用索引可以讓數據庫不必掃描整個表,而直接定位到符合條件的記錄,大大加快查詢速度。索引的效率取決於列的值是否散列,即該列的值越不相同,索引效率越高,列的值重複的越多,索引效率越低。
sql 重要元素:
- select column1, column2
- from column1, column2
- where condition1 (and or not) condition2
- order by column1, column2
- group by column1, column2
- limit m offset n :限制返回的條數,以及返回數據的起始位移
- 邏輯連接:and,or,not
- 聚合函數:count,avg,sum,min,max
並列的字段用逗號分隔,別名用空格分隔
from多表查詢:from table1, table2,通過from 多個表實現的多表查詢,返回的是多個表的笛卡爾乘積
join 多表查詢:先確定主表(select table),根據條件(on condition)把從表(join table)的字段連接到主表上。可以join 多個從表,使用多個 join … on … 子句即可
- inner join table on condition
- left outer join
- right outer join
- full outer join
insert into table (col1, col2) values (value1, value2), (value1, value2);
updata table set col1=value1, col2=value2 where condition
(如果where選擇出多條語句,則所有被選中的語句都會被update)
delete from table where condition
MySQL Client的可執行程序是mysql,MySQL Server的可執行程序是mysqld。mysql client 通過 TCP 連接與mysql server 通信。
replace into table (col1, col2) values (value1, value2); 如果記錄不存在就直接插入,否則先刪除再插入
事物:把多條sql語句作爲一個整體執行,要麼全部全執行,要麼全不執行。事物具有ACID特性。
Begin; sql1; sql2; commit