【MySQL1】| DDL 数据定义语言
一、SQL 通用基础语法规范书写格式SQL 支持单行、多行书写语句必须以英文分号;结尾可使用空格、Tab 缩进提升可读性行业规范关键字CREATE/ALTER/SELECT等建议大写自定义库名 / 表名 / 字段小写区分。注释写法单行注释# 注释内容或-- 注释内容--后必须加空格多行注释/* 多行注释内容 */SQL 四大语句分类表格分类全称作用DDL数据定义语言定义数据库、表结构库 / 表的创建、删除、修改DML数据操作语言操作表内数据新增、删除、修改DQL数据查询语言查询表中数据记录最常用SELECTDCL数据控制语言创建数据库用户、分配访问权限二、DDL 数据库操作操作库1. 查询数据库sql-- 查询当前服务器所有数据库 SHOW DATABASES; -- 查询当前正在使用的数据库 SELECT DATABASE();2. 创建数据库语法sqlCREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集];示例sql-- 创建库不存在才创建指定utf8mb4支持完整中文/表情 CREATE DATABASE IF NOT EXISTS db_demo DEFAULT CHARSET utf8mb4;IF NOT EXISTS避免库已存在时报错生产必加utf8mb4推荐字符集兼容所有中文、emoji替代旧utf8。3. 使用 / 切换数据库sqlUSE 数据库名;执行成功提示Database changed⚠️ 重要所有建表、改表操作前必须先use选中数据库否则报No database selected。4. 删除数据库语法sqlDROP DATABASE [IF EXISTS] 数据库名;示例sqlDROP DATABASE IF EXISTS db_demo;IF EXISTS库不存在也不会报错安全删除。DDL 数据库操作速记sqlSHOW DATABASES; -- 查所有库 CREATE DATABASE 库名; -- 创建库 USE 库名; -- 使用库 SELECT DATABASE(); -- 查看当前库 DROP DATABASE 库名; -- 删除库三、DDL 表操作操作数据表3.1 基础查询表语句sql-- 查询当前库下所有数据表 SHOW TABLES; -- 查看表结构字段、类型、注释、主键等 DESC 表名; -- 查看建表完整SQL包含引擎、字符集、注释 SHOW CREATE TABLE 表名;3.2 MySQL 常用数据类型1数值类型表格类型说明使用场景TINYINT极小整数年龄、状态搭配UNSIGNED无负数SMALLINT小整数少量数字标识INT常规整数主键 ID、编号BIGINT大整数超大 ID、雪花 IDFLOAT/DOUBLE浮点数小数金额推荐用 DECIMAL避免精度丢失示例age TINYINT UNSIGNED COMMENT 年龄无负数年龄2字符串类型表格类型特点使用场景CHAR(长度)定长字符串空间固定、查询性能高固定长度内容性别 (1)、身份证 (18)VARCHAR(长度)变长字符串节省空间、性能略低不固定长度姓名、用户名、工号示例gender CHAR(1) COMMENT 性别username VARCHAR(30) COMMENT 用户名3日期时间类型表格类型作用场景DATE仅日期年月日生日、入职日期TIME仅时间时分秒时长、时间段YEAR仅年份出生年份DATETIME日期 时间完整记录时间TIMESTAMP时间戳自动更新创建 / 修改时间示例entrydate DATE COMMENT 入职时间3.3 创建数据表 CREATE TABLE标准语法sqlCREATE TABLE 表名 ( 字段1 数据类型(长度) [COMMENT 字段注释], 字段2 数据类型(长度) [COMMENT 字段注释], ... ) [ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT 表注释];注意坑字段分隔必须用英文半角逗号,中文逗号直接报语法错误实战示例员工表 empsqlCREATE TABLE emp( id INT COMMENT 编号, workno VARCHAR(10) COMMENT 工号, name VARCHAR(10) COMMENT 姓名, gender CHAR(1) COMMENT 性别, age TINYINT UNSIGNED COMMENT 年龄, idcard CHAR(18) COMMENT 身份证号, entrydate DATE COMMENT 入职时间 ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT 员工表;3.4 修改表结构 ALTER TABLE1新增字段 ADDsqlALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];示例给员工表新增昵称字段sqlALTER TABLE emp ADD nickname VARCHAR(20) COMMENT 昵称;2仅修改字段数据类型 MODIFY只改类型 / 长度不改字段名sqlALTER TABLE 表名 MODIFY 字段名 新类型(长度) [COMMENT 注释];示例将姓名长度改为 20sqlALTER TABLE emp MODIFY name VARCHAR(20) COMMENT 姓名;3修改字段名 字段类型 CHANGE语法CHANGE 旧字段名 新字段名 类型(长度) [注释]sqlALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT 用户名;易错点注释引号必须成对错误写法comment 用户名会报语法异常正确comment 用户名4删除字段 DROPsqlALTER TABLE 表名 DROP 字段名;示例删除用户名字段sqlALTER TABLE emp DROP username;5修改表名 RENAME TOsqlALTER TABLE 旧表名 RENAME TO 新表名;示例ALTER TABLE emp RENAME TO employee;3.5 删除数据表普通删除表表不存在会报错sqlDROP TABLE [IF EXISTS] 表名;安全写法sqlDROP TABLE IF EXISTS emp;清空表数据保留表结构TRUNCATEsqlTRUNCATE TABLE emp;作用清空表里所有数据自增主键重置表结构不变。DDL 表操作速记sqlSHOW TABLES; -- 查询所有表 DESC 表名; -- 查看表结构 SHOW CREATE TABLE 表名; -- 查看建表语句 CREATE TABLE 表名(字段...) COMMENT ; -- 创建表 ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...; -- 修改表 DROP TABLE IF EXISTS 表名; -- 删除表 TRUNCATE TABLE 表名; -- 清空表数据保留结构四、易错总结中文符号报错逗号、引号必须是英文半角、‘’全角符号直接语法错误未选中数据库建表 / 改表前必须执行use 库名;否则No database selected注释引号不匹配comment 用户名少闭合引号正确comment 用户名字符集乱码建表务必加DEFAULT CHARSETutf8mb4支持完整中文和表情删除不加 IF EXISTS生产环境创建 / 删除库表建议带上IF NOT EXISTS/IF EXISTS避免重复执行报错。