任务一:向表中写入数据


# 创建数据库
CREATE DATABASE imc_db;
# 使用imc_db库
use imc_db;
# 创建imc_class
CREATE TABLE `imc_class` (
`class_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT COMMENT ‘课程分类ID‘,
`class_name` varchar(10) NOT NULL DEFAULT ‘‘ COMMENT ‘分类名称‘,
`add_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘填加时间‘,
PRIMARY KEY (`class_id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT=‘课程分类‘;
# AUTO_INCREMENT=14表示从第14条记录开始插入
# 插入记录
INSERT INTO imc_class(class_name) VALUES (‘MYSQL‘),(‘Redis‘),(‘MongoDB‘),(‘Oracle‘);
# 创建唯一键
create UNIQUE INDEX uqx_classname on imc_class(class_name);

继续插入class_name为mysql的数据

由于唯一键约束导致插入失败,但可以找一种讨巧的方案,即删除之前旧的数据插入新的数据。
# 继续插入class_name为mysql的数据
INSERT INTO imc_class(class_name) VALUES(‘MYSQL‘)
ON DUPLICATE KEY UPDATE
add_time = CURRENT_TIME

受影响的行数为2行,即先删除旧数据,再插入新数据,新数据的创建时间已发生变化。

任务二:查询表中的数据

查询出课程表中课程标题含有MySQL的课程
select * from imc_class where class_name like ‘%MySQL%‘;
| 比较运算符 | 说明 | |
|---|---|---|
| = > >= <= <> != | <>和!=都表示不等于 | |
| between min and max | 列的值大于等于最小值,小于等于最大值 | |
| is null、is not null | 判断列的值是否为null | |
| in、not in | 判断列的值是否在指定的范围内 | |
| and,&& | and运算符两百ode表达式都为真时,返回的结果才为真 | |
| or,|| | or运算符两边的表达式有一条为真,返回的结果就是真 | |
| XOR | XOR运算符两边的表达式一真一假时返回真,两真两假时返回假<异或> |
任何运算符和NULL值运算结果都为NULL




| 聚合函数 | 说明 |
|---|---|
| count(*)/count(col) | 计算符合条件的数据行数 |
| Sum(col_name) | 计算表中符合条件的数值列的合计数 |
| avg(col_name) | 计算表中符合条件的数值列的平均数 |
| max(col_name) | 计算表中符合条件的任意列中数据的最大值 |
| min(col_name) | 计算表中符合条件的任意列中数据的最小值 |

任务三:按条件删除表中的数据

修改表中符合条件的数据

# 向已创建的表中添加某一列信息
alter table imc_course add is_recommend tinyint default 0 comment ‘是否推荐,0不推荐,1推荐‘
# 重新查看建表语句
show create table imc_course;
# 随机推荐10门课程 Rand()随机函数 + limit
select course_id from imc_course order by Rand() limit 10;
原文:https://www.cnblogs.com/shine-rainbow/p/13167736.html