sql进阶篇
1.更新记录
AC:
update examination_info
set tag = replace(tag, "PYTHON", "Python")
where tag = "PYTHON";
2.删除记录
AC:
DELETE FROM exam_record
WHERE timestampdiff(minute, start_time, submit_time) < 5
AND score < 60;
3.删除记录(三)
AC:
truncate table exam_record
TRUNCATE TABLE exam_record;
是 SQL 中的一条命令,用于快速删除表 exam_record
中的所有记录。它的主要特点和作用包括:
-
快速删除:与
DELETE
语句相比,TRUNCATE
更快,因为它不逐行删除数据,而是直接释放整个表的空间。 -
无法恢复:
TRUNCATE
操作是不可逆的,一旦执行,表中的所有数据将无法恢复。 -
重置自增计数器:如果表中有自增字段,执行
TRUNCATE
后,这些字段的计数器通常会重置回初始值(如 1)。 -
不支持 WHERE 子句:与
DELETE
不同,TRUNCATE
不支持条件删除,不能只删除特定记录。 -
影响表的结构:
TRUNCATE
操作不会影响表的结构(如列和索引),仅清空数据。
总之,TRUNCATE TABLE exam_record;
是用来快速清空 exam_record
表中所有数据的一种方法,适用于需要快速重置数据的场景。
4.创建一张新表
AC:
CREATE TABLE IF NOT EXISTS user_info_vip (
id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int UNIQUE NOT NULL COMMENT '用户ID',
nick_name varchar(64) COMMENT '昵称',
achievement int DEFAULT 0 COMMENT '成就值',
`level` int COMMENT '用户等级',
job varchar(32) COMMENT '职业方向',
register_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间'
) CHARACTER SET utf8 COLLATE utf8_general_ci;
create table if not exists user_info_vip(
id int auto_increment comment '自增ID',
uid int unique not null comment '用户ID',
nick_name varchar(64) comment '昵称',
achievement int default 0 comment '成就值',
`level` int comment '用户等级',
job varchar(32) comment '职业方向',
register_time datetime default current_timestamp comment '注册时间',
primary key (id)
) character set utf8 collate utf8_general_ci;
5.修改表
AC:
alter table user_info add school varchar(15) after level;
增加列在某列之后
alter table 增加的表格 add 增加列的名称 数据类型 位置(after level 在level 之后)
alter table user_info change job profession varchar(10);
更换列的名称及数据类型
alter table user_info change 原列名 修改列名 修改数据类型
alter table user_info modify achievement int(11) default 0;
更改数据类型
alter table 表名 modify 修改列名称 数据类型 默认值等
ALTER TABLE user_info ADD school varchar(15) AFTER `level`;
ALTER TABLE user_info CHANGE job profession varchar(10);
ALTER TABLE user_info CHANGE COLUMN achievement achievement int DEFAULT 0;
6. 删除表
表的创建、修改与删除:
- 1.1 直接创建表:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
-
1.2 从另一张表复制表结构创建表:
CREATE TABLE tb_name LIKE tb_name_old
-
1.3 从另一张表的查询结果创建表:
CREATE TABLE tb_name AS SELECT * FROM tb_name_old WHERE options
-
2.1 修改表:
ALTER TABLE 表名 修改选项
。选项集合:
1 2 3 4 5 6 7 8 |
|
- 3.1 删除表:
DROP TABLE [IF EXISTS] 表名1 [, 表名2]
。
AC:
DROP TABLE IF EXISTS exam_record_2011, exam_record_2012, exam_record_2013, exam_record_2014;