表的增删查改
点赞👍👍收藏🌟🌟关注💖💖
你的支持是对我最大的鼓励,我们一起努力吧!😃😃
CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)
1.插入
语法:
INSERT [INTO] table_name
[(column [, column] ...)] #列字段
VALUES (value_list) [, (value_list)] ... #列字段的内容
value_list: value, [, value] ...
案例:
-- 创建一张学生表
CREATE TABLE students (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sn INT NOT NULL UNIQUE COMMENT '学号',
name VARCHAR(20) NOT NULL,
qq VARCHAR(20)
);
1.1单行数据 全列插入+指定列插入
指定列插入
列字段和列字段的内容一定要一一匹配
insert into student (sn,name,qq) values (123,'张飞','12345');
全列插入
全列插入有两种方式,一个是省略 valiues 左侧字段名,一个是都指定
insert into students values (10,124,'关羽','13245');
insert into students (id,sn,name,qq) values (14,125,'刘备','14525')
可以省略into
insert students (sn,name,qq) values (126,'诸葛亮','12525');
1.2多行数据 全列插入+指定例插入
指定列多行插入
insert students (sn,name,qq) values (127,'曹操','15256'),(128,'许攸','23445');
全列多行插入
insert students values (20,129,'孙权','12256'),(21,130,'吕布','33445');
1.2插入否则更新
由于 主键 或者 唯一键 对应的值已经存在而导致插入失败
但是我就是想让它先确认是不是在数据库中存在,不存在就插入,存在不要拦我然后执行后面的修改语句
选择性的进行同步更新操作 语法:
INSERT ... ON DUPLICATE KEY UPDATE
column = value [, column = value] ...
如果不存在就插入,存在发生主键或者唯一键冲突不要报错就行后面的修改语句
insert into students values (14,111,'周瑜','56321') on duplicate key update sn=111,name='周瑜',qq=56321;
注意更新的值不能和其他的主键和唯一键冲突,否则不能更新
- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
- 1 row affected: 表中没有冲突数据,数据被插入
- 2 row affected: 表中有冲突数据,并且数据已经被更新
通过 MySQL 函数获取受到影响的数据行数
select row_count();
1.4替换
主键 或者 唯一键 没有冲突,则直接插入;
主键 或者 唯一键 如果冲突,则删除后再插入
REPLACE INTO students (sn,name,qq) values (131,'孙悟空','98752');
- 1 row affected: 表中没有冲突数据,数据被插入
- 2 row affected: 表中有冲突数据,删除后重新插入
这里从id就可以看到是删除后插入的,因为id是自增的,刚才是22,现在是23了
2.查找
语法:
SELECT
[DISTINCT] {
* | {
column [, column] ...}
[FROM table_name] # 从那个表筛选
[WHERE ...] # 筛选条件
[ORDER BY column [ASC | DESC], ...] # 对筛选结果排序
LIMIT ... # 限定筛选出来的条数
distinct:对内容进行去重
*:全列查询
column,column…:指定列查询
案例:
-- 创建表结构
CREATE TABLE exam_result (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR