Mysql之增删改查

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

这里的增删改查主要是对应表中的数据不像前一篇那个列类型耳机具体的哪一条数据
在这里插入图片描述

Insert

在这里插入图片描述
其实我们前面都用过好多次了
在这里插入图片描述

比如下面那个
可以
关于那个表名后面加不加列类型下面有解释
INSERT INTO shanpin VALUES(1,'拖鞋',12.6);
INSERT INTO shanpin VALUES(2,'辣条',2.8);
添加多个数据间加逗号

注意事项

在这里插入图片描述
1.正常类型匹配特殊情况的话'30’这样mysql底层会使其强转为int类型当然你前提你字符串存储的是个int类型的呗'30’这样就能匹配int'abc’就不能其实按规范写就行
2.长度匹配
3.类似函数参数和实参一 一对应
4.字符串和日期类型用单引号括起来
5.允许null可以添加null
6.可以通过写多个括号添加多个数据 INSERT INTO tablename VALUES (第一组数据)(第二组数据)(第三组数据)
7.如果要添加一组完整的数据可以不写前面的列类型如果只添加其中几个数据一定要写对应添加的列类型其他不添加的会赋默认值
8.如果没有默认值报错默认值一般为NULL如果你添加了NOT NULL且没有DEFAULT会报错如果指定了DEFAULT 指定默认值那么就会赋值指定的默认值

update

在这里插入图片描述

UPDATE table_name
		SET 列名=值/表达式
		WHERE  
WHERE条件不写的话就是对应所有的数据的这一列进行修改

对应代码

 # 演示一下操作表中具体数据的
 DROP TABLE employee
CREATE TABLE employee(
	id INT NOT NULL DEFAULT 0,
	`name` VARCHAR(32),
	salary DOUBLE) CHARSET utf8 COLLATE utf8_bin;-- 区分大小写utf8
DESC employee	

-- 添加几个数据吧INSERT
INSERT INTO employee (`name`,salary)-- 写列名就是你要添加对应的参数其他参数没有默认值null
				    -- 有默认值为默认值没默认值还not null报错
		VALUES('小袁',10000);
SELECT * FROM employee
INSERT INTO employee() -- 不写列名就是所有参数都添加按照对应写就ok
	VALUES(1,'小王',6000),(2,'小张',7000),(3,'小李',8000)-- 可以添加多个,数据间加逗号
-- 修改一下表的数据update
UPDATE employee 
	SET salary=5000 -- 后面没有WHERE的话就是对整列所有数据进行修改
SELECT * FROM employee
UPDATE employee 
	SET salary=3000
	WHERE `name`='小王' -- 把指定小王的薪水调为3000只修改对应小王那一行对应列的数据

UPDATE employee 
	SET salary=10000
	WHERE `name`='小袁' -- 把指定小袁的薪水调为10000只修改对应小袁那一行对应列的数据

效果
在这里插入图片描述

使用细节

在这里插入图片描述
1和2正常的
主要是3小心点
4的话

UPDATE empolyee 
		SET id=5,salary=5000
		WHERE `name`='小袁'
		这样就会把小袁的id和salary全修改

delete

在这里插入图片描述
还是不带where就删除表中所有记录带WHERE只删除对应行的
测试用例
1.删除employee中name为小王的记录
2.删除employee中所有的记录

代码

# Delete语句演示
DELETE FROM employee
	WHERE `name`='小王'
SELECT * FROM employee

DELETE FROM employee -- 不带where删除表中所有数据不删除表

效果
在这里插入图片描述
在这里插入图片描述

还是记得写where除非你是真的想删除表中所有数据小心被开除

细节

在这里插入图片描述

select

基本语法

在这里插入图片描述
主要看下面代码喽
在这里插入图片描述

