学习创建和管理数据库与表
SHOW DATABASES;-- 基本语法
CREATE DATABASE database_name;
-- 指定字符集
CREATE DATABASE mydb CHARACTER SET utf8mb4;
-- 如果不存在则创建
CREATE DATABASE IF NOT EXISTS mydb;USE database_name;-- 删除数据库(谨慎使用!)
DROP DATABASE database_name;
-- 如果存在则删除
DROP DATABASE IF EXISTS database_name;-- 查看当前数据库的所有表
SHOW TABLES;
-- 查看表结构
DESC table_name;
-- 或
DESCRIBE table_name;-- 基本语法
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
);
-- 示例:创建学生表
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);| 约束 | 说明 |
|---|---|
| PRIMARY KEY | 主键,唯一标识每条记录 |
| NOT NULL | 不能为空 |
| UNIQUE | 值必须唯一 |
| DEFAULT | 默认值 |
| AUTO_INCREMENT | 自动递增(用于主键) |
| FOREIGN KEY | 外键,关联其他表 |
-- 添加新列
ALTER TABLE students ADD COLUMN phone VARCHAR(20);
-- 添加列并指定位置
ALTER TABLE students ADD COLUMN address VARCHAR(200) AFTER email;-- 修改列的数据类型
ALTER TABLE students MODIFY COLUMN age TINYINT;
-- 修改列名和类型
ALTER TABLE students CHANGE COLUMN email user_email VARCHAR(150);-- 删除列
ALTER TABLE students DROP COLUMN phone;-- 重命名表
RENAME TABLE old_name TO new_name;
-- 或
ALTER TABLE old_name RENAME TO new_name;-- 删除表(谨慎使用!)
DROP TABLE table_name;
-- 如果存在则删除
DROP TABLE IF EXISTS table_name;
-- 清空表数据但保留表结构
TRUNCATE TABLE table_name;| 命令 | 作用 | 速度 | 可回滚 |
|---|---|---|---|
| DROP | 删除表结构和数据 | 快 | 否 |
| TRUNCATE | 清空数据,保留表结构 | 快 | 否 |
| DELETE | 删除数据,可加条件 | 慢 | 是 |
-- 1. 创建数据库
CREATE DATABASE IF NOT EXISTS school CHARACTER SET utf8mb4;
-- 2. 使用数据库
USE school;
-- 3. 创建学生表
CREATE TABLE students (
student_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号',
name VARCHAR(50) NOT NULL COMMENT '姓名',
gender ENUM('男', '女') DEFAULT '男' COMMENT '性别',
birth_date DATE COMMENT '出生日期',
class_id INT COMMENT '班级ID',
score DECIMAL(5,2) DEFAULT 0 COMMENT '成绩',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) COMMENT='学生信息表';
-- 4. 创建班级表
CREATE TABLE classes (
class_id INT PRIMARY KEY AUTO_INCREMENT,
class_name VARCHAR(50) NOT NULL,
teacher VARCHAR(50)
);
-- 5. 查看表结构
DESC students;
-- 6. 查看创建表的 SQL
SHOW CREATE TABLE students;| 字段名 | 数据类型 | 约束 | 说明 |
|---|---|---|---|
| student_id | INT | PRIMARY KEY, AUTO_INCREMENT | 学号 |
| name | VARCHAR(50) | NOT NULL | 姓名 |
| gender | ENUM('男','女') | DEFAULT '男' | 性别 |
| birth_date | DATE | - | 出生日期 |
| score | DECIMAL(5,2) | DEFAULT 0 | 成绩 |
为数据库对象添加注释,提高可读性。
-- 创建表时添加注释
CREATE TABLE products (
id INT PRIMARY KEY COMMENT '产品ID',
name VARCHAR(100) COMMENT '产品名称',
price DECIMAL(10,2) COMMENT '价格'
) COMMENT='产品表';
-- 修改表注释
ALTER TABLE products COMMENT='产品信息表';
-- 修改列注释
ALTER TABLE products MODIFY COLUMN name VARCHAR(100) COMMENT '产品名称(中文)';创建数据库的正确语法是?
PRIMARY KEY 约束的作用是?
编写 SQL 创建一个 users 表,包含 id 和 name 字段: