深入淺出MySQL 第二章 SQL基礎 筆記

第二章 SQL基礎

SQL分類

  • DDL:數據定義語言。定義不同的數據段、數據庫、表、列、索引等數據庫對象的定義。常用的create、drop、alter等
  • DML:數據操縱語句。用於添加、刪除、更新和查詢數據庫記錄,並檢查數據的完整性。常用的insert、delete、update和select等
  • DCL:數據控制語句。用於控制不同數據段直接的許可和訪問級別的語句。這些語句定義了數據庫、表、字段、用戶的訪問權限和安全級別。主要的語句關鍵字包括 grant、revoke 等

SQL語句

show :查看數據庫創建的所有的數據表

show create table

:查看全面的表定義

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]:修改表類型

[FIRST | AFTER col_name]爲MySQL的擴展可選項,作用爲修改字段在表中的位置

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name]:增加表字段

ALTER TABLE tablename DROP [COLUMN] col_name:刪除表字段

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]:字段改名

ALTER TABLE tablename RENAME [TO] new_tablename:表改名

distinct 關鍵字:查詢不重複的記錄,如select distinct deptno from emp;

DESC 和 ASC 是排序順序關鍵字,DESC 表示按照字段進行降序排列,ASC 則表示升序
排列,如select * from emp order by deptno,sal desc;

SELECT ……[LIMIT offset_start,row_count]:LIMIT關鍵字,讓只顯示一部分,offset_start 表示記錄的起始偏移量,row_count 表示顯示的行數,如select * from emp order by sal limit 1,3(從第二條開始顯示三條)

MySQL修改表結構操作命令總結 - 傻瓜樂園 - 博客園

聚合操作:

SELECT [field1,field2,……fieldn] fun_name
FROM tablename
[WHERE where_contition]
[GROUP BY field1,field2,……fieldn
[WITH ROLLUP]]
[HAVING where_contition]

  • fun_name 表示要做的聚合操作,也就是聚合函數,常用的有 sum(求和)、count(*)(記錄數)、max(最大值)、min(最小值)
  • GROUP BY 關鍵字表示要進行分類聚合的字段,比如要按照部門分類統計員工數量,部門就應該寫在 group by 後面。
  • WITH ROLLUP 是可選語法,表明是否對分類聚合後的結果進行再彙總。
  • HAVING 關鍵字表示對分類後的結果再進行條件的過濾。

having和where的區別

區別在於 having 是對聚合後的結果進行條件的過濾,而 where 是在聚合前就對記錄進行過濾,如果邏輯允許,我們儘可能用 where 先過濾記錄,這樣因爲結果集減小,將對聚合的效率大大提高,最後再根據邏輯看是否用 having 進行再過濾。

例子:

select deptno,count(1) from emp group by deptno with rollup:既要統計各部門人數,又要統計總人數

select deptno,count(1) from emp group by deptno having count(1)>1:統計人數大於 1 人的部門

count()函數:

關於mysql中的count()函數_數據庫_wendychiang1991的博客-CSDN博客

表連接:

作用:當需要同時顯示多個表中的字段

分類:內連接和外連接,它們之間的最主要區別是內連接僅選出兩張表中
互相匹配的記錄,而外連接會選出其他不匹配的記錄。

外連接分類:

  • 左連接:包含所有的左邊表中的記錄和右表符合條件的記錄
  • 右連接:包含所有的右邊表中的記錄和左表符合條件的記錄

圖解各種連接:

圖解MySQL 內連接、外連接、左連接、右連接、全連接…太多了_數據庫_plg17的專欄-CSDN博客

Mysql-- 內連接、左連接、右連接以及全連接查詢_數據庫_zjt980452483的博客-CSDN博客

子查詢:

作用:當我們查詢的時候,需要的條件是另外一個 select 語句的結果

關鍵字:in、not in、=、!=、exists、not exists 等

如:select * from emp where deptno in(select deptno from dept)

從 emp 表中查詢出所有部門在 dept 表中的所有記錄

注意:子查詢和表連接之間的轉換主要應用在兩個方面:

  • MySQL 4.1 以前的版本不支持子查詢,需要用表連接來實現子查詢的功能
  • 表連接在很多情況下用於優化子查詢

記錄聯合:

作用:將兩個表的數據按照一定的查詢條件查詢出來後,將結果合併
到一起顯示出來

關鍵字:union 和 union all

區別:UNION ALL 是把結果集直接合並在一起,而 UNION 是將
UNION ALL 後的結果進行一次 DISTINCT,去除重複記錄後的結果

例子:

不去重: select deptno from emp union all select deptno from dept;

去重:select deptno from emp union select deptno from dept;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章