目錄
- 資料庫定義語言(DDL)
- 資料庫
- 表
- 資料庫操縱語言(DML)
- 資料庫查詢語言(DQL)
資料庫定義語言(DDL)
資料庫
-
創建資料庫
CREATE DATABASE IF NOT EXISTS 資料庫名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; -
洗掉資料庫
drop database 資料庫名; -
切換資料庫
use 資料庫名; -
查看所有資料庫
show databases; -
修改資料庫編碼
alter database 資料庫名 character set utf8
表
-
創建表
create table if not exists 表名( 列名 資料型別[列級約束條件], 列名 資料型別[列級約束條件], ... [,表級約束條件])-
SQL資料型別
- char(n)可以存盤任意字串,但是是固定長度為n,如果插入的長度小于定義長度時,則用空格填充,
- varchar(n)可以存盤任意數量字串,長度不固定,但不能超過n,不會用空格填充,
- smallint用于存盤小的整數,范圍在 (-32768,32767)
- int用于存盤一般的整數,范圍在 (-2147483648,2147483647)
- bigint用于存盤大型整數,范圍在 (-9,223,372,036,854,775,808,9,223,372,036,854,775,807)
- float用于存盤單精度小數
- double用于存盤雙精度的小數
- date存盤日期
- time存盤時間
- year存盤年份
- datetime用于混合存盤日期+時間
-
列級約束條件
就是可以在列名后面寫的
主鍵Primary key、外鍵foreign key 、唯一 unique、檢查 check 、默認default 、非空/空值 not null/ null
-
表級約束條件
就是列都寫完了,你可以單獨拿出來在最下面寫的,和列級約束條件是兩種不同的書寫模式,但是作用都是一樣的
主鍵、外鍵、唯一、檢查
-
-
洗掉表
drop table 表名 -
查看表
# 查看所有表 show tables; # 查看表的創建陳述句 show create table 表名; # 查看表結構 desc 表名 -
修改表
# 添加列 alter table 表名 add 列名 列型別 [列級約束條件], ... # 修改列 alter table 表名 modify 列名 列型別; # 修改列名 alter table 表名 change 原列名 新列名 列型別 # 洗掉列 alter table 表名 drop 列名 # 修改表名 alter table 表名 rename to 表名
資料庫操縱語言(DML)
-
插入
INSERT INTO 表名 VALUES(值1, 值2, 值3); INSERT INTO 表名(列名1, 列名2) VALUES(值1, 值2), (值1, 值2), (值1, 值2); -
修改
UPDATE 表名 SET 列名=值,... WHERE 條件警告:如果忘記添加
WHERE字句來限定條件,將使得整個表中此列的所有資料都被修改! -
洗掉
DELETE FROM 表名 WHERE 條件
? 警告:如果忘記添加WHERE字句來限定條件,將使得整個表中此列的所有資料都被洗掉!
資料庫查詢語言(DQL)
-
單表查詢
SELECT 列名1 as 列1, 列名2 as 列2 FROM 表名 -- 查詢不重復值 SELECT DISTINCT * FROM 表名 WHERE 約束條件- where后的約束條件
>, <, <=, >=, =, <>between n1 and n2in (n1, n2, ...)列名 like %xxx%isnulland,or,not
- where后的約束條件
-
多表查詢
-- 基礎多表查詢 SELECT * FROM 表1, 表2 WHERE 條件 -- 行內 -- 左聯 LEFT JOIN 回傳左邊所有的行 -- 右聯 RIGHT JOIN 回傳右邊所有的行 SELECT column_name(s) FROM table_name1 INNER[LEFT, RIGHT] JOIN table_name2 ON table_name1.column_name=table_name2.column_name -
排序查詢
SELECT * FROM 表名 WHERE 條件 ORDER BY 列名1 ASC|DESC, 列名2 ASC|DESC- ASC(升序,即從小到大排序)
- DESC(降序,即從大到小排序)
-
分組查詢
select 列名 from 表名 group by 列名 having 約束條件(可以使用聚集函式)-
where 和 having 的區別?
-
where 在分組之前進行限定,如果不滿足條件,則不參與分組,having在分組之后進行限定,如果不滿足結果,則不會被查詢出來
-
where 后不可以跟聚合函式,having可以進行聚合函式的判斷,
-
-
-
分頁查詢
select * from 表名 limit n1, n2 -
嵌套查詢
SELECT * FROM 表名 WHERE 列名 = (SELECT 列名 FROM 表名 WHERE 條件)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/499394.html
標籤:其他
上一篇:2. 函式
下一篇:4. 事務和鎖
