MySQL_SQL

Jinshuo Jiang Lv3

MySQL数据库基础-SQL

一、SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。

  2. SQL语句可以使用空格/缩进来增强语句的可读性。

  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

  4. 注释:

    • 单行注释 : -- 注释内容或 # 注释内容(MySQL特有)
    • 多行注释:/* 注释内容 */

二、SQL语句分类

分类 全称 说明
DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

三、MySQL数据类型

1. 数值类型

类型 大小 有符号(SIGNED)范围 无符号(UNSIGNED)范围 描述
TINYINT 1 byte (-128, 127) (0, 255) 小整数值
SMALLINT 2 bytes (-32768, 32767) (0, 65535) 大整数值
MEDIUMINT 3 bytes (-8388608, 8388607) (0, 16777215) 大整数值
INT或INTEGER 4 bytes (-2147483648, 2147483647) (0, 4294967295) 大整数值
BIGINT 8 bytes (-2^63, 2^63-1) (0, 2^64-1) 极大整数值
FLOAT 4 bytes (-3.402823466 E+38, 3.402823466351 E+38) 0 和 (1.175494351 E-38, 3.402823466 E+38) 单精度浮点数值
DOUBLE 8 bytes (-1.7976931348623157 E+308, 1.7976931348623157 E+308) 0 和(2.2250738585072014 E-308, 1.7976931348623157 E+308) 双精度浮点数值
DECIMAL 依赖于M(精度)和D(标度)的值 依赖于M(精度)和D(标度)的值 小数值(精确定点数)
  • 创建一个字段age表示年龄,年龄无负数,所以可以用UNSIGNED

    1
    age TINYINT UNSIGNED COMMENT '年龄'

2. 字符串类型

类型 大小 描述
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 可变长字符串
TINYBLOB 0-255 bytes 不超过255个字符的二进制数据
TONYTEXT 0-255 bytes 短文本字符串
BLOB 0-65535 bytes 二进制形式的长文本数据
TEXT 0-65535 bytes 长文本数据
MEDIUMBLOB 0-16777215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16777215 bytes 中等长度文本数据
LONGBLOB 0-4294967295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4294967295 bytes 极大文本数据
  • 创建一个字段gender表示性别,性别只有一个字符/且为定长,所以可以用CHAR(1)

    1
    gender CHAR(1) COMMENT '性别'

3. 日期类型

类型 大小 范围 格式 描述
DATE 3 1000-01-01 至 9999-12-31 YYYY-MM-DD 日期道
TIME 3 -838:59:59 至 838:59:59 HH: MM : SS 时间值或持续时间
YEAR 1 1901 至 2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00 至 9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:01 至 2038-01-19 03:14:07 YYYY-MM-DD HH :MM: SS 混合日期和时间值,时间戳
  • 创建一个字段birthday表示生日,生日只需要年月日,所以可以用DATE

    1
    birthday DATE COMMENT '生日'4

四、DDL语句

数据定义语言,用来定义数据库对象(数据库,表,字段)

1. 数据库操作

a. 查询SHOW/SELECT

1
2
3
4
--查询所有数据库
SHOW DATABASES;
--查询当前数据库
SELECT DATABASE();

b. 创建CREATE

1
2
3
4
5
6
--创建名为itcast的数据库
CREATE DATABASE itcast;
--如果itcast数据库不存在则创建数据库,存在则跳过
CREATE DATABASE IF NOT EXISTS itcast;
--创建一个名为test2的数据库,并设置字符集为utf8mb4
CREATE DATABASE test2 DEFAULT CHARSET utf8mb4;

c. 删除DROP

1
2
3
4
--删除test2数据库
DROP DATABASE test2;
--删除test2数据库,如果不存在则跳过
DROP DATABASE IF EXISTS test2;

d. 使用USE

1
2
--使用test数据库
USE test;

2. 数据表操作

a. 查询数据表SHOW

1
2
3
4
5
6
--查询当前数据库所有表
SHOW TABLES;
--查询表结构
DESC test;
--查询表的创建语句
SHOW CREATE TABLE test;

b.创建CREATE

1
2
3
4
5
6
--模板
CREATE TABLE IF NOT EXISTS 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释]
)[COMMENT 表注释];
1
2
3
4
5
6
CREATE TABLE stu(
id INT COMMENT '学号',
name VARCHAR(50) COMMENT '姓名'
age INT COMMENT '年龄',
gender VARCHAR(1) COMMENT '性别'
)COMMENT '学生表';

c.修改ALTER

(1)添加字段ADD
1
2
--为emp表增加一个新的字段“昵称”为nickname,类型为VARCHAR(20)
ALTER TABLE emp ADD nickname VARCHAR(20) COMMENT '昵称';
(2)修改MODIFY/CHANGE
  • 修改数据类型MODIFY

    1
    2
    --将emp表的nickname字段类型修改为varchar(40)
    ALTER TABLE emp MODIFY nickname VARCHAR(40);
  • 修改字段名和字段类型CHANGE

    1
    2
    --将emp表的nickname字段修改为username,类型为varchar(30)
    ALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT '用户名';
(3)删除DROP
1
2
--将emp表的字段username删除
ALTER TABLE emp DROP username;
(4)修改表名RENAME TO
1
2
--将emp表的表名修改为employee
ALTER TABLE emp RENAME TO employee;

d.删除表DROP/TRUNCATE

  • 删除表DROP

    1
    2
    --删除emp这张表
    DROP TABLE IF EXISTS emp;
  • 删除指定表,并重新创建该表

    1
    2
    --删除emp这张表,并创建一个名为emp的空表
    TRUNCATE TABLE emp;

五、DML语句

数据操作语言,用来对数据库表中的数据进行增删改

1.添加数据INSERT INTO

a.给指定字段添加数据
1
INSERT INTO 表名(字段名1,字段名2, ... )VALUES(值1,值2, ... );
b.给全部字段添加数据
1
INSERT INTO 表名 VALUES(值1,值2, ….. );
c.批量添加数据
1
2
INSERT INTO 表名(字段名1,字段名2, .. )VALUES(值1,值2,.),(值1,值2, ... ),(值1,值2, ….. );
INSERT INTO 表名 VALUES(值1,值2, …. ),(值1,值2, ….. ),(值1,值2, ... );

注意

  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
  • 字符串和日期型数据应该包含在引号中。
  • 插入的数据大小,应该在字段的规定范围内。

2.修改数据UPDATE

1
2
3
4
--修改emp表中id为1的数据,将name改为xiaoming,gander修改为女
UPDATE emp SET name = 'xiaoming', gender = '女' WHERE id = 1;
--将所有员工的入职日期修改为 2008-01-01
UPDATE emp SET entrydate = '2008-01-01';

3.删除数据DELETE

1
2
3
4
--删除gender为女的员工
DELETE FROM emp WHERE gender = '女';
--删除所有员工
DELETE FROM emp;

注意

  • DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

  • DELETE语句不能删除某一个字段的值(可以使用UPDATE)。

    1
    2
    --修改emp表中id为1的数据,gander中的值删除
    UPDATE emp SET gender = null WHERE id = 1;
  • 标题: MySQL_SQL
  • 作者: Jinshuo Jiang
  • 创建于 : 2026-05-10 16:25:11
  • 更新于 : 2026-05-13 17:46:21
  • 链接: https://redefine.ohevan.com/2026/05/10/MySQL-SQL/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论