Linux-MySQL基本命令-SQL語句

來源:互聯網
上載者:User

標籤:尋找   leader   查看   跳過   body   查詢   toolbar   多少   內容   


服務端命令SQL

在資料庫系統中,SQL語句不區分大小寫(建議用大寫)
?SQL語句可單行或多行書寫,以“;”結尾
?關鍵詞不能跨多行或簡寫
?用空格和縮排來提高語句的可讀性
?子句通常位於獨立行,便於編輯,提高可讀性
?注釋:
?SQL標準:
/*注釋內容*/ 多行注釋
-- 注釋內容 單行注釋,注意有空格
?MySQL注釋:
#

SQL最佳化

查詢時,能不要*就不用*,盡量寫全欄位名
?大部分情況串連效率遠大於子查詢
?多表串連時,盡量小表驅動大表,即小表 join 大表
?在千萬級分頁時使用limit
?對於經常使用的查詢,可以開啟緩衝
?多使用explain和profile分析查詢語句
?查看慢查詢日誌,找出執行時間長的sql語句最佳化


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


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

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


範例

SQL查詢範例

1、給表的欄位名添加別名select stuid as 學生編號,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班得學生資訊select * from students where classid in (1,2,6);8、尋找年齡,並去掉重複得年齡select distinct age from students;9、查詢年齡,去掉重複並排序select distinct age from students order by age;(預設正序)select distinct age from students order by age desc;(倒敘)10、統計students表總共有多少行select count(*) from students;11、統計age年齡的總和select sum(age) from students;12、統計年齡最大的select max(age) from students;13、統計男女平均年齡select gender,avg(age) from students group by gender;14、分別統計每班的女生男生平均成績(gender性別classid班級age成績)select gender,classid,avg(age) from students group by gender, classid;15、基於上條再統計女生的最大年齡select gender,max(age) from students group by gender having gender=‘f‘;備忘:分完組後再條件用having不能用where16、按照課程統計沒課考試最好的成績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;

內串連

取兩張表的交集實現尋找出學生對應的老師select s.name as 學生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表相關的部分,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

公司人員資訊,即對應的領導--(leaderid領導編號)

id name leaderid
1 xiaoming null
2 wanger 1
3 zhangsan 2
4 lisi 3

現在有這樣一個需求,查詢每個人員對應的領導是誰

把emp表當作兩張表來處理,自連結

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



Linux-MySQL基本命令-SQL語句

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.