当前位置: 首页 > news >正文

从零开始MySQL-第4章 C[create]R[read]U[update]D[deletet]

1.Insert

--创建一张商品表goods(id int, goods_name varchar(10), price double)
--添加两条记录
CREATE TABLE `goods`(id INT,goods_name VARCHAR(10),price DOUBLE
);
--添加数据
INSERT INTO `goods`(id, goods_name, price)
VALUES(10, '华为手机', 2000);
INSERT INTO `goods`(id, goods_name, price)
VALUES(20, '苹果手机', 3000);
SELECT * FROM goods;DESC employee;
INSERT INTO `employee` VALUES (001, '孙悟空', '202-10-01', '202-10-01 11:11:11', '弼马温', 5000, '无', '无');
SELECT * FROM employee;
INSERT INTO `employee`(id , user_name, brithday , job, salary, resume, image)
VALUES (001, '孙悟空', '202-10-01', '弼马温', 5000, '无', '无');

INSERT INTO table_name (column, ...)

VALUES(value, ...);values中的值跟插入语句中的顺序对应

-- 1. 插入的数据应与字段的数据类型相同

-- 例如:把'abc'添加到int类型会错误(ps:因更换电脑,这里是VScode+mysql8)

如果是 '10' ,mysql则会自己转化为int。

-- 2. 数据的长度应在列的规定范围内。

-- 例如:不能将一个长度为80的字符串加入到长度为40的列中。

-- 3. 在values中列出的数据位置必须与被加入的列的排列位置相对应。

如果不对应,相当于第一种错误情况。

-- 4. 字符和日期型数据应包含在单引号中。

-- 5. 列可以插入空值[前提是该字段允许为空],insert into table valu(null)。

当不允许时,则会报错

-- 6. insert into tab_name(列名..) values(),(),() 形式可以添加多条记录。

-- 7. 如果是给表中的所有字段添加数据,可以不写前面的字段名称。

-- 8. 默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错。

CREATE TABLE `goods`(id INT,goods_name VARCHAR(10),price DOUBLE NOT NULL DEFAULT 100
);

-- 如果某个列 没有指定not null,那么当添加数据时,没有给定值,则会默认给null。

2.Update

-- 1. 将所有员工薪水修改为5000元。
UPDATE employee SET salary = 5000; --如果没有带where条件,会修改所有的记录
-- 2. 将姓名为 小妖精 的员工薪水修改为3000元。
UPDATE employeeSET salary = 3000WHERE user_name = '小妖精';
-- 3. 将 老妖精 的薪水 在原有的基础上增加1000元。
UPDATE employeeSET salary = salary + 1000WHERE user_name = '老妖精';
-- 可以修改多个列
UPDATE employeeSET salary = salary + 1000, job = '捶背'WHERE user_name = '老妖精';
SELECT * FROM employee;

3.Delete

-- 删除表中名称为 '老妖精'的记录。
DELETE FROM employeeWHERE user_name = '老妖精';
-- 删除表中所有记录
DELETE FROM employee;
SELECT * FROM employee;

细节:

1.如果使用where子句,将删除表中所有数据

2.Delete语句不能删除某一列的值(可以使用update设为 null 或者 '')

UPDATE employee SET job = ''  WHERE user_name = '老妖精';

3.使用delete语句仅删除记录,不删除表本身。如果要删除表,使用drop table语句。drop table 表名;

DROP TABLE employee;

4.Select

SELECT [DISTINCT] * | (column, ...)

                FROM tablename;

注意事项:

1.select指定查询那些列的数据。

2.column指定列名。

3.*号代表查询所有列。

4.FROM 指定查询那张表。

5.DISTINCT可选,指显示结果时,是否去掉重复数据。

4.1多表

4.2单表

