日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Linux-MySQL基本命令-SQL语句

發(fā)布時間:2023/12/19 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux-MySQL基本命令-SQL语句 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

服務(wù)端命令SQL

在數(shù)據(jù)庫系統(tǒng)中,SQL語句不區(qū)分大小寫(建議用大寫)
?SQL語句可單行或多行書寫,以“;”結(jié)尾
?關(guān)鍵詞不能跨多行或簡寫
?用空格和縮進來提高語句的可讀性
?子句通常位于獨立行,便于編輯,提高可讀性
?注釋:
?SQL標(biāo)準(zhǔn):
/*注釋內(nèi)容*/ 多行注釋
-- 注釋內(nèi)容 單行注釋,注意有空格
?MySQL注釋:
#

SQL優(yōu)化

查詢時,能不要*就不用*,盡量寫全字段名
?大部分情況連接效率遠大于子查詢
?多表連接時,盡量小表驅(qū)動大表,即小表 join 大表
?在千萬級分頁時使用limit
?對于經(jīng)常使用的查詢,可以開啟緩存
?多使用explain和profile分析查詢語句
?查看慢查詢?nèi)罩?#xff0c;找出執(zhí)行時間長的sql語句優(yōu)化

?

sql查詢:單表查詢和多表查詢

?

兩張表合并:橫向合并、縱向合并

縱向合并:兩張表挑出相同的字段進行合并(注意順序)

?

范例

SQL查詢范例

1、給表的字段名添加別名 select stuid as 學(xué)生編號,name 姓名,gender 性別 from students;

2、查詢年齡大于40的 select * from students where age >40;

3、查找年齡大于20小于40的 select * from students where age < 40 and age > 20; select * from students where age between 20 and 40;(這種是包含)

4、查詢以姓名以X開頭的 select * from students where name like 'x%';

5、查找字段中為空值得信息 select * from students where classid is null;

6、查找字段值不為空得信息 select * from students where classid is not null;

7、查找報1,2,6班得學(xué)生信息 select * from students where classid in (1,2,6);

8、查找年齡,并去掉重復(fù)得年齡 select distinct age from students;

9、查詢年齡,去掉重復(fù)并排序 select distinct age from students order by age;(默認(rèn)正序) select distinct age from students order by age desc;(倒敘)

10、統(tǒng)計students表總共有多少行 select count(*) from students;

11、統(tǒng)計age年齡的總和 select sum(age) from students;

12、統(tǒng)計年齡最大的 select max(age) from students;

13、統(tǒng)計男女平均年齡 select gender,avg(age) from students group by gender;

14、分別統(tǒng)計每班的女生男生平均成績(gender性別classid班級age成績) select gender,classid,avg(age) from students group by gender, classid;

15、基于上條再統(tǒng)計女生的最大年齡 select gender,max(age) from students group by gender having gender='f'; 備注:分完組后再條件用having不能用where

16、按照課程統(tǒng)計沒課考試最好的成績 select courseid,max(score) as 最好成績 from scores group by courseid;

17、取排序的前3名 select age from students order by age desc limit 3;

18、基于排序跳過2個顯示3個 select age from students order by age desc limit 2,3;

多表

1、縱向合并兩張表 select stuid as id,name,age,gender from students union select tid,name,age,gender from teachers; 2、基于上條查詢 查找age字段大于50的信息 select * from (select stuid as id,name,age,gender from students union select tid,name,age,gender from teachers)as b where b.age >50; 備注:利用了子查詢

子查詢:

查找比平均年齡大的信息 select name,age from students where age >(select avg(age) from students);

交叉鏈接

兩張表交叉鏈接組合 select * from students cross join teachers;

內(nèi)連接

取兩張表的交集實現(xiàn)查找出學(xué)生對應(yīng)的老師 select s.name as 學(xué)生name,t.name as 老師name from students as s inner join teachers as t on s.teacherid=t.tid; 備注:因為兩種表有相同的字段,為了群分開給它加別名as,

左外鏈接

兩張表A 和 B , 取A表和B表的與A表相關(guān)的部分,A加B的一部分 select stuid,s.name,s.age,s.gender,classid,teacherid,tid,t.name,t.age,t.gender from students as s left join teachers as t on s.teacherid=t.tid;

?

有這樣一個表emp

公司人員信息,即對應(yīng)的領(lǐng)導(dǎo)--(leaderid領(lǐng)導(dǎo)編號)

idnameleaderid
1xiaomingnull
2wanger1
3zhangsan2
4lisi3

現(xiàn)在有這樣一個需求,查詢每個人員對應(yīng)的領(lǐng)導(dǎo)是誰

把emp表當(dāng)作兩張表來處理,自鏈接

select e.name as emp,l.name as leader from emp as e left outer join emp as l on e.leaderid=1.id;

?

?

總結(jié)

以上是生活随笔為你收集整理的Linux-MySQL基本命令-SQL语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。