mysql—增删改查操作

本次博客带领大家学习mysql数据库中的增删改查操作。

Insert语句(添加数据)

  • 使用 INSERT 语句先表中插入数据。
    请添加图片描述
    入门案例:
  1. 创建一张商品表(id int ,goods_name varchar(10),price double);
  2. 添加2条记录。
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;

Insert语句使用细节

  1. 插入的数据应与字段的数据类型相同。比如 把’abc’ 添加到int 类型会错误。
INSERT INTO goods(id,goods_name,price) VALUES('abc','华为手机',2000);
  1. 数据的长度应在列的规定范围内,例如不能将一个长度为80的字符串加入到长度为40的列中。
INSERT INTO goods(id,goods_name,price) VALUES(40,'华为手机华为手机华为手机华为手机',2000);
  1. 在values 中列出的数据位置必须与被加入的列的排列位置相对应。
INSERT INTO goods(id,goods_name,price) VALUES('vivo手机',40,2000);
  1. 字符和日期数据应包含在单引号中。
INSERT INTO goods(id,goods_name,price) VALUES(40,vivo手机,2000);
  1. 列可以插入空值[前提是该字段允许为空],insert into table value(null)。
INSERT INTO goods(id,goods_name,price) VALUES(40,'vivo手机',NULL);
  1. insert into table_name(列名…) values (),(),() 形式添加多条记录。
INSERT INTO goods(id,goods_name,price) VALUES(50,'三星手机',2500),(60,'菠萝手机',2600);
  1. 如果是给表中的所有字段添加数据,可以不写前面的字段名称。
INSERT INTO goods VALUES(50,'三星手机',2500);
  1. 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值,否则报错。如果某个列没有指定not null,那么当添加数据时,没有给定值,则会默认给null。如果我们希望指定某个列的默认值,可以创建表时指定。
INSERT INTO goods(id,goods_name) VALUES(50,'三星手机');

update语句(修改数据)

  • 使用update语句修改表中数据。
    请添加图片描述
  • 练习:

要求:在上面创建的employee 表中修改表中的记录。

  1. 将所有员工薪水修改为5000元。
UPDATE employee SET salary = 5000;
  1. 将姓名为小妖怪的员工薪水修改为3000元。
UPDATE employee SET salary = 3000 WHERE user_name = '小妖怪';
  1. 将老妖怪的薪水在原有基础上增加1000元。
UPDATE employee SET salary = salary +1000 WHERE user_name = '老妖怪';

update语句使用细节

  1. update语法可以用新值更新原有表行中的各列。
  2. set子句指示要修改哪些列和要给予哪些值。
  3. where子句指定应更新哪些行,如没有where子句,则更新所有的行(记录)。
  4. 如果需要修改多个字段,可以通过set 字段1 = 值1,字段2 = 值2…
UPDATE employee SET salary = salary +1000,job = '加油的' WHERE user_name = '老妖怪';

delete语句(删除数据)

  • 使用delete语句删除表中数据。
    请添加图片描述
  • 练习:
  1. 删除表中名称为‘老妖怪’的记录。
DELETE FROM employee WHERE user_name = '老妖怪';
  1. 删除表中所有记录。
DELETE FROM employee;

delete语句使用细节

  1. 如果不使用where子句,将删除表中所有数据。
  2. delete语句不能删除某一列的值(可使用update设为null或者’')。
UPDATE employee SET job='' WHERE user_name = '老妖怪';
  1. 使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。

select语句(查询数据)

  • 基本语法
    请添加图片描述
  • 注意事项(创建测试表学生表):
  1. select 指定查询哪些列的数据。
  2. column 指定列名。
  3. *号代表查询所有列。
  4. from指定查询哪张表。
  5. distinct可选,指显示结果时,是否去掉重复数据。
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(id,`name`,chinese,english,math) VALUES(1,'张三',80,90,95);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(2,'李四',67,56,60);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(3,'王五',83,98,77);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(4,'宋江',75,66,76);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(5,'关羽',82,84,67);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(6,'黄蓉',55,85,45);
INSERT INTO student(id,`name`,chinese,english,math) VALUES(7,'赵云',75,65,30);
  • 练习:
  1. 查询表中所有学生的信息。
SELECT * FROM student;
  1. 查询表中所有学生的姓名和对应的英语成绩。
SELECT `name`,english FROM student;
  1. 过滤表中的重复数据 distinct。
SELECT DISTINCT english FROM student;
  1. 要查询的记录,每个字段都相同,才会去重。
SELECT DISTINCT `name`,english FROM student;
  • 使用表达式对查询的列进行运算。
    请添加图片描述

  • 在select语句中可使用as语句。
    请添加图片描述

  • 案例1:

    • 统计每个学生的总分。
    SELECT `name`,(chinese+english+math) FROM student;
    
    • 在所有学生总分加10分的情况。
    SELECT `name`,(chinese+english+math+10) FROM student;
    
    • 使用别名表示学生分数。
    SELECT `name` AS 姓名,(chinese+english+math+10) AS 总分 FROM student;
    
  • 在where子句中经常使用的运算符。
    请添加图片描述

  • 案例2:

    1. 查询姓名为赵云的学生成绩。
    SELECT * FROM student WHERE `name` = '赵云';
    
    1. 查询英语成绩大于90分的同学。
    SELECT * FROM student WHERE english > 90;
    
    1. 查询总分大于200分的所有同学。
    SELECT * FROM student WHERE (chinese+english+math) > 200;
    
    1. 查询math大于60 并且(and) id 大于4的学生成绩。
    SELECT * FROM student WHERE math >60 AND id>4;
    
    1. 查询英语成绩大于语文成绩的同学。
    SELECT * FROM student WHERE english > chinese;
    
    1. 查询总分大于200分 并且 数学成绩小于语文成绩,的姓王的学生。
    SELECT * FROM student WHERE (chinese+english+math) > 200 AND math<chinese AND `name` LIKE '王%';
    
  • 使用order by子句排序查询结果。

    1. order by指定排序的列,排序的列既可以是表中的列名,也可以是select语句后指定的列名。
    2. Asc升序[默认]、Desc 降序。
    3. order by 子句应位于select语句的结尾。
      请添加图片描述
  • 案例3:

    1. 对数学成绩排序后输出[升序]。
    SELECT * FROM student ORDER BY math;
    
    1. 对总分按从高到低的顺序输出。
    SELECT `name` AS 姓名,(chinese+english+math) AS 总分 FROM student ORDER BY 总分 DESC;
    
    1. 对姓李的学生成绩排序输出(升序)。
    SELECT * FROM student WHERE `name` LIKE '王%' ORDER BY (chinese+english+math);
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值