SQL进阶篇

题霸-SQL进阶

SQL1 插入记录

插入:insert into 表名 values …

使用INTERVAL关键字实现对DATETIME字段的操作,例如这里结束时间是在开始开始时间后的50分钟:

‘2021-09-01 22:11:12’ + INTERVAL 50 minute

1
2
3
INSERT INTO exam_record VALUES 
(NULL, 1001, 9001, '2021-09-01 22:11:12', '2021-09-01 22:11:12' + INTERVAL 50 minute, 90),
(NULL, 1002, 9002, '2021-09-04 07:01:02', NULL, NULL)

不管该ID试卷是否存在,都要插入成功,

1
replace into 表明 values (...);

更新数据update

1
update 表名 set 字段名='更新后的值' where 条件

SQL6 删除记录(一)

请删除exam_record表中作答时间小于5分钟整且分数不及格(及格线为60分)的记录;

值得注意的是这,里用到了一个timestampdiff函数:

TIMESTAMPDIFF(unit,begin,end);

其作用是返回begin-end的结果——时间差

unit参数是确定(end-begin)的结果的单位,表示为整数。 以下是有效单位:

1
2
3
4
5
6
7
8
9
MICROSECOND  微秒
SECOND
MINUTE 分钟
HOUR 小时
DAY
WEEK
MONTH 月份
QUARTER
YEAR 年份
1
2
delete from exam_record
where score < 60 and timestampdiff(minute, start_time, submit_time) < 5

truncate table

SQL8 删除记录(三)

请删除exam_record表中所有记录,并重置自增主键。

truncate table 在功能上,与不带where字句的delete语句相同;

二者均删除表中的全部行,但truncate table 比delete速度更快,且使用的系统和事务日志资源少。 truncate 删除表中的所有行,但表的结构及其列,约束,索引等保持不变。新行标识所用的技术值重置为该列的种子(对表结构中自增列的重置)。

如果想保留标识计数值,请使用delete 。

如果要删除表定义及其数据,请使用drop table 语句。

create table

SQL9 创建一张新表

创建一张优质用户信息表user_info_vip,表结构和用户信息表一致
image-20211030103832519

1
2
3
4
5
6
7
8
9
10
CREATE TABLE IF NOT EXISTS user_info_vip(
id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
uid int(11) UNIQUE not null COMMENT '用户ID',
nick_name varchar(64) COMMENT '昵称',
achievement int(11) DEFAULT 0 COMMENT '成就值',
`level` int(11) COMMENT '用户等级',
job varchar(32) COMMENT '职业方向',
register_time datetime DEFAULT current_timestamp COMMENT '注册时间'
)DEFAULT CHARSET=UTF8;

create table if not exists user_info_vip:如果不存在此表,则创建

设置默认值:default 值

例如将register_time的默认值设置为当前的时间,也就是当插入一条数据时,默认将注册时间设置成当前时间:DEFAULT current_timestamp

设置注释:COMMENT ‘注释内容’

alter table

1、 添加列

Alter table 表名add column 列名 类型;(默认添加到表的最后一列)

【first|after 字段名】可以指定位置

Eg:alter table employees add column full_name varchar after last_name;

2、 修改列的类型或约束

Alter table 表名 modify column 列名 新类型【新约束】;

3、 修改列名

Alter table 表名 change column 旧列名 新列名 类型;

4、 删除列

Alter table 表名 drop column 列名;

5、 修改表名

Alter table 表名 rename 【to】新表名;

1
2
3
4
5
6
ALTER TABLE user_info 
ADD COLUMN school varchar(15) AFTER `level`;
ALTER TABLE user_info
CHANGE COLUMN job profession varchar(10) DEFAULT NULL;
ALTER TABLE user_info
MODIFY COLUMN achievement int(11) DEFAULT 0;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!