数据库语言分类及简单介绍

SQL语言分类及简单介绍

SQL语言是数据库操作语言,用于操作数据库。

  • 大小写不敏感
  • 需要以;号结尾

数据定义 DDL

数据库的创建,删除。数据表的创建删除。

1. 数据库管理语法

  • SHOW DATABASES; – 查看数据库
  • USE 数据库名; – 使用打开数据库
  • CREATE DATABASE if not exists 数据库名 charset=utf8mb4; – 创建数据库
  • DROP DATABASE 数据库名; – 删除数据库
  • select database(); – 查看当前打开的数据库

创建数据库(IF NOT EXISTS意思是如果不存在的话就创建,存在的话就忽略此句,不创建):

1
CREATE DATABASE IF NOT EXISTS student_management CHARSET = utf8mb4;

删除数据库(IF EXISTS意思是如果存在的话就删除,不存在的话就忽略此句,不执行删除):

1
DROP DATABASE IF EXISTS student_management;

2. 数据表管理语法

  • CREATE TABLE 表名(字段名 字段类型,字段名 字段类型,...); – 创建数据表

创建数据表:

1
2
3
4
5
6
CREATE TABLE IF NOT EXISTS 表名 (
列名1 数据类型 [约束], --中括号表示可选填
列名2 数据类型 [约束],
...
[约束]
);

举例:

1
2
3
4
5
6
create table tea_info(
id int PRIMARY KEY AUTO_INCREMENT, -- id是主键,自增
name VARCHAR(20) NOT NULL, -- name是字段名,varchar(20)是字段类型,20是字段长度,not null表示不能为空
gender VARCHAR(2)
shenfenzhenghao VARCHAR(18) UNIQUE NOT NULL, --UNIQUE表示唯一,not null表示不能为空
);
  • 重要的 SQL 约束:
    • PRIMARY KEY: 唯一标识表中的每一行。
    • NOT NULL: 确保列不能包含 NULL 值。
    • UNIQUE: 确保列中的所有值都不同。
    • AUTO_INCREMENT: 自动为新行生成唯一的数字。
  • DROP TABLE IF EXISTS 表名; – 删除数据表

删除数据表:

1
DROP TABLE IF EXISTS students;
  • ALTER TABLE 表名 ADD 字段名 字段类型; – 添加字段
  • ALTER TABLE 表名 DROP COLUMN 字段名; – 删除字段
  • ALTER TABLE 表名 MODIFY 字段名 字段类型; – 修改字段
  • ALTER TABLE 表名 CHANGE 字段名 新字段名 字段类型; – 修改字段名
  • ALTER TABLE 表名 RENAME TO 新表名; – 修改表名

举例:

1
2
3
4
5
6
ALTER TABLE 表名
[ADD 列名 数据类型 [约束]]
[DROP COLUMN 列名]
[MODIFY COLUMN 列名 数据类型 [约束]]
[RENAME COLUMN 旧列名 TO 新列名]
[ADD CONSTRAINT 约束名 约束];

3. 字段类型

1. 数值类型

整数类型:用于存储整数值。
  • TINYINT:非常小的整数,有符号范围是 -128 到 127,无符号范围是 0 到 255。
  • SMALLINT:小整数,有符号范围是 -32,768 到 32,767,无符号范围是 0 到 65,535。
  • MEDIUMINT:中等大小的整数,有符号范围是 -8,388,608 到 8,388,607,无符号范围是 0 到 16,777,215。
  • INTINTEGER:标准整数,有符号范围是 -2,147,483,648 到 2,147,483,647,无符号范围是 0 到 4,294,967,295。
  • BIGINT:大整数,有符号范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,无符号范围是 0 到 18,446,744,073,709,551,615。
浮点数类型:用于存储小数值。
  • FLOAT(M,D):单精度浮点数,其中 M 是总位数,D 是小数点后的位数。
  • DOUBLE(M,D):双精度浮点数,M 和 D 的含义同上。
  • DECIMAL(M,D)NUMERIC(M,D):定点数,适合存储需要精确的小数,如货币金额。

