最近學習MySQL的一些筆記
SQL 語句分類
- Data Definition Language (DDL 資料定義語言) 如:建庫,建表
- Data Manipulation Language(DML 資料操縱語言),如:對錶中的記錄操作增刪改
- Data Query Language(DQL 資料查詢語言),如:對錶中的查詢操作
- Data Control Language(DCL 資料控制語言),如:對使用者許可權的設定
MySQL 的語法
- 每條語句以分號結尾,如果在 SQLyog 中不是必須加的。
- SQL 中不區分大小寫,關鍵字中認為大寫和小寫是一樣的
- 3 種註釋:
註釋的語法 |
說明 |
--空格 |
單行註釋 |
/* */ |
多行註釋 |
# |
這是 mysql 特有的註釋方式 |
建立資料庫的幾種方式
建立資料庫
CREATE DATABASE 資料庫名;
判斷資料庫是否已經存在,不存在則建立資料庫
CREATE DATABASE IF NOT EXISTS 資料庫名;
建立資料庫並指定字符集
CREATE DATABASE 資料庫名 CHARACTER SET 字符集;
檢視所有的資料庫
show databases;
修改資料庫預設的字符集
ALTER DATABASE 資料庫名 DEFAULT CHARACTER SET 字符集;
刪除資料庫的語法
DROP DATABASE 資料庫名;
檢視正在使用的資料庫
SELECT DATABASE(); 使用的一個 mysql 中的全域性函式
6.5.2 使用/切換資料庫
USE 資料庫名;
建立表的格式
CREATE TABLE 表名 ( 欄位名 1 欄位型別 1, 欄位名 2 欄位型別 2 );
7.1.2 關鍵字說明:
建立表的關鍵字 |
說明 |
CREATE |
建立 |
TABLE |
表 |
常使用的資料型別如下:
檢視某個資料庫中的所有表
SHOW TABLES;
查看錶結構
DESC 表名;
檢視建立表的 SQL 語句
SHOW CREATE TABLE 表名;
快速建立一個表結構相同的表語法
CREATE TABLE 新表名 LIKE 舊錶名;
直接刪除表
DROP TABLE 表名;
判斷表是否存在,如果存在則刪除表
DROP TABLE IF EXISTS 表名;
新增表列 ADD
ALTER TABLE 表名 ADD 列名 型別;
修改列型別 MODIFY
ALTER TABLE 表名 MODIFY列名 新的型別;
修改表名
RENAME TABLE 表名 TO 新表名;
修改字符集 character set
ALTER TABLE 表名 character set 字符集;
插入記錄
INSERT [INTO] 表名 [欄位名] VALUES (欄位值) |
INSERT INTO 表名:表示往哪張表中新增資料 (欄位名 1, 欄位名 2, …):要給哪些欄位設定值 VALUES (值 1, 值 2, …):設定具體的值 |
- 所有的欄位名都寫出來
INSERT INTO 表名 (欄位名1, 欄位名2, 欄位名3…) VALUES (值1, 值2, 值3);
不寫欄位名
INSERT INTO 表名 VALUES (值1, 值2, |
值3…); |
插入部分資料 |
|
INSERT INTO 表名 (欄位名1, 欄位名2, |
...) VALUES (值1, 值2, ...); |
檢視包含 character 開頭的全域性變數
show variables like 'character%';
- 將表名2中的所有的列複製到表名1中
INSERT INTO 表名 1 SELECT * FROM 表名 2;
- 將表名2中的所有的列複製到表名1中
INSERT INTO 表名 1 SELECT * FROM 表名 2;
更新表記錄
UPDATE 表名 SET 列名=值 [WHERE 條件表示式] |
UPDATE: 需要更新的表名 SET: 修改的列值 WHERE: 符合條件的記錄才更新 |
不帶條件修改資料
UPDATE 表名 SET 欄位名=值; -- 修改所有的行
帶條件修改資料
UPDATE 表名 SET 欄位名=值 WHERE 欄位名=值;
DELETE FROM 表名 [WHERE 條件表示式] |
如果沒有指定 WHERE 子句,MySQL 表中的所有記錄將被刪除。 你可以在 WHERE 子句中指定任何條件 |
不帶條件刪除資料
DELETE FROM 表名;
帶條件刪除資料
DELETE FROM 表名 WHERE 欄位名=值;
使用 truncate 刪除表中所有記錄
TRUNCATE TABLE 表名;
truncate 和 delete 的區別: truncate 相當於刪除表的結構,再建立一張表。
-- 帶條件刪除資料,刪除id為1的記錄 delete from student where id=1;
-- 不帶條件刪除資料,刪除表中的所有資料 delete from student;
DQL 查詢表中的資料查詢不會對資料庫中的資料進行修改.只是一種顯示資料的方式
SELECT 列名 FROM 表名 [WHERE 條件表示式] |
|
查詢表所有行和列的資料
l 使用*表示所有列
SELECT * FROM 表名;
查詢指定列
- 查詢指定列的資料,多個列之間以逗號分隔
SELECT 欄位名1, 欄位名2, 欄位名3, ... FROM 表名;
- 對列指定別名
SELECT 欄位名1 AS 別名, 欄位名2 AS 別名... FROM 表名;
- 對列和表同時指定別名
SELECT 欄位名1 AS 別名, 欄位名2 AS 別名... FROM 表名 AS 表別名;
查詢指定列並且結果不出現重複資料
SELECT DISTINCT 欄位名 FROM 表名;
某列資料和固定值運算
SELECT 列名 1 + 固定值 FROM 表名;
某列資料和其他列資料參與運算
SELECT 列名 1 + 列名 2 FROM 表名;
條件查詢的語法
SELECT 欄位名 FROM 表名 WHERE 條件; |
流程:取出表中的每條資料,滿足條件的記錄就返回,不滿足條件的記錄不返回 |
- 運算子
比較運算子 |
說明 |
>、<、<=、>=、=、<> |
<>在 SQL 中表示不等於,在 mysql 中也可以使用!= 沒有== |
BETWEEN...AND |
在一個範圍之內,如:between 100 and 200 相當於條件在 100 到 200 之間,包頭又包尾 |
IN(集合) |
集合表示多個值,使用逗號分隔 |
LIKE '張%' |
模糊查詢 |
IS NULL |
查詢某一列為 NULL 的值,注:不能寫=NULL |
- 邏輯運算子
邏輯運算子 |
說明 |
and 或 && |
與,SQL 中建議使用前者,後者並不通用。 |
or 或 || |
或 |
not 或 ! |
非 |
- in 關鍵字
SELECT 欄位名 FROM 表名 WHERE 欄位 in (資料 1, 資料 2...); |
in 裡面的每個資料都會作為一次條件,只要滿足條件的就會顯示 |
- 範圍查詢
BETWEEN 值 1 AND 值 2 |
表示從值 1 到值 2 範圍,包頭又包尾 |
比如:age BETWEEN 80 AND 100 相當於: age>=80 && age<=100 |
- like 關鍵字
LIKE 表示模糊查詢 |
SELECT * FROM 表名 WHERE 欄位名 LIKE '萬用字元字串'; |
<