【 MySQL的增删改查(基础 详解+案例)】

1.新增(Create)

 CREATE TABLE student (
    id INT,
    sn INT comment '学号',
    name VARCHAR(20) comment '姓名',
    qq_mail VARCHAR(20) comment 'QQ邮箱'
 )

2.1 单行数据 + 全列插入

插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致

INSERT INTO student VALUES (100, 10000, '小米', NULL);
 INSERT INTO student VALUES (101, 10001, '李华', '11111');

2.2 多行数据 + 指定列插入

插入两条记录,value_list 数量必须和指定列数量及顺序一致

INSERT INTO student (id, sn, name) VALUES 
(102, 20001, '曹孟德'),
 (103, 20002, '孙仲谋')

注意:values 一定是和insert 搭配一起使用的。

3. 查询(Retrieve)

3.1 全列查询

SELECT * FROM 表名;

3.2 指定列查询

指定列的顺序不需要按定义表的顺序来,列从表中选取需要查询的

 select 列名,列名 from 表名;
SELECT id, name, english FROM exam_result;

3.3 查询字段为表达式

(对列指定的操作)

SELECT id, name, chinese + math + english FROM exam_result;

3.4别名( 由 as引导)

SELECT id, name, chinese + math + english  as result FROM exam_result;

3.5去重DISTINCT

对某列重复出现的数据进行删除,即去重。

-- 98 分重复了
SELECT math FROM exam_result;
 +--------+
 | math |
 +--------+
  98 |   
  78 |
  98 |
  84 |
  65 |
)-- 去重结果
SELECT DISTINCT math FROM exam_result;
 +--------+
 | math |
 +--------+    
 98 |
 78 |
 84 |
 65 |
 +--------+
 

3.6排序:ORDER BY

ASC 为升序(从小到大)
DESC 为降序(从大到小)
默认为 ASC升序

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

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

3.7 条件查询:WHERE

运算符说明
=等于,NULL 不安全, NULL = NULL 的结果是 NULL
<=>等于,NULL 安全, NULL <=> NULL 的结果是 TRUE(1)
!=, <>不等于
BETWEEN a0 AND范围匹配,[a0, a1], a0 <= value <= a1
IN (option, …)如果是 option 中的任意一个,返回 TRUE(1) 离散
is not null不是null
LIke模糊匹配 % 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符

逻辑运算符:

and要满足所有的条件
or满足 其中一个条件即可
not条件为 TRUE(1),结果为 FALSE(0)

注意:
1. WHERE条件可以使用表达式,但不能使用别名,否则会运行错误。
2. AND的优先级高于OR,在同时使用时,需要使用小括号()括起来优先执行的部分

案例:

基本查询:-- 查询英语不及格的同学及英语成绩 ( < 60 )
 SELECT name, english FROM exam_result WHERE english < 60;-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
ANDOR-- 查询语文成绩大于80分,且英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 and english > 80;
-- 查询语文成绩大于80分,或英语成绩大于80分的同学
SELECT * FROM exam_result WHERE chinese > 80 or english > 80;-- 观察AND 和 OR 的优先级:
SELECT * FROM exam_result WHERE chinese > 80 or math>70 and english > 70;
 SELECT * FROM exam_result WHERE (chinese > 80 or math>70) and english > 70;

模糊查询:LIKE

- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';
-- 匹配到孙悟空、孙权
--------------------------------------------------------
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';
-- 匹配到孙权

4. 修改(Update)

-- 将小孙同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = '小孙'

5. 删除(Delete)

语法:

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

案例:

--删除小马同学的考试成绩
delete from exam_result where name='小马';
  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值