MySQL 数据库和 SQL 的学习笔记
本文最后更新于:July 27, 2024 8:58 PM
SQL 的四种分类
- DDL (Data Definition Language): 操作数据库
- DML (Data Manipulation Language): 操作数据库中表的数据
- DQL (Data Query Language): 查询数据库中表的数据
- DCL (Data Control Language): 数据库的权限控制
DDL
操作数据库
创建
创建数据库:
CREATE DATEBASE;
创建数据库(判断,如果不存在则创建):
CREATE DATABASE IF NOT EXISTS 数据库名称;
查询:
SHOW DATABASES;
使用数据库
查看当前使用的数据库:
SELECT DATABASE();
使用数据库:
USE 数据库名称;
删除
- 删除数据库:
DROP DATABASE 数据库名称;
- 删除数据库:
DROP DATABASE IF EXISTS 数据库名称;
- 删除数据库:
操作表 (CRUD)
创建(Create)
1 |
|
Example:
1 |
|
查询(Retrieve)
查询当前数据库下所有表名称:
SHOW TABLES;
查询表结构:
DESC 表名称;
Example Output:
1
2
3
4
5
6
7
8
9mysql> desc tb_user;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| username | varchar(20) | YES | | NULL | |
| password | varchar(32) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
修改(Update)
- 修改表名:
ALTER TABLE 表名 RENAME TO 新的表名;
- 添加一行:
ALTER TABLE 表名 ADD 列名 数据类型;
- 修改数据类型:
ALTER TABLE 表名 MODIFY 列名 新数据格式;
- 修改列名和数据类型:
ALTER TABLE 表名 CHANGE 列名 新列名 新数据格式;
- 删除列:
ALTER TABLE 表名 DROP 列名;
删除(Delete)
- 删除表:
DROP TABLE 表名;
- 删除表时判断表是否存在:
DROP TABLE IF EXISTS 表名;
DML
添加(Insert)
- 给指定列添加数据:
INSERT INTO 表名(列名1,列名,...) VALUES(制1,值2,...);
- 给全部列添加数据:
INSERT INTO表名 VALUES(值1,值2,...);
- 批量添加数据:
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
INSERT INTO 表名(值1,值2,...),(值1,值2,...),(值1,值2,...),...;
修改(Update)
- 修改列表数据:
UPDATE 表名 SET 列名1=值1,列名2=制2,...[WHERE 条件];
删除(Delete)
- 删除数据:
DELETE FROM 表名 [WHERE 条件]
DQL
查询语法
1 |
|
基础查询
查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; -- 查询所有数据
去除重复记录
关键词:
DISTINCT
例:
select DISTINCT address from stu;
别名
关键词:
AS (也可以省略)
例:
select name AS 姓名 from stu;
select name 姓名 from stu;
条件查询(WHERE)
The following operators can be used in the WHERE
clause:
Operator | Description |
---|---|
= | Equal |
> | Greater than |
< | Less than |
>= | Greater than or equal |
<= | Less than or equal |
<> or != | Not equal |
BETWEEN … AND … | Between a certain range |
LIKE … | Search for a pattern _ represents a single random character % represents multiple random characters |
IN(…) | To specify multiple possible values for a column |
IS NULL | Is null |
AND or && | And |
OR or \ | Or |
NOT or ! | not |
排序查询(ORDER BY)
- 排序查询语法:
SELECT FROM 字段列表 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2]...;
排序方式:
- ASC:升序排列(默认)
- DESC:降序排列
聚合函数
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
语法:SELECT 聚合函数名(列名) FROM 表;
分组查询(GROUP BY)
- 分组查询语法:
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
分页查询(LIMIT)
- 分页查询语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询条目组;
起始索引 = (当前页面 - 1)* 每页条数
约束(Constraints)
NOT NULL
- Ensures that a column cannot have a NULL valueUNIQUE
- Ensures that all values in a column are differentPRIMARY KEY
- A combination of aNOT NULL
andUNIQUE
. Uniquely identifies each row in a tableFOREIGN KEY
- Prevents actions that would destroy links between tablesCHECK
- Ensures that the values in a column satisfies a specific conditionDEFAULT
- Sets a default value for a column if no value is specifiedCREATE INDEX
- Used to create and retrieve data from the database very quickly
外键约束
- 添加外键约束
1 |
|
1 |
|
- 删除外键约束
1 |
|
多表查询
内连接(A ∩ B)
1 |
|
外链接(A ∪ B)
1 |
|
事务(Transaction)
1 |
|
事务的四大特征
- 原子性(Atomicity): 事务是不可分割的最小操作单位,要么同时成功,要么同时失败
- 一致性(Consistency) :事务完成时,必须使所有的数据都保持一致状态
- 隔离性(Isolation) :多个事务之间,操作的可见性
- 持久性(Durability) :事务一旦提交或回滚,它对数据库中的数据的改变就是永久的