一般来说对于数据的操作可以分为四种 :CURD
- C Create(创建
- U Update(更新)
- R Retrieve(读取)
- D Delete(删除)
我们下面会分别介绍这四种操作 其中R操作(读取)为重点
create
语法:
INSERT [INTO] table_name [(column [, column] ...)] VALUES (value_list) [, (value_list)] ... value_list: value, [, value]
实例:
我们创建一张学生表
单行插入+全列插入
简单来说就是我们不用指定插入的列插入全部列的一条记录
下面是示例
多行查询+指定列查询
我们这里插入两条记录 指定除邮箱以外其他列
下面是示例
插入否则更新 (不常用)
我们插入一条数据的时候可能会因为主键或者唯一键已经存在而产生冲突从而导致插入失败
下面是示例
此时我们可以选择同步更新语法
INSERT ... ON DUPLICATE KEY UPDATE column = value [, column = value] ...
其中ON DUPLICATE KEY
的意思是如果发生冲突 update
后面更上需要更新的选项以及值
下面是使用实例
我们发现此时数据更新成功
当我们使用该更新语句的时候会有下面的三种情况发生
- 0 row affected: 表中有冲突数据,但冲突数据的值和 update 的值相等
- 1 row affected: 表中没有冲突数据,数据被插入
- 2 row affected: 表中有冲突数据,并且数据已经被更新
如何查看受到影响的行数
- 在使用语句后下方会显示
- 通过row_count()函数显示
替换
语法
REPLACE INTO students (id, name) VALUES (105, '曹阿瞒');
替换时会有以下两种情况发生
- 主键 或者 唯一键 没有冲突,则直接插入
- 主键 或者 唯一键 如果冲突,则删除后再插入
下面是实例
Retrieve
语法:
SELECT [DISTINCT] {* | {column [, column] ...} [FROM table_name] [WHERE ...] [ORDER BY column [ASC | DESC], ...] LIMIT ...
下面是实例
-- 创建表结构 CREATE TABLE exam_result ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL COMMENT '同学姓名', chinese float DEFAULT 0.0 COMMENT '语文成绩', math float DEFAULT 0.0 COMMENT '数学成绩', english float DEFAULT 0.0 COMMENT '英语成绩' ); -- 插入测试数据 INSERT INTO exam_result (name, chinese, math, english) VALUES ('唐三藏', 67, 98, 56), ('孙悟空', 87, 78, 77), ('猪悟能', 88, 98, 90), ('曹孟德', 82, 84, 67), ('刘玄德', 55, 85, 45), ('孙权', 70, 73, 78), ('宋公明', 75, 65, 30); Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0