MySQL的操作表CURD(基础)

准备数据:

 drop table if exists student;
 create table student(
  id INT, 
  sn INT, 
  name VARCHAR(20), 
  qq_mail VARCHAR(20) 
  );

插入

– 单行全列插入

insert into student values(1,1001,'baby','12345@qq.com'); 
insert into student values(2,1002,'baby2','123452@qq.com');

每次只能插入一行,且每一个字段要和数据库对应
在这里插入图片描述

每一行就是一个学生,每一列就是一个学生的某个属性。
对应类来说: 每一行就是一个学生对象,每一列就是一个学生的某个属 性。

– 指定列,多行插入

insert into student(id,sn,name) values(3,1003,'xx1'),(4,1004,'xx2');

在这里插入图片描述
如果没有指定某个字段的值,那么默认是NULL.

查询

– 全列查询

select * from student; 

– 查询指定列

select name from student;

在这里插入图片描述

-- 创建考试成绩表
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 name, chinese + english + math total FROM exam_result ORDER BY total DESC;
在这里插入图片描述

例:–查询同学各门成绩,依次按 数学降序,英语升序,语文 升序的方式显示
SELECT name, math, english, chinese FROM exam_result ORDER BY math DESC, english, chinese;
在这里插入图片描述

去重

select distinct math from exam_result;
在这里插入图片描述

这样的SQL语句是否也可以去重?
mysql> select id,name, distinct math from exam_result;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘distinct math from exam_result’ at line 1
以上这条语句位置不对!!需要把去重放在第一位!!
mysql> select distinct math, id,name from exam_result;
在这里插入图片描述

那么,去重的原理到底是什么?
去重 针对的是所有的字段!!只有当select distinct math, id,name from exam_result;中 的三个字段同时重复的时候,才会去重!!!

排序 order by

–从低到高排序

将查询结果 按照,根据数学成绩进行从低到高排序的排序

select * from exam_result order by math;

或者:

select * from exam_result order by math asc;

在这里插入图片描述

–从高到低排序

select * from exam_result order by math desc;

在这里插入图片描述

–关键字建表:

desc实际上是一个 关键字
假如你要创建的表名为关键字,一定要加 ``

-- ESC 下面那个键 
drop table if exists `desc`; 
create table `desc`( 
id int, 
name varchar(10) 
);

–对于要排序的字段为NULL的时候

insert into exam_result values(8,‘唐三 藏’,67,NULL,80);
在这里插入图片描述
从小到大排序
select * from exam_result order by math asc;
在这里插入图片描述
从大到小排序
select * from exam_result order by math desc;
在这里插入图片描述

–排序总结

1、order by asc 和 order by 默认是从低到高进行排序的
2、order by desc 是从高到第排序的
3、对于MySQL的关键字 ,在用作变量名的时候,一定要 加符号:``

修改 update

UPDATE table_name SET column = expr [, column = expr …] [WHERE …]
[ORDER BY …] [LIMIT …]

原表:
在这里插入图片描述

– 将孙悟空同学的数学成绩变更为 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 math+english+chinese limit 3;

– 将所有同学的语文成绩更新为原来的 2 倍

update exam_result set chinese=chinese*2 ;

删除

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

– 删除孙悟空同学的考试成绩

delete from exam_result where name="孙悟空";

– 删除整张表数据
– 准备测试表

DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
 id INT,
 name VARCHAR(20)
);

– 插入测试数据

INSERT INTO for_delete (name) VALUES ('A'), ('B'), ('C');

– 删除整表数据

DELETE FROM for_delete;

删除数据

直接删除表:会删除表内所有的数据,但是这张表还是存在的,只不过里面没有数据了!!

delete from exam_result;

在这里插入图片描述

删除表本身

drop table exam_result;

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值