2. 字符串类型

定长字符串:
  • CHAR(N):固定长度字符串,最大长度为 255 字节。如果存储的字符串短于定义的长度,则用空格填充到指定长度。
可变长字符串:
  • VARCHAR(N):可变长度字符串,最大长度为 65,535 字节(受行大小限制)。
  • TEXT:用于存储大文本数据,最大长度为 65,535 字节。
  • MEDIUMTEXT:最大长度为 16,777,215 字节。
  • LONGTEXT:最大长度为 4,294,967,295 字节。

3. 日期和时间类型

  • DATE:用于存储日期值,格式为 ‘YYYY-MM-DD’。
  • TIME:用于存储时间值或持续时间,格式为 ‘HH:MM:SS’。
  • DATETIME:用于存储日期和时间值,格式为 ‘YYYY-MM-DD HH:MM:SS’。
  • TIMESTAMP:类似于 DATETIME,但存储的是从 ‘1970-01-01 00:00:01’ UTC 到未来的某个时间的时间戳,支持自动初始化和更新。
  • YEAR:以两位或四位数字的形式存储年份。

数据操作 DML

数据的增删改查。

  • INSERT INTO 表名[(字段名1,字段名2,...)] VALUES (值1,值2,...),[(值1,值2,...)]...; – 插入数据

举例:

对于自增字段,一般不需要手动指定自增字段的值,数据库会自动生成自增的值。

1
2
3
4
5
INSERT INTO users (username, email, registration_date) VALUES 
('JohnDoe', '[email protected]', '2023-10-27'); -- 插入单条数据
INSERT INTO users (username, email, registration_date) VALUES
('JohnDoe', '[email protected]', '2023-10-27'),
('JaneDoe', '[email protected]', '2023-10-28'); -- 插入多条数据
  • DELETE FROM 表名 WHERE 条件; – 删除数据

举例:

1
2
3
4
5
DELETE FROM users WHERE id = 1; -- 删除id为1的数据
DELETE FROM users WHERE id IN (1, 2, 3); -- 删除id为1,2,3的数据
DELETE FROM users WHERE id BETWEEN 1 AND 3; -- 删除id为1到3的数据
DELETE FROM users WHERE id > 3; -- 删除id大于3的数据
DELETE FROM users -- 删除所有数据
  • UPDATE 表名 SET 字段名 = 值 WHERE 条件; – 修改数据

举例:

1
2
UPDATE users SET username = 'John Doe' WHERE id = 1; -- 修改id为1的用户名
UPDATE users SET username = 'John Doe', email = '[email protected]' WHERE id = 1; -- 修改id为1的用户名和邮箱

数据查询 DQL

数据的普通查询。

  • SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件; – 查询数据

举例:

1
2
3
4
SELECT * FROM users; -- 查询所有数据
SELECT * FROM users WHERE id = 1; -- 查询id为1的数据
SELECT * FROM users WHERE id IN (1, 2, 3); -- 查询id为1,2,3的数据
...

数据的排序:

  • SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名1, 列名2, ... [ASC|DESC]; – 排序。
1
2
SELECT * FROM users ORDER BY id ASC; -- 按照id升序排列
SELECT * FROM users ORDER BY id DESC; -- 按照id降序排列

数据的分组:

  • SELECT 列名1, 列名2, ... FROM 表名 GROUP BY 列名1, 列名2, ... ; – 分组。
1
2
SELECT COUNT(*) AS total, gender FROM users GROUP BY gender; -- 按照性别分组,统计每个性别的总人数
SELECT grade,avg(score) FROM users GROUP BY grade; -- 按照年级分组,统计每个年级的平均分数

数据控制 DCL

新增用户,删除用户,修改密码,修改用户权限。数据库的权限控制。

[up主专用,视频内嵌代码贴在这]