DDL(数据定义语言)
用于操作数据库、表结构及修改表,不涉及数据操作。
1. 数据库操作
1.1 查看所有数据库
sql
SHOW DATABASES;
1.2 创建数据库
sql
-- 语法:CREATE DATABASE IF NOT EXISTS 库名;
CREATE DATABASE IF NOT EXISTS mydb1;
1.3 切换数据库
sql
-- 语法:USE 库名;
USE mydb1;
1.4 删除数据库
sql
-- 语法:DROP DATABASE IF EXISTS 库名;
DROP DATABASE IF EXISTS mydb1;
1.5 修改数据库编码
sql
-- 语法:ALTER DATABASE 库名 CHARACTER SET 编码;
ALTER DATABASE mydb1 CHARACTER SET utf8;
2. 表操作
2.1 数据类型
数值类型
| 类型 | 大小 | 用途 |
|---|---|---|
| TINYINT | 1 byte | 小整数值 |
| SMALLINT | 2 bytes | 大整数值 |
| MEDIUMINT | 3 bytes | 大整数值 |
| INT/INTEGER | 4 bytes | 大整数值 |
| BIGINT | 8 bytes | 极大整数值 |
| FLOAT | 4 bytes | 单精度浮点数 |
| DOUBLE | 8 bytes | 双精度浮点数 |
| DECIMAL | 小数值 |
日期时间类型
| 类型 | 大小 | 格式 | 用途 |
|---|---|---|---|
| DATE | 3 bytes | YYYY-MM-DD | 日期值 |
| TIME | 3 bytes | HH:MM:SS | 时间值或持续时间 |
| YEAR | 1 byte | YYYY | 年份值 |
| DATETIME | 8 bytes | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| TIMESTAMP | 4 bytes | YYYYMMDD HHMMSS | 时间戳 |
字符串类型
| 类型 | 大小 | 用途 |
|---|---|---|
| CHAR | 0-255 bytes | 定长字符串 |
| VARCHAR | 0-65535 bytes | 变长字符串 |
| TINYBLOB | 0-255 bytes | 短二进制字符串 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| BLOB | 0-65,535 bytes | 二进制长文本数据 |
| TEXT | 0-65,535 bytes | 长文本数据 |
| MEDIUMBLOB | 0-16,777,215 bytes | 二进制中等长度文本数据 |
| MEDIUMTEXT | 0-16,777,215 bytes | 中等长度文本数据 |
| LONGBLOB | 0-4GB | 二进制极大文本数据 |
| LONGTEXT | 0-4GB | 极大文本数据 |
2.2 创建表
sql
CREATE TABLE IF NOT EXISTS student(
sid INT COMMENT '学号',
name VARCHAR(20) COMMENT '姓名',
age INT COMMENT '年龄',
gender VARCHAR(20) COMMENT '性别',
birth DATE COMMENT '出生日期',
address VARCHAR(20) COMMENT '地址'
);
2.3 查看所有表
sql
SHOW TABLES;
2.4 查看表创建语句
sql
-- 语法:SHOW CREATE TABLE 表名;
SHOW CREATE TABLE student;
2.5 查看表结构
sql
-- 语法:DESC 表名;
DESC student;
2.6 删除表
sql
-- 语法:DROP TABLE 表名;
DROP TABLE student;
3. 修改表结构
3.1 添加列
sql
-- 语法:ALTER TABLE 表名 ADD 列名 类型(长度) [约束];
ALTER TABLE student ADD dept VARCHAR(20) COMMENT '院系';
3.2 修改列名和类型
sql
-- 语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) [约束];
ALTER TABLE student CHANGE dept department VARCHAR(30) COMMENT '部门';
3.3 删除列
sql
-- 语法:ALTER TABLE 表名 DROP 列名;
ALTER TABLE student DROP department;
3.4 修改表名
sql
-- 语法:RENAME TABLE 表名 TO 新表名;
RENAME TABLE student TO stu;