MySQL表的增删改查(基础)

文章目录

  • MySQL表的增删改查(基础)
    • 新增(`Create`)
    • 查询(`Retrieve`)
    • 更新(`Update`)
    • 删除(`Delete`)
    • 总结

注释:在SQL中可以使用“–空格+描述”来表示注释说明
CRUD 即增加( Create)、查询( Retrieve)、更新( Update)、删除 (Delete)四个单词的首字母缩写。

新增(Create

单行数据 + 全列插入

-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
insert into student values (100, 10000, '唐三藏', NULL);
insert into student values (101, 10001, '孙悟空', '11111');

多行数据 + 指定列插入

-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致insert into student (id, sn, name) values(102, 20001, '曹孟德'),(103, 20002, '孙仲谋');
/*如果某一列是datetime,此时如何进行插入呢
1.通过指定的格式字符串来进行插入一个指定的时间
2.通过数据库自带的now()函数来插入当前系统时间*/
create table test (id int, t datetime);
insert into test values(1,'2022-03-03');
insert into test values(1,'2022-03-03 21:21:00');
insert into test values(2, now());
//备注 数据库是没有字符只有字符串的,所以不区分' 和 "

//insert 进行插入时候,可以指定插入其中的某一列或者某几列,此时其他列为默认值
// 表明 (插入值的列) value();
insert into test (id) values(3);

查询(Retrieve)

1.最基础的查找,全列查找,直接把一个表的所有的列,和所有的行都查询出来(结果是一个临时表) 全列查询

select * from 表名;

-- 创建考试成绩表 --
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
-- 插入测试数据 --
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98.5, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);

注意:select * from exam_result;这个操作在生产环境是一个危险操作,服务器为了响应这个操作去查找大量数据从而对其他服务请求出现延时响应(一般公司会对这种慢的SQL进程强制杀死).所以可以加where条件和limit来限制

2.指定列查询~ 只查询自己关注的列.

select 列名, 列名...from 表名.

3.指定查询字段为表达式~

在查询的时候,同时进行一些位运算操作~~(列和列之间)

-- 表达式不包含字段
select id, name, 10 from exam_result;
-- 表达式包含一个字段
select id, name, english + 10 from exam_result;
-- 表达式包含多个字段
select id, name, chinese + math + english from exam_result;

例如.期望查询结果中的语文成绩比真实多10分~

注意:这里的查询结果是临时表,所以原始数据chinese数值并没有改变,而且为了保证数据准确性数据类型是自适应的.

4.查询字段指定别名

相当于是给查询的结果的临时表指定新的列名~~

as可以省略,但是为了代码可读性建议不要省略

5.针对查询结果去重

如果是针对多个列来进行去重,就得是这多个列的值都相同的时候才视为重复

  1. 排序—针对查询结果(临时表)进行排序
select 列名...from 表名 order by 列名 asc(**升序默认不写也是升序**)/ desc(降序);

对于数据是NULL的按照最小值处理,它和其他值结果还是NULL

排序也可以依据表达式或者别名来进行排序

排序的时候还可以通过order by 来指定多个列进行排序~~

先根据第一个列进行排序,如果第一个列结果相同继续比较第二个列排序…

7.select 中的条件查询

在select的后面加上一个where字句,后面跟上一个具体的筛选条件~~

select 列名 from 表名 where 条件;

比较运算符:

逻辑运算符:

注:

  1. where条件可以使用表达式,但不能使用别名

  1. and的优先级高于or,在同时使用时,需要使用小括号()包裹优先执行的部分


完整代码如下:

-- 查询英语不及格的同学及英语成绩 ( < 60 ) --
SELECT name, english FROM exam_result WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学 --
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
-- 查询总分在 200 分以下的同学 --
SELECT name, chinese + math + english 总分 FROM exam_result WHERE chinese + math + english < 200;
-- 查询语文成绩大于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;
-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
-- 使用 AND 也可以实现
SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese <= 90;
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
-- 使用 OR 也可以实现
SELECT name, math FROM exam_result WHERE math = 58 OR math = 59 OR math = 98 OR math = 99;
-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '孙%';-- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';-- 匹配到孙权
-- 查询 qq_mail 已知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NOT NULL;
-- 查询 qq_mail 未知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NULL;

8.分页查询:limit (offset 取后续的页面)

更新(Update)

update表名 set 列名 = 值, 列名 = 值 where 条件;(where省略了就是修改所有列)

-- 将孙悟空同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';
-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
UPDATE exam_result SET math = 60, chinese = 70 WHERE name = '曹孟德';
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3;
-- 将所有同学的语文成绩更新为原来的 2 倍
UPDATE exam_result SET chinese = chinese * 2;

