1. 程式人生 > >sql所有查詢語句

sql所有查詢語句

sql:mysql查詢資料

1.基本查詢

查詢所有欄位

select * from table_name;

查詢指定欄位

select 欄位,欄位 from table_name;

as起別名

select 欄位 as name from table_name;

表名.欄位 as給表起別名

select s.name from student as s;

distinct去重複

select distinct gender from student;

2.條件查詢

1.

select * from student where age > 18;

where 欄位 [>,<或者!=] 條件
邏輯運算: and or not

2,模糊查詢

like:% 替換0個或者多個 _替換一個

select name from students where name like ‘小%’;#以小開始

查詢有小的:select name from students where name like ‘%小%’;

查詢有兩個字的:select name from students where name like ‘__’;

至少兩個 :select name from students where name like ‘__%’;

rlike 正則表示式

select name from students where name rlike ‘^周.*’;
貪婪非貪婪

3.範圍查詢

非連續 in

select name, age from students where age in (12,18,34)

非連續 not in

連續 between … and …

not between … and …

年齡不在18到34 select name,age from students where age not between 18 and 34;

4.空判斷

is null

is not null

a = None a誰也沒有指向
a = ‘’ a指向一個空的字串

3.排序

order by欄位
asc 從小到大
desc 從大到小
在查詢語句後加上order by xxx [order by[desc]]

order by支援多個欄位 order by heigh desc, id desc;
先寫的誰,就按照誰先排序

4.聚合函式

總數count:

select count(*) as 男性人數 from students where gender = 1;

最大值max

select max(age) from students ;

最小min

求和sum

平均值 avg

select 表示式 from xxx;

四捨五入 round(結果,保留幾位小數) 不精確計算 不適合精確處理帶小數點的

不能放入兩個表示式,因為他不知道把資料給誰
ceil加1 天花板
floor 取小 地板

5.分組

group by分組

分組的意義是和聚合一起用,先分組,再取資料
select gender, count(*) from students group by gender;
gender代表的意義是必須能唯一區分分組的特徵的欄位,再結合聚合表示式篩選出資訊

group_concat顯示組中的各類資訊

having對分組進行條件判斷

where再gruop by前 having在後
where對結果判斷,having對分組判斷
group by常和having搭配使用

6.分頁

limit 限制查詢出來的個數
limit start起始下標,num查詢個數
limit (第N頁-1)* 每頁個數,每頁個數
limit總要寫在最後面

7.連線查詢

連線多個表,取多個表中公共部分

內連線:取交集

inner join… on條件
select * from students inner join classes on students.cls_id = classes.id;

按要求顯示
select students.*, classes.name from students inner join classes on students.cls_id = classes.id;

as可以起別名

左連線 left join… on

右連線 right join … on 沒啥意義

查詢的結果再查詢

查詢語句 …+ having…
查詢語句…+ where…

8.自關聯

table_name1 inner join table_name1 on… having…

9.子查詢

先寫一個select 再巢狀一個select

10.資料庫的設計:

遵循三正規化:
第一正規化:列的原子性,不能再拆分

第二正規化:第一正規化之上,必須有主鍵,主鍵之外的欄位直接依賴於所有的主鍵,不能依賴於主鍵的一部分

第三正規化:第二正規化之上,不能存在依賴傳遞

E-R模型 實體-關係

  • 實體A對實體B為1對1,則在表A或表B中建立一個欄位,儲存另一個表的主鍵值
  • 實體A對實體B為1對多:在表B中建立一個欄位,儲存表A的主鍵值
  • 實體A對實體B為多對多:新建一張表C,這個表只有兩個欄位,一個用於儲存A的主鍵值,一個用於儲存B的主鍵值

50條軍規
https://mp.weixin.qq.com/s/Yjh_fPgrjuhhOZyVtRQ-SA