null:表示空值。在使用where条件子句刷选时 使用is null 或者is not null 不能使用=。
select name from stu where age is null==》正确用法,查询年龄信息为空的人名
select name from stu where age = null ===》查询的内容为空,不能这样使用
like子句:模糊匹配
like主要用于做一些简单的查询,或者称为模糊匹配。表达式主要涉及两个符号:
百分号:% 表示匹配任意多个字符
下划线:_ 表示匹配固定一个字符
select name from stu where name like '张%'==》查询名字以张开头的所有人
select name from stu where name like '%张' ==》查询名字以张结尾的所有人
select name from stu where name like '%张%' ==》查询名字中包含张的所有人
select name from stu where name like '张_'; ==查询名字叫张某的所有人,张后面只能是一个字符
select name from stu where name like '_张'; ===》查询名字叫某张的所有人
select name from stu where name like '_张_; ===》查询名字叫某张某的所有人
limit m..n
表示查询的数据从M行开始(起始行从0开始)往下数N行 1,5
select * from stu limit 3,4; ==》M为3,实际就是从第4行开始,往下数4行。就是4-7行
排序:order by (desc 降序,asc 升序)
select * from stu order by age asc==》将age字段进行升序排列 升序的asc可以不写
select * from stu order by age desc ==》将age字段进行降序排列
select * from stu order by class ,age desc; 以class字段进行升序的前提将age字段降序排列
分组:group by
将返回的数据进行分组,展示每个分组的第一条记录,其它数据隐藏,一般和聚合函数在一起使用。
分组的意义,就是为了统计和估量每个分组下指标情况,平均成绩,总成绩,统计人数
having:都是条件子句:过滤申明,筛选满足条件的组,就是在分组之后过滤数据,having子句中可以包含聚合函数
where:都是条件子句:约束申明,是在对查询结果分组前,将不符合条件的去掉,分组前过滤数据,where语句后面不能接聚合函数
聚合函数(聚组函数): 聚合函数后面不能带其它字段,只能带一个分组的字段
max():求最大值
select max(age) from stu ===》求表中最大年纪
select max(age) from stu where class=11==》求11班最大年纪
min()最小值
select min(age) from stu ===》求表中最小年纪
select min(age) from stu where class=11==》求11班最大年纪
avg()平均值
select avg(age) from stu ==》求平均年龄
count() 统计
select count(*) from stu where class=12==》统计12班的人数
sum()求和
select sum(age) from stu where class=11 ==》求11班的年龄之和
sql语句中的函数:
distinct() 去重
select distinct(class) from stu==》查询学生来自哪些班级,使用distinct去重
floor() 去浮点数
select floor(avg(age)),class from stu group by class==>去掉小数点部分,只保留整数部分
求出每个班的平均年龄==》avg(age) ,group by class
select avg(age).class from stu group by class
求年龄和大于85岁的班级以及年龄和
select sum(age),class from stu group by class having sum(age)>85
男生年龄和大于60岁的班级
select sum(age)as aa,class cc from stu where sex=1 group by cc having aa>60
数据表和数据库的备份
表:
1.创建一个新表和需要备份的表 表结构一样
create table student21 like stu
2.然后再将数据写入到新表
insert into student21 select * from stu ==》insert into student21 values(值),(值)
将stu表中所有字段数据写入到studen21表中
insert into student21(id,sex) select id,sex from stu
将部分字段数据写入新表中
数据写入的表必须存在,且没有任何数据
库:linux命令, .sql文件为数据库备份文件
show databases ===》查看有哪些库
use 库名 ==》进入某个库
show tables ==》查看库中所有的表
desc 表名 ==》查看表结构
select * from 表 ==》查看表所有数据
1.数据库备份
mysqldump -uroot -p密码 dcs>file1.sql
将dcs库备份为file1.sql文件 ===》file1.sql文件必须为不存在的文件
2.数据库还原
先在数据库中新建一个库==》create database dcs
msyql -uroot -p密码 dcs <file1.sql
|
|