Mysql的基本查询
mysql数据库的增删改查
- 数据库的基本查询
语法:select 查询的内容 from 表 where 条件1 and 条件2 ……
例如:-- 1查询student表里所有的学生姓名
select username from student
-- 2查询指定列的别名(通过as来定义别名)
select userid as '学号',username as '姓名' from student;
-- 3计算列
select age+5 from student //数字列是个进行计算的
select concat(username,"韩梅梅") from student //非数字列调用方法进行追加拼接
-- 4去掉重复查询学生姓名(distinct)
select distinct username from student //去重用distinct关键字
-- 5查询指定行数的数据(limit)
select * from student limit 0,5
//采用limit关键字来约束想要查询的具体行数信息,在后期分页功能时会经常用到
-- 6范围查询18-22岁所有学生信息 (between and | >= <=)
select * from student where age>=18 and age<=22 //采用运算符方式
select * from student where age between 18 and 22 //采用between 开始值 and 结束值查询
-- 7等值判断查询18-22岁所有学生信息(in | noy in)
select * from student where age in (18,19,20,21,22) //采用in/not in 来进行等值判断
-- 8模糊查询(like)
select * from student where username like '%李%' //查询名字中包含李字的所有人信息
select * from student where username like '_李%' //查询名字第二个字是李的人信息
注意:%表示任意长度的字符;_下划线只表示一位任意字符
-- 9排序(order by 组别 asc默认升序 | desc降序),查询2班的所有学生姓名并按照学号降序排序
select userid,username from student where classid='2班' order by userid desc
-
数据库的新增
语法:insert into 表名 (字段1,字段2,字段3……)values(值1,值2,值3……)
注意:值和字段要一一对应-- 1新增一条学生信息 insert into student (username,sex,age,classid)values(“李华”,"男",18,"2班") //注意在建表的时候,id是唯一的,所以一般设置成主键和自动增长,所以插入数据时可以不用加id -- 2如果表中有时间字段,新增一条带有时间的数据 insert into student (username,sex,age,classid,updateTime)values(“李雷”,"男",18,"2班",now()) //通过调用now()方法获取现在计算机的系统时间
-
数据库的更改
语法: update 表名 set 字段1=新值1,字段2=新值2,……where 条件 -
数据库的删除
语法:delete from 表名 where 条件表达式"
聚合函数
作用进行统计,返回单行数据
函数:sum(),count(),max(),min(),avg()
例如:
select count(userid) as '计数总人数'
select sum(userid) as '总和'
select max(age) as '最大值'
select min(age) as '最小值'
select avg(age) as '平均数'
分组统计
分组的关键词:group by
对分组的结果进行筛选:having
执行顺序:from-> where -> group by -> select -> having -> order by
例如:-- 1查询2班所有男生的姓名和人数和年龄,按升序排序并按照年龄分组显示
select age,username,count(userid) from student where classid='2班' group by age,classid having sex='男' order by userid asc
-- 2选择计数 case when then 如果……就选择……否则就选择……
--如果为男则取1,否则取0
select count(case sex='男' when 1 then 0 end) as '男' from student
多表操作
子查询
-
select中嵌套
-- 查询所有学生的信息以及班级名称 select * ,(select classname from class where class.classid=student.classid) as '班级名称' from student
-
from中嵌套
-- 查询李姓同学的最大分数 select max(score) from (select * from student where username like '李%')
-
where 中嵌套
--查询分数大于60分的学生信息 select * from student where userid in( select userid from score where grade>60)
表联接
-
内联接 inner join -> join
语法:select 列名 from 表1 join 表2 on 表1.共同列名=表2.共同列名例如: select grade from student s [inner] join score sc on s.userid=sc.userid
-
外联接
-
左外联接
用法:left outer join 或者 left join例如:select grade from student s left join score sc on s.userid=sc.userid
-
右外联接
用法:right outer join 或者 right join例如:select grade from student s right join score sc on s.userid=sc.userid
- 自联接
用法可以使用内联接或者外联接,但所联接的时同一张表