删除(Delete

delete from 表名 where 条件; (不加where条件就是删除整表数据)

总结

-- 新增:--
-- 单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
-- 多行插入
insert into 表(字段1, ..., 字段N) values (value1, ...), (value2, ...), (value3, ...);-- 查询 ---- 全列查询select * from 表-- 指定列查询select 字段1,字段2... from 表-- 查询表达式字段select 字段1+100,字段2+字段3 from 表-- 别名select 字段1 别名1, 字段2 别名2 from 表-- 去重DISTINCTselect distinct 字段 from 表-- 排序ORDER BYselect * from 表 order by 排序字段-- 条件查询WHERE:-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR(8)NOTselect * from 表 where 条件-- 修改 --update 表 set 字段1=value1, 字段2=value2... where 条件-- 删除 --delete from 表 where 条件
-- 条件查询WHERE:-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR(8)NOTselect * from 表 where 条件-- 修改 --update 表 set 字段1=value1, 字段2=value2... where 条件-- 删除 --delete from 表 where 条件

MySQL表的增删改查(基础)相关推荐

  1. MySQL表的增删改查

    MySQL表的增删改查 CRUD 即增加(Create).查询(Retrieve).更新(Update).删除(Delete)四个单词的首字母缩写. 表的操作,是以一套记录为基本单位: 增.删只能是以 ...

  2. 数据库概论之MySQL表的增删改查1

    MySQL表的增删改查 1.MySQL表的CRUD 2.插入数据 2.1 语法 2.2 注意事项 3.查找语句 3.1 全列查找 3.2 指定列查询 3.3 指定查询字段为表达式 3.4 查询字段指定 ...

  3. MYSQL表的增删改查进阶(下)

    MYSQL表的增删改查进阶 4. 查询 4.1 聚合查询 4.1.1 聚合函数 4.1.2 group by字句 4.1.3 having 4.2 联合查询 4.2.1 内连接 4.2.2 外连接 4 ...

  4. 2.MySQL表的增删改查(进阶)

    这里写目录标题 MySQL表的增删改查(进阶) 1.数据库约束 2.表的设计 3.新增 4.查询 4.1 聚合查询 4.2 联合查询 5.内容重点总结 MySQL表的增删改查(进阶) 1.数据库约束 ...

  5. 【MySQL系列】 MySQL表的增删改查(进阶)

    目录 ??前言 ??一.数据库约束 ???1.1 约束类型 ???1.2 null约束 ???1.3 unique约束 ???1.4 default约束 ???1.5 primary key 约束 ? ...

  6. php mysql表的增删改查,PHP 之Mysql增删改查操作案例

    1:user表: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(32) NOT NULL, PR ...

  7. MySQL表的增删改查--你都知道吗?

    文章目录 CRUD 查询 修改 删除 数据库约束 数据库的设计 插入查询的数据 聚合查询 分组查询 联合查询/多表查询(重点) 内连接与外连接 子查询 合并查询 注释:在SQL中使用 --(空格) + ...

  8. 【MySQL】(万字解析)MySQL表的增删改查(进阶-上)

    快速跳转✅ 1.数据库的约束 1.1 约束类型 1.2 NULL约束 1.3 UNIQUE:唯一约束 1.4 DEFAULT:默认值约束 1.5 PRIMARY KEY:主键约束 1.6 FOREIG ...

  9. mysql 表结构 增删改查_mysql学习【第3篇】:数据库之增删改查操作

    注意的几点: 1.如果你在cmd中书命令的时候,输入错了就用\c跳出 2.\s查看配置信息 一.操作文件夹(库) 增:create database db1 charset utf8; 删:drop ...

最新文章

  1. c#如何取自身应用程序文件名和路径?
  2. sqlplusw下登录sys账户
  3. Python 官方报告:哪些库最受欢迎、PyCharm 比 VScode更香?
  4. 输入3个数a,b,c,要求按由小到大的顺序输出
  5. 对官网vue事件修饰符串联的顺序如何理解?
  6. Spring @Qualifier 注释
  7. action中写php函数,WordPress中add_action(将函数连接到指定action)
  8. centos6.5 mysql主从_CentosMysql主从备份
  9. 字符串数组转换为整型数组
  10. Java怎么用继承回复信息_JAVA面向对象-继承
  11. 只十分钟,唾手可得的工作机会就被我搞砸了!
  12. i.mx6ull uboot移植
  13. c语言提供三种逻辑运算符,按优先级高低它们分别是,c语言逻辑运算符优先级
  14. shopxp商城系统对接个人支付宝免签h5支付
  15. hp服务器进智能配置是红屏,illegal opcode 红屏报错(hp 360 G6安装win2003)问题解决方法...
  16. 华为p10测试软件,华为p10内存测试软件
  17. 20款非常实用的Web工具和资源列表
  18. 通过matlab将二维图片序列进行三维立体重建(包含仿真录像)
  19. web3j监听合约logs事件
  20. Windows库程序

热门文章

  1. QT移植:解决win下音频可以播放而linux下音频不能播放的问题(GStreamer; Unable to pause - “file:music/1.mp3“)
  2. python队列--先进先出和先进后出
  3. 获取高德POI兴趣点的详细信息
  4. Gurobi - 入门资料
  5. 装配线问题 C语言 算法
  6. Android Studio形成扫码二维码的代码
  7. spring cloud微服务分布式云架构 - 整合企业架构的技术点(二)
  8. U-Net新玩法——ECG精准语义分割 (1)
  9. 基于dejavu的音频识别
  10. ❤️blotemJ陆小马学习资源分享❤️