测开相关(数据库操作)

基础的增删改查

插入

单行插入

语法:insert into 表名 values(数据);
例子:== insert into student values(1,‘张三’);==

多行插入

语法:insert into 表名 values(数据1),(数据2)…;
例子:insert into student values(3,‘王五’),(4,‘赵六’);

指定行插入

语法:insert into 表名 (列1,列2,列3…) values (数据);
例子:insert into student(name) values(‘小美’);

查询

全列查询

select * from 表名;

指定列查询

语法:select 列1,列2,列3… from 表名;
例子:selece id,name from exam;

表达式查询

语法:select 表达式 from 表名;
例子:查询所有学生各科成绩的总分
select id,name,chinese+math from exam;
设置别名
select id,name,chinese+math as total from exam;
注意:设置别名的时候,as是可以省略的,但是不建议省略.因为去掉之后SQL的可读性就会下降

去重查询

语法:select distinct 列名 from 表名;
注意:如果想要使用distinct的时候查询多列数据,那么必须多个列都相同,那么才会进行去重,否则就不会去重.

查询后排序

语法:select 列名/表达式/别名 from exam from 表名 order by 列名 asc/desc;
注意: 1.order by 列名后面的desc代表的是从大到小排序,而asc是从小到大排序.而如果什么都不写的话,默认就是从小到大排序!
2.当数据中出现null的时候,null被视为最小值,比表里的任何数据都小。

也可以使用别名,语法:==
select 表达式 as 别名 from 表名 order by 别名;==
例子:select name,chinese+math+english as total from exam order by total;

条件查询

语法:select 列名/*/表达式/别名 from 表名 where 条件; ==
例子:查询总分在200分以上的学生姓名及成绩
select name,chinese+math+english as total from exam where chinese+math+english>200;==
注意: 在where里面,不可以使用别名来代替表达式.但是可以使用别名
and和or就代表者&和|
注意:and和or同时使用的时候,and的优先级比or高,因此在使用and和or的时候,尽量使用()来表明优先级

范围查询

查询数学成绩在[80,90]之间的同学及其数学成绩
select name,math from exam where math between 80 and 90;或者select name,math from exam where math>=80 and math <= 90;
查询语文成绩是87,70,56,55其中一个的人及其语文成绩
select name,chinese from exam where chinese in (87,70,56,55);

模糊查询

查询姓孙的同学,并且名字是两个字
select * from exam where name like ‘孙_’;
在这个SQL语句中,我们使用了like关键词,并且使用了下划线. 其中一个下划线代表一个字符
查询姓孙的同学,无论名字有几个字
select * from exam_result where name like ‘孙%’;
在上述SQL语句,跟上一个例子不同的是,’ '里面是孙%而不是孙,这是因为%代表后面是任意多个字符_

分页查询

语法:select */表达式/列/别名 from 表名 limit n offset m;
查询总成绩在前三名的同学
select name,chinese+math+english as total from exam order by total desc limit 3;

修改

语法:==update 表名 set 列名 = 数据; ==
例子:将总成绩倒数前三名的数学成绩加30分
update exam set math = math+30 order by chinese+math+english limit 3;

删除

语法:detele from 表名 where…/order by …/limit n;

联表查询

create table student(studentId int,name varchar(50),classId int);
insert into student values(1,‘张三’,1);
insert into student values(2,‘李四’,1);
insert into student values(3,‘王五’,2);
insert into student values(4,‘赵六’,2);

== create table class(classId int,name varchar(20));
insert into class values(1,‘java1班’);
insert into class values(1,‘java2班’);==
* 在SQL中进行笛卡尔积,最简单的做法就是直接select from后面跟上多个表名,表名之间用逗号分割。*
在这里插入图片描述

inner join

select s.studentno,studentname,subjectno,studentresult from student as s inner join result as r
wheres.studentno = r.studentno;

left join

select s.studentno,studentname,subjectno,studentresult from student as s left join result as r
on s.studentno = r.studentno;

right join

select s.studentno,studentname,subjectno,studentresult
from student as s right join result as r
on s.studentno = r.studentno;

总结
inner join 返回两个表中都有的数据
left join 会从左表中返回所有的值,即使右表中没有匹配
right join 会从左表中返回所有的值,即使左表中没有匹配

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值