起別名
目的:為了簡化列名稱單詞過長?使用AS?或者使用空格
例如: SELECT emptName AS ename FROM?table;
? ??????????SELECT emptName? ename? FROM? table;
查
? ? ??查詢?nèi)恚?/b>
????????????SELECT * FROM?table睡扬;
? ????查詢特定的列:
?????????????SELECT?column FROM?table卖怜;
? ????查詢阐枣,除去重復(fù)記錄? DISTINCT:
???????????SELECT DISTINCT * FROM?table;
? ? ?條件查詢 WHERE? ?:
? ? ? ? ? ? WHERE子句后跟條件
? ? ? ? ? ? 運算符:&& (AND),|| (OR),! (NOT),BETWEEN...AND,IN,LIKE,IS NULL,IS NOT NULL,
? ? ? ? ? ? ? ? ? ? ? ? ? ? >甩鳄,<, <=, >=, !=, <>
? ????排序查詢 ORDER BY:
? ? ? ? ? ? ?SELECT * FROM table?ORDER BY id DESC???; #降序 descendant
? ? ? ? ? ? ?SELECT * FROM table?ORDER BY?id?ASC; #升序?ascendant
????????????注意:字符串排序按照Unicode來排序额划;如果排序規(guī)則默認為空,默認升序排列ASC.
? ??? ?模糊條件查詢 LIKE:
? ? ? ? ? ? %:表示任意多個字符? ? ?_:表示任意單個字符
? ? ? ? ? ? 例:查詢姓名中包含 e 的員工有哪些
? ? ? ? ? ? SELECT * FROM table WHERE name LIKE?'%e%'
? ? ? ? ? ? 查詢姓名第二個字母是 e 的員工有哪些
? ??????????SELECT * FROM table WHERE?name?LIKE?'_e%'
? ? ? ? 分頁查詢 LIMIT:
? ? ? ? ? ? 查詢結(jié)果集一頁展示不完可以用分頁展示
? ? ? ? ? ? 要有兩個已知條件 :分頁大幸靖啊(size)燥滑,頁碼(page);
????????????start?每頁開始查詢的值, start=(page-1)*size;
? ? ? ? ? ? 格式:???SELECT * FROM table?LIMIT? start,size;
? ? ? ? ? ? 例: ????SELECT * FROM table LIMIT 0,10; #查詢第一頁的十條記錄
? ? ? ? ? ? 注意:start和size必須是數(shù)值型腔稀,否則會報錯
? ? ? ?分組查詢 GROUP BY:
? ? ? ? ? ?按性別分組,求數(shù)序平均分:SELECT?sex ,AVG(math) FROM?table GROUP?BYsex;
? ? ? ? 聚合函數(shù) ??
? ? ? ? ? ? 將一列數(shù)據(jù)作為一個整體進行縱向計算
? ? ? ? ? ? count :個數(shù) 羽历;max:最大值 ;min:最小值 诵闭;sum:?總和澎嚣;avg:平均值。
? ? ? ? ? ? 聚合函數(shù)排除null 1.IFNULL函數(shù) 2.選擇不為空的列計算?
? ? ? ? ? ? 例:1.SELECT count (IFNULL(math)) FROM?table;
? ? ? ? ? ? ? ? ? ? 2.count(id)
? ? ? ? 查詢的時候執(zhí)行運算
????????????練習(xí):查詢出所有員工的姓名及其年薪
? ? ? ? ? ? SELECT ename,salary*12 FROM emp;
? ??????子查詢
? ? ? ? ? ? 加上條件:兩表之間的關(guān)聯(lián)褥琐。
? ? ? ? ? ? 例:查詢研發(fā)部的員工有哪些晤郑。(部門表:dept;員工表:emp)
? ? ? ? ? ? ? ? 1.查詢研發(fā)部部門的編號? 2.查詢該編號下的所有員工
? ? ? ? ? ? ? ? SELECT * FROM emp WHERE deptId=(SELECT dId FROM dept WHERE ????????????dName='研發(fā)部');
? ? ? ? ? ? ? ? 以上查詢無法查找到?jīng)]有部門的員工磕洪,無法查找到?jīng)]有員工的部門
? ? ? ? ? ? ? ? 解決:1.內(nèi)連接 2.外連接? 3.全連接(MySQL不支持)
? ? ? ? ? ? ????1.
????????????????SELECT eName,dName? FROM?emp INNER?JOINdept?ON deptId=dId;
? ? ? ? ? ? ? ? (返回兩個表的交集部分)
? ? ? ? ? ? ? ? 2.
? ? ? ? ? ? ? ? 左外連接
????????????????SELECT?eName ,dName FROM emp LEFT (OUTER? 可省略 )JOIN DEPT ????????????????ON?deptId=dId
? ??????????????左(外)連接诫龙,左表的記錄將會全部表示出來签赃,而右表只會顯示符合搜索條件的記錄。? ? ? ? ? ? ? ? ? 右表記錄不足的地方均為NULL锦聊。
? ? ? ? ? ? ? ? 右外連接
? ? ? ? ? ? ? ? SELECT?eName ,dName FROM?emp??RIGHT(OUTER? 可省略?)JOIN??dept ??ON ????????????????deptId=dId;
????????????????與左(外)連接相反
? ? ? ? ? ? ? ? 3.
????????????????FULL JOIN?
? ? ? ? ? ? ? ? 顯示左側(cè)右側(cè)所有的記錄括丁,(左連接)UNION ALL(右外連接)
? ? ? ? ? ? ? ? 把左連接和右連接的結(jié)果聯(lián)合起來伶选。
? ? ? ? ? ? ? ??UNION ALL:聯(lián)合后不合并相同記錄尖昏;UNION?聯(lián)合后合并相同記錄构资。
? ??????????
刪
? ?? ?????刪除數(shù)據(jù)
? ? ? ? ? ? ? DELETE FROM?table WHERE?條件吐绵;
? ? ? ? ? ? ? 如果不加條件刪除表中所有數(shù)據(jù)。要刪除所有數(shù)據(jù)使用 TRUNCATE TABLE?表名己单;
? ? ? ? ? ? ? 不推薦使用 delete?刪除表纹笼,因為一條一條刪除影響效率。
? ? ? ? ? 刪除字段名??:
????????????????alter table 表名 drop 列類型廷痘;
? ?
改
? ? 修改表信息
? ? UPDATE?table SET colums1=?value1笋额,colums2=?value2.. WHERE?條件;
?????修改字段名??:alter table 表名 modify 字段 列類型;
增
? ? 添加數(shù)據(jù)
? ????????? INSERT INTO?table (columns)VALUSE (, , , , );
? ????????? 列表和值一一對應(yīng)
? ?? ???????如果表明后不寫列名茉盏,默認給所有列添加值?????INSERT INTO?table VALUSE (, , , , )厦滤;
? ??? ??????除了數(shù)字列其他都要帶上引號