Mysql基础语法DDL、DML、DQL
生活随笔
收集整理的這篇文章主要介紹了
Mysql基础语法DDL、DML、DQL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DDL:
- DDL(Data Definition Language)數據定義語言
- 用來定義數據庫對象:數據庫,表,列等。關鍵字:create, drop,alter 等
| 添加 | INSERT INTO 表名 (字段名) VALUES (值); |
| 修改 | UPDATE 表名 SET 字段名=新的值; |
| 刪除 | DELETE FROM 表名; |
| 查詢 | SELECT * FROM 表名; |
| 查詢所有的數據庫 | SHOW DATABASES; |
| 查詢當前正在使用的數據庫 | SELECT DATABASE(); |
| 使用數據庫 | USE 數據庫名; |
| 查詢某個數據庫的定義信息 | SHOW CREATE DATABASE 數據庫名; |
| 創建數據庫 | CREATE DATABASE 數據庫名; |
| 判斷是否存在并創建數據庫 | CREATE DATABASE IF NOT EXISTS 數據庫名; |
| 創建數據庫并指定字符集(編碼表) | CREATE DATABASE 數據庫名 DEFAULT CHARACTER SET 編碼; |
| 判斷數據庫不存在再創建數據庫并指定字符集 | CREATE DATABASE IF NOT EXISTS 數據庫名 CHARACTER SET 編碼; |
| 修改數據庫字符集 | ALTER DATABASE 數據庫名DEFAULT CHARACTER SET 新字符集; |
| 刪除數據庫 | DROP DATABASE 數據庫名; |
| 如果數據庫存在再刪除數據庫 | DROP DATABASE IF EXISTS 數據庫名; |
演示:
-- 查詢所有的數據庫 SHOW DATABASES;-- 查詢當前正在使用的數據庫 SELECT DATABASE();-- 使用數據庫 USE db1;-- 查詢某個數據庫的定義信息 SHOW CREATE DATABASE db1;-- 創建數據庫 CREATE DATABASE db2;-- 判斷是否存在并創建數據庫 CREATE DATABASE IF NOT EXISTS db2;-- -- 創建數據庫并指定字符集(不指定的話默認的是UTF-8) CREATE DATABASE db4 CHARACTER SET utf8;-- 判斷數據庫不存在再創建數據庫并指定字符集 CREATE DATABASE IF NOT EXISTS db3 CHARACTER SET utf8;-- 修改數據庫字符集 ALTER DATABASE db1 CHARACTER SET utf8;-- 刪除數據庫 DROP DATABASE db3;-- 如果數據庫存在再刪除數據庫 DROP DATABASE IF EXISTS db3;| 查看數據庫中的所有的表 | SHOW TABLES; |
| 查看表結構 | DESC 表名; |
| 查看創建表的SQL語句 | SHOW CREATE TABLE 表名; |
| 查看數據表信息 | SHOW TABLE STATUS FROM 數據庫 LIKE 表名; |
| 創建表 | CREATE TABLE 表名(列名 數據類型 約束,列名 數據類型 約束); |
| 快速創建一個表結構相同的表 | CREATE TABLE 表名 LIKE 其他表; |
| 直接刪除表 | DROP TABLE 表名; |
| 判斷表是否存在并刪除表 | DROP TABLE IF EXISTS 表名; |
| 添加表一列 | ALTER TABLE 表名 ADD 字段名 字段類型; |
| 修改列類型 | ALTER TABLE 表名 MODIFY 字段名 新類型; |
| 修改列名 | ALTER TABLE 表名 CHANGE 老字段名 新字段名 類型; |
| 刪除列 | ALTER TABLE 表名 DROP 字段名; |
| 修改表名 | RENAME TABLE 表名 TO 新表名; |
| 修改表名 | ALTER TABLE 表名 RENAME TO 新表名; |
| 修改表的字符集 | ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集; |
演示:
-- 查詢表 SHOW TABLES;-- 查詢表結構 DESC student;-- 查看創建表的SQL語句 SHOW CREATE TABLE student;-- 查看數據表信息 SHOW TABLE STATUS FROM db1 LIKE 'student';-- 創建數據表 CREATE TABLE student2( id INT, name VARCHAR(20), age TINYINT, address VARCHAR(100) );-- 判斷是否存在并創建數據表 CREATE TABLE IF NOT EXISTS student2( id INT, name VARCHAR(20), age TINYINT, address VARCHAR(100) );-- 快速創建一個表結構相同的表 CREATE TABLE student3 LIKE student;-- 顯示表的相關信息 SHOW TABLE STATUS FROM db1 LIKE 'student';-- 刪除數據表 DROP TABLE student2;-- 判斷表是否存在并刪除表 DROP TABLE IF EXISTS student2;-- 添加表中的列 ALTER TABLE student ADD Test VARCHAR(20);-- 修改列的類型 ALTER TABLE student MODIFY Test INT;-- 修改列名 ALTER TABLE student CHANGE Test Test2 VARCHAR(20);-- 刪除列 ALTER TABLE student DROP Test2;-- 修改表名 RENAME TABLE student TO student2;-- 修改表的字符集 ALTER TABLE student2 DEFAULT CHARACTER SET utf8;DML:
- DML(Data Manipulation Language)數據操作語言
- 用來對數據庫中表的數據進行增刪改。關鍵字:insert, delete, update 等
| 給全部列添加數據 | INSERT INTO表名 VALUES (值1, 值2, 值3,…); |
| 給指定列添加數據 | INSERT INTO 表名 (字段名1, 字段名2, 字段名3, …) VALUES (值1, 值2, 值3, …); |
| 不帶條件修改數據 | UPDATE 表名 SET 字段名=值; |
| 帶條件修改數據 | UPDATE 表名 SET 字段名=值 WHERE 字段名=值; |
| 不帶條件刪除數據 | DELETE FROM 表名; |
| 帶條件刪除數據 | DELETE FROM 表名 WHERE 字段名=值; |
| truncate刪除表記錄 | TRUNCATE TABLE 表名; |
演示:
- 列名和值的數量以及數據類型要對應,除了數字類其他數據類型的數據都需要加單引號
- 修改語句中必須加條件,如果不加條件會把所有的數據都修改/刪除
DQL:
- (Data Query Language)數據查詢語言
- 用來查詢數據庫中表的記錄(數據)。關鍵字:select, where 等
單表數據查詢語法:
- SELECT 字段列表
- FROM 表名列表
- WHERE 條件列表
- GROUP BY 分組字段
- HAVING 分組后的過濾條件
- ORDER BY 排序
- LIMIT 分頁
查詢全部:
| 查詢全部表數據 | SELECT * FROM 表名; |
| 查詢指定字段的表數據 | SELECT 列名1,列名2,…FROM 表名; |
| 去除重復查詢 | SELECT DISTINCT 列名1,列名2,…FROM 表名; |
| 計算列的值(四則運算) | SELECT 列名1 運算符(+ — * /) 列名2 FROM 表名; |
| 查詢時進行null的判斷 | SELECT IFNULL 列名(要替換的列,要替換的值)FROM 表名; |
| 起別名查詢 | SELECT 列名 AS 別名 FROM 表名; |
演示:
-- 查詢全部表數據 SELECT * FROM 表名; SELECT * FROM student;-- 查詢指定字段的表數據 SELECT 列名1,列名2,...FROM 表名; SELECT id, name, age FROM student;-- 去除重復查詢 SELECT DISTINCT 列名1,列名2,...FROM 表名; SELECT DISTINCT address FROM student;-- 計算列的值(四則運算) SELECT 列名1 運算符(+ — * /)列名2 FROM 表名; SELECT age + 100 FROM student; SELECT age + 100 FROM student WHERE id = 5;-- 查詢時候進行null的判斷,用SELECT ifnull 列名(要替換的列,要替換的值)FROM 表名; SELECT name, IFNULL(age, 0) + 10 FROM student;-- 起別名查詢 as可寫可不寫,不寫要空格 SELECT 列名 AS 別名 FROM 表名; SELECT age AS "年齡" FROM student;條件查詢:
查詢語法:
SELECT 列名列表 FROM 表名 WHERE 條件;| > | 大于 |
| < | 小于 |
| >= | 大于等于 |
| <= | 小于等于 |
| = | 等于 |
| <> 或 != | 不等于 |
| BETWEEN … AND … | 在某個范圍之內(都包含) |
| IN(…) | 多選一 |
| LIKE 占位符 | 模糊查詢 _單個任意字符 %多個任意字符 |
| IS NULL | 是NULL |
| IS NOT NULL | 不是NULL |
| AND 或 && | 并且 |
| OR 或 || | 或者 |
| NOT 或 ! 非 | 不是 |
演示:
-- 查詢語法 SELECT 列名列表 FROM 表名 WHERE 條件; -- 查詢年齡大于80的用戶信息 SELECT * FROM student WHERE age > 80;-- 查詢姓名是韓信的用戶信息 SELECT * FROM student WHERE age > 80 AND name = '韓信';-- 查詢年齡在60和80之間的用戶信息 SELECT * FROM student WHERE age >= 80 AND age <= 100; SELECT * FROM student WHERE age BETWEEN 80 AND 100;-- 查詢id是1,2,3的用戶 SELECT * FROM student WHERE id = 1 OR id = 2 OR id = 3; SELECT * FROM student WHERE id IN (1, 2, 3);-- 查詢姓名是null的用戶 SELECT * FROM student WHERE name IS NULL;-- 查詢姓名不是null的用戶 SELECT * FROM student WHERE name IS NOT NULL;-- 模糊查詢 -- 查詢姓韓的用戶 %:多個任意字符 SELECT * FROM student WHERE name LIKE '韓%';-- 查詢姓名帶虎的用戶 _:一個任意字符 SELECT * FROM student WHERE name LIKE '_虎%';-- 查詢名字是兩個的用戶 SELECT * FROM student WHERE name LIKE '__';-- 查詢名字帶猴的 SELECT * FROM student WHERE name LIKE '%猴%';聚合函數查詢:
聚合函數:將一列數據作為一個整體,進行縱向的計算
| count(列名) | 統計數量(一般選用不為null的列) |
| max(列名) | 最大值 |
| min(列名) | 最小值 |
| sum(列名) | 求和 |
| avg(列名) | 平均值 |
排序查詢:
- 排序查詢:多個排序條件,當前邊的條件值一樣時,才會判斷第二條件
排序方式:
- ASC:升序
- DESC:降序
| 排序查詢 | SELECT 列名 FROM 表名 WHERE 條件 ORDER BY 列名1 排序方式1,列名2 排序方式2; |
排序查詢:
| 排序 | SELECT 列名 FROM 表名 WHERE 條件 GROUP BY 分組列名 HAVING 分組后條件過濾 ORDER BY 排序列名 排序方式 |
演示:
-- 按照地址分組,獲取每組的年齡和 SELECT address ,SUM(age) FROM student GROUP BY address;-- 年齡大于60的進行分組,按照地區分組,獲取每組的年齡和 SELECT address, SUM(age) FROM student WHERE age > 60 GROUP BY address;-- 年齡大于60的進行分組,按照地區分組,獲取每組的總年齡,只顯示總年齡大于200的 SELECT address, SUM(age) AS getSum FROM student WHERE age > 60 GROUP BY address HAVING getSum > 200;-- 年齡大于60的進行分組,按照地區分組,獲取每組的總年齡,只顯示總年齡大于200的,并按照總年齡降序排序 SELECT address, SUM(age) AS getSum FROM student WHERE age > 60 GROUP BY address HAVING getSum > 200 ORDER BY getSum DESC;分頁查詢:
數據多的時候使用,就像百度去搜東西一樣分頁顯示
LIMIT 當前頁數,每頁顯示的條數
| 分頁查詢 | SELECT 列名 FROM 表名 WHERE 條件 GROUP BY 分組列名 HAVING 分組后條件過濾 ORDER BY 排序列名 排序方式 LIMIT 開始索引,查詢條數; |
| 語法 | LIMIT 當前頁數,每頁顯示的條數 |
總結
以上是生活随笔為你收集整理的Mysql基础语法DDL、DML、DQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle查询并列,【问】oracle
- 下一篇: orm和mysql_orm与mysql