【 MySQL表的增删改查(基础) 】

一、新增(Create)

语法:

insert into 表名 values()

注意:

()里面的字段的个数和类型要匹配

案例:创建一个表如下结构,再进行操作

在这里插入图片描述

1.1 单行数据 + 全列插入

insert into student values(209000836,‘孙悟空’,5896325,‘容园一号263’,2);

效果展示:

在这里插入图片描述

1.2 多行数据 + 指定列插入

插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id,name,class_id) VALUES
(102, ‘曹孟德’,1),
(103, ‘孙仲谋’,2);

效果如下:

在这里插入图片描述

扩展1:

在这里插入图片描述

扩展2:

在这里插入图片描述
注意:

在这里插入图片描述

具体如何配置,参考以下步骤:

在这里插入图片描述

二、查询(Retrieve)

语法:

SELECT
[DISTINCT] {* | {column [, column] …}
[FROM table_name]
[WHERE …]
[ORDER BY column [ASC | DESC], …]
LIMIT …

案例:创建考试成绩表并插入数据,如下

在这里插入图片描述

2.1 全列查询

–通常情况下不建议使用 * 进行全列查询
– 1. 查询的列越多,意味着需要传输的数据量越大;
– 2. 可能会影响到索引的使用。(索引待后面课程讲解)
SELECT * FROM exam_result;

效果如下:

在这里插入图片描述

注意:

1.全列查找是一个危险操作,生产环境保存的数据量非常大,使用全列查找时,当读取硬盘时会把硬盘IO吃满,返回响应时,网卡的宽带也会被吃满。

2.查找结果是一个临时表对原始数据没有影响,不会保存在硬盘中,而是在内存中临时保存,当进行输出时就被释放了。

2.2 指定列查询

指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam_result;

2.3 查询字段为表达式

表达式包含一个字段
SELECT id, name, english + 10 FROM exam_result;
– 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam_result;

效果如下:

在这里插入图片描述

在这里插入图片描述

注意:

当指定查询字段为表达式时,临时表的结果数据类型不一定和原始数据类型一致,临时表的数据类型会自动适应。

2.4 别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称,语法:

SELECT column [AS] alias_name […] FROM table_name;

结果集中,表头的列名=别名
SELECT id, name, chinese + math + english as 总分 FROM exam_result;

在这里插入图片描述

2.5 去重:DISTINCT

SELECT DISTINCT math FROM exam_result;

注意:

多列去重时,每个列的值必须都要相同!! 否则就会如下一样达不到去重效果.

在这里插入图片描述

2.6 排序:ORDER BY

语法:

ASC 为升序(从小到大)
– DESC 为降序(从大到小)
– 默认为 ASC
SELECT … FROM table_name [WHERE …]
ORDER BY column [ASC|DESC], […];

  1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
  2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面

– 查询同学姓名和 qq_mail,按 qq_mail 排序显示
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student ORDER BY qq_mail DESC;

  1. 使用表达式及别名排序

查询同学及总分,由高到低
SELECT name, chinese + english + math FROM exam_result
ORDER BY chinese + english + math DESC;
SELECT name, chinese + english + math total FROM exam_result
ORDER BY total DESC;

  1. 可以对多个字段进行排序,排序优先级随书写顺序

查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
SELECT name, math, english, chinese FROM exam_result
ORDER BY math DESC, english, chinese;

注意:

1.多列排序时,如果第一个列结果相同,相同结果之间再通过第二个列排序,后面依次
2.如果指定一个列排序,那么相同结果之间的顺序是不可预期的
3.多列排序时,如果第一列已经排好序,就不必再排后面的列了

2.7 条件查询:WHERE

比较运算符:

在这里插入图片描述

逻辑运算符:

在这里插入图片描述

注:

  1. WHERE条件可以使用表达式,但不能使用别名。
  2. AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

2.8 分页查询:LIMIT

语法:

– 起始下标为 0
– 从 0 开始,筛选 n 条结果
SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n;
– 从 s 开始,筛选 n 条结果
SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT s, n;
– 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT … FROM table_name [WHERE …] [ORDER BY …] LIMIT n OFFSET s;

效果如下:

在这里插入图片描述

三、修改(Update)

语法:

UPDATE table_name SET column = expr [, column = expr …]
[WHERE …] [ORDER BY …] [LIMIT …]

案例:

– 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3;

注意:

Update会修改数据库服务器上的原始数据,危险操作,要仔细!!

四、删除(Delete)

语法:

DELETE FROM table_name [WHERE …] [ORDER BY …] [LIMIT …]

注意:

不加where条件的话就是删除整个表的数据!!

五、总结

1、新增

单行插入
insert into 表(字段1, …, 字段N) values (value1, …, value N);
– 多行插入
insert into 表(字段1, …, 字段N) values
(value1, …),
(value2, …),
(value3, …);

2、查询

– 全列查询
select * from 表
– 指定列查询
select 字段1,字段2… from 表
– 查询表达式字段
select 字段1+100,字段2+字段3 from 表
– 别名
select 字段1 别名1, 字段2 别名2 from 表
– 去重DISTINCT
select distinct 字段 from 表
– 排序ORDER BY
select * from 表 order by 排序字段
– 条件查询WHERE:
– (1)比较运算符 (2)BETWEEN … AND … (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
(8)NOT
select * from 表 where 条件

3、修改

update 表 set 字段1=value1, 字段2=value2… where 条件

4、删除

delete from 表 where 条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值