以下方 user 表为例,讲解如何Mysql创建表语句、添加表字段、修改表字段、添加索引等常用的SQL语句。
出于编写本篇文章的考虑,使用下方建表语句创建的 user表 有很多不合理的地方,例如:teacher_id 是 varchar类型而非 bigint类型、 '创建时间' 有2个字段 等。 大家在自己公司数据库环境中,根据自己的实际需求创建对应的表,不要把这张建表语句直接复制、粘贴使用。
一、操作数据库表:
1、创建表SQL语句
-- 创建SQL表语句 .
CREATE TABLE user (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID, 主键.',
is_deleted char(1) DEFAULT 'n' COMMENT '是否删除',
creator varchar(255) DEFAULT NULL,
gmt_create datetime DEFAULT NULL COMMENT '创建时间',
modifier varchar(255) DEFAULT NULL COMMENT '修改人',
gmt_modified datetime DEFAULT NULL COMMENT '修改时间',
name varchar(100) DEFAULT NULL COMMENT '姓名',
age int(3) DEFAULT NULL COMMENT '年龄',
create_date datetime DEFAULT NULL COMMENT '创建时间',
teacher_id varchar(20) DEFAULT NULL COMMENT '教师表ID',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1015 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
2、删除表语句
-- 删除表
DROP TABLE user;
3、给表添加字段
-- 向 table_name 表中添加字段
ALTER TABLE table_name ADD COLUMN column_name VARCHAR(100) DEFAULT NULL COMMENT '新加字段' AFTER old_column;
-- 给 user表 中添加 'age' 字段,字段默认值为:NULL,在 'name' 字段后.
ALTER TABLE user ADD COLUMN age int(3) DEFAULT NULL COMMENT '年龄' AFTER name;
-- 给 user表 中添加 'sex' 字段,字段默认值为:1,在 'age' 字段后.
ALTER TABLE user ADD COLUMN sex int(1) DEFAULT 1 COMMENT '性别:1-男,0-女.' AFTER age;
4、修改表字段:字段类型、字段注释信息、给表字段添加默认值.
-- 将 user 表中 teacher_id 字段修改成 bigint 类型.
ALTER TABLE user MODIFY teacher_id BIGINT(20) COMMENT '教师ID';
-- 修改 user表中 name 字段的长度.
ALTER TABLE user MODIFY name varchar(256) COMMENT '姓名_注释信息.';
-- 给 user表中 creator 设置默认值
-- 推荐使用
ALTER TABLE `user` MODIFY creator varchar(255) DEFAULT 'system' COMMENT '创建人';
-- ALTER TABLE `user` ALTER COLUMN creator SET DEFAULT 'system22'; -- 不建议使用
-- ALTER TABLE `user` MODIFY creator varchar(255) COMMENT '创建人22'; -- 修改注释信息
-- 给 user表中 gmt_create 设置默认值
ALTER TABLE user MODIFY gmt_create datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间';
-- 给 user表中 gmt_modified 设置默认值,更新操作时设置默认值.
ALTER TABLE user MODIFY gmt_modified datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间';
5、删除表字段
-- 删除 user表 中1个字段.
ALTER TABLE `user` DROP COLUMN age;
-- 删除 user表 中2个字段.
ALTER TABLE `user` DROP COLUMN age, DROP COLUMN sex;
6、给表添加索引
-- 给 user表 添加索引
ALTER TABLE user ADD INDEX idx_gmt_modified_id (gmt_modified, id); -- 2023/05/25
二、对数据库表中的数据进行操作.
1、新增表数据
INSERT INTO user(id, is_deleted, creator, gmt_create, modifier, gmt_modified, name, age, create_date, teacher_id) VALUES (1, 'n', '柳乐儿', '2023-06-22 11:31:38', '牛彪彪', '2023-06-21 11:31:55', '张三', 20, '2020-04-02 09:54:23', '16');
INSERT INTO user(id, is_deleted, creator, gmt_create, modifier, gmt_modified, name, age, create_date, teacher_id) VALUES (2, 'n', '马三', '2023-06-14 11:32:05', NULL, NULL, '张三年', 22, '2020-01-05 11:20:00', NULL);
INSERT INTO user(id, is_deleted, creator, gmt_create, modifier, gmt_modified, name, age, create_date, teacher_id) VALUES (4, 'n', NULL, NULL, '李思思', '2023-06-17 11:32:18', '李四', 25, '2019-10-22 16:27:03', NULL);
INSERT INTO user(id, is_deleted, creator, gmt_create, modifier, gmt_modified, name, age, create_date, teacher_id) VALUES (1014, 'n', NULL, NULL, NULL, NULL, '二狗', 22, '2022-10-31 13:38:01', NULL);
INSERT INTO user(id, is_deleted, creator, gmt_create, modifier, gmt_modified, name, age, create_date, teacher_id) VALUES (1015, 'n', NULL, NULL, NULL, NULL, '大队长', 24, '2023-06-29 11:33:01', '12');
2、查询表数据
-- 简单查询
SELECT
u.*
FROM user u
WHERE
1 = 1
AND u.is_deleted = 'n'
AND u.`name` LIKE CONCAT('%', '三', '%')
LIMIT 100;
3、更新表数据
-- 更新表多个字段
UPDATE user u
SET
u.creator = '王大锤',
u.gmt_create = '2021-02-15 08:22:54',
u.teacher_id = '101'
WHERE
u.id = 4;
4、删除表数据
-- 删除表数据,需要说明的是:在删除表数据的SQL中,表不能起别名,否则SQL语句无效。
DELETE FROM user
WHERE
id = 4
AND teacher_id = 101;
5、清空表数据
user表中ID是自动增长,清空表后,ID将会从1重新开始增长。
-- 清空表
TRUNCATE TABLE user;