-- 查询表中所有学生的信息
SELECT * FROM student;
-- 查询表中所有学生的姓名和对应的英语成绩。
SELECT `name`, english FROM student;
-- 过滤表中重复数据distinct
SELECT DISTINCT * FROM student;
SELECT DISTINCT math FROM student;
-- 要查询的记录,每个字段都相同,才会去重
SELECT DISTINCT `name`, english FROM student;
-- 统计每个学生的总分
SELECT `name`, (chinese + english + math) FROM student;
-- 在所有学生总分加10分的情况
SELECT `name`, (chinese + english + math + 10) FROM student;
-- 使用别名表示学生分数
SELECT `name`, (chinese + english + math + 10) AS total_score FROM student;SELECT `name` as '姓名', (chinese + english + math + 10) AS '总分-' FROM student;
SELECT * FROM student;
-- 1. 查询姓名为崴比巴步2的学生成绩
SELECT * FROM student WHERE `NAME` = '崴比巴步2';
-- 2. 查询英语成绩大于50分的同学
SELECT * FROM student WHERE english > 50;
-- 3. 查询总分大于200分的所有同学
SELECT * FROM student WHERE (chinese + english + math) > 200;
-- 4. 查询math大于60并且(and)id大于4的学生成绩
SELECT * FROM student WHERE math > 60 AND id > 4;
-- 5. 查询英语成绩大于语文成绩的同学
SELECT * FROM student WHERE english > chinese;
-- 6. 查询总分大于200分 并且 数学成绩小于语文成绩的,带巴字的同学
SELECT * FROM student WHERE (chinese + english + math) > 200 AND math < chinese AND `NAME` LIKE '%巴%';-- 1. 查询英语分数在 60 - 90 之间的同学
SELECT * FROM student WHERE english >= 60 AND english <= 90;
SELECT * FROM student WHERE english BETWEEN 60 AND 90;--[闭区间]
-- 2. 查询数学分数为89,90,91的同学
SELECT * FROM student WHERE math = 89 OR math = 90 OR math = 91;
SELECT * FROM student WHERE math IN (89, 90, 91);
-- 3. 查询所有姓崴的同学的成绩
SELECT * FROM student WHERE `NAME` LIKE '崴%';
-- 4. 查询数学分 > 80 ,语文分> 80 的同学
SELECT * FROM student WHERE math > 80 OR chinese > 80;
-- 5. 查询语文分数在70 - 80 之间的同学
SELECT * FROM studentWHERE chinese BETWEEN 70 AND 90;
-- 6. 查询总分在189,190,191的同学
SELECT * FROM studentWHERE (chinese + english + math) IN (189, 190,191);
-- 7. 查询所有姓李 或者 姓宋的
SELECT * FROM studentWHERE `NAME` LIKE '李%' OR `NAME` LIKE '宋%';

SELECT column1, ...

                FROM table;

                ORDER BY column asc|desc, ..

1.Order by 指定排序的列, 排序的列既可以是表中的列名,也可以是select语句后指定的列名。

2.升序[默认]asc、降序desc

3.ORDER BY 子句应位于SELECT语句的结尾。

-- 对数学成绩排序后输出[升序]
SELECT * FROM studentORDER BY math;
-- 按总分从高到低的顺序输出[降序]
SELECT NAME, (chinese + english + math) AS total_score FROM studentORDER BY total_score DESC;
-- 对姓崴的同学成绩排序输出(升序) 
SELECT NAME, (chinese + english + math) AS total_score FROM studentWHERE `NAME` LIKE '崴%'ORDER BY (chinese + english + math) ASC;

http://www.dtcms.com/a/564810.html

相关文章:

  • Java版智慧场馆运营管理系统源码-全链路商品进销存精准管控方案
  • 电商销售数据分析实战:从数据挖掘到业务增长
  • 中文购物网站模板保存的密码变成乱码
  • 【开题答辩实录分享】以《宠物领养微信小程序》为例进行答辩实录分享
  • 【Block总结】MSC,多尺度稀疏交叉注意力网络在遥感场景分类中的应用|即插即用
  • CANN卷积算子深度优化:以ResNet推理为例
  • PINN求解一维亥姆霍兹方程,以声学问题为例,使用L-BFGS优化器,将传统物理建模与现代深度学习相结合,为解决科学计算问题提供了新的范式,MATLAB代码
  • 文件存储服务有哪些?他们优缺点分别是什么?FastDFS、MinIO、Ceph、HDFS、MooseFS、TFS、七牛云、阿里云 OSS
  • 如何一键将 PDF 转为 Word?
  • 20-递归神经网络(Recursive NN):介绍递归神经网络的特点和用途
  • STM32H743-ARM例程36-DNS
  • 搜集素材的网站吉首建设局网站
  • 16、Docker swarm-3
  • A模块 系统与网络安全 第四门课 弹性交换网络-4
  • Jenkins 在构建 Java 项目并操作 Docker 时 CPU 会突然飙高
  • IP冲突排查方法
  • 爱漫画-只做精品的韩漫网站企业首次建设网站方案流程
  • Fiddler配置方法与使用教程:HTTP/HTTPS抓包分析、代理设置与调试技巧详解(开发者实战指南)
  • UML建模工具Enterprise Architect如何通过威胁建模保障系统安全
  • Android + Flutter打包出来的APK体积太大
  • risc-v vector.S解析
  • QT Quick QML项目音乐播放器15----设置全局背景与颜色、播放页面背景切换
  • 嵌入式系统与RISC-V:开源架构驱动的下一代创新
  • 【Android】Drawable 基础
  • Android和h5页面相互传参
  • 直接做的视频网站怎么用网站模板
  • 通信人C++自学
  • Azure OpenAI 资源监控与成本分析实战指南
  • Notepad++ 安装 json格式化 插件
  • CSS实现居中的8中方法