代码

 # 学生表
 CREATE TABLE student(
	id INT NOT NULL DEFAULT 1,
	`name` VARCHAR(20) NOT NULL DEFAULT '',
	chinese FLOAT NOT NULL DEFAULT 0.0 ,
	english FLOAT NOT NULL DEFAULT 0.0,
	math FLOAT NOT NULL DEFAULT 0.0);

INSERT INTO student 
	VALUES(1,'小袁',89,78,90),(2,'张飞',67,98,56),(3,'宋江',87,78,77),
	(4,'关羽',88,98,90),(5,'赵云',82,84,76),(6,'欧阳锋',55,85,45),(7,'黄蓉',75,65,30);
-- 查询表中所有的数据
SELECT * FROM student
-- 查询表中所有的姓名和对应的英语成绩
SELECT `name`,english FROM student
-- 过滤表中重复的数据
SELECT DISTINCT * FROM sudent -- 这个过滤数据是针对我们查询的数据来是说的
			      -- 你如果查询*只有所有列相同的数据会过滤,所以还是全部输出奥
-- 要查询的记录每个字段相同才能去重
SELECT DISTINCT english FROM student
-- 只显示5行因为小袁和宋江的英语分相同张飞与关羽英语分相同
-- 删了两条数据就剩五个了


1and3.效果图
在这里插入图片描述
2.效果图
在这里插入图片描述
4.效果图
在这里插入图片描述

as和表达式的列查询

在这里插入图片描述
第一句话就是列名除了可以是单个列名也可以是列名1+列名2+常数的表达式
第二句就是显示的时候起个别名来代替原先的列名

我知道你看不懂不过别着急我也看不懂不如一起往下看
在这里插入图片描述

代码

-- select使用

-- 统计每个学生的总分
SELECT `name` ,(chinese+english+math) FROM student

-- 给所有的学生总分加10分
SELECT `name`,(chinese+english+math+10) FROM student

	
-- 使用别名表示学生分数
SELECT `name` AS '名字',(chinese+english+math+10) AS total_score FROM student

在这里插入图片描述

筛选范围WHERE的艺术

在这里插入图片描述
WHERE可以接一些运算符来确定你想要的数据
比如你只想找english>80的
WHERE english>80即可会返回英语大于80的数据
注意逻辑运算变为了andor和not

between  and[ ]左闭右闭
IN(100,200)100200不是100200

在这里插入图片描述

代码

# Where的艺术
SELECT * FROM student
	WHERE `name`='赵云'
	
SELECT * FROM student
	WHERE english>80
	
SELECT *,(math+english+chinese) AS total_score FROM student 
	WHERE (math+english+chinese)>200
-- 数学过60并且id大于4
SELECT * FROM student
	WHERE math>60 AND id>4 
-- 英语成绩大于语文成绩
SELECT * FROM student
	WHERE english>chinese
-- 查询总分大于200数学成绩小于语文成绩且姓赵的同学
-- '赵%'表示只要以赵开头就可以
SELECT * FROM student
	WHERE math<chinese AND (math+chinese+english)>200 AND `name` LIKE '赵%'

筛选结果排序

对于筛选的结果进行排序展示
在这里插入图片描述

# 筛选排序
-- 数学排序后输出升序
SELECT * FROM student
	ORDER BY math ASC
-- 总分从高到低顺序排序
SELECT *,(math+english+chinese) AS total_name FROM student
		ORDER BY total_name DESC-- 可以用select指定的列名/AS后的名也可以
		
-- 对姓小的吧总分从高到低
-- 先添加一个吧
INSERT INTO student 
	VALUES(8,'小牛',70,88,96)
SELECT *,(math+english+chinese) AS total_score 
	FROM student
	WHERE `name` LIKE '小%'
	ORDER BY total_score DESC

效果
在这里插入图片描述
就显示多一根用as方便查看然后排序也用哪个as后面的别名
看你想怎么显示喽
也可以

SELECT `name`,(math+english+chinese) AS total_score 
	FROM student
	WHERE `name` LIKE '小%'
	ORDER BY total_score DESC

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql