复习:
① 创建数据库 xx: create database xx;
② 使用数据库 xx : use xx;
③ 创建表 xx:
create table xx(
列名 列类型 not null auto_increment ,
列名 列类型,
列名 列类型
)
④ 删除表:drop table xx;
⑤ 删除数据库drop database xx;
⑥ auto_increment 为自增通常和主键约束(primary key(id主键列)) 搭配使用,目的是:不重复,给每行数据 一个唯一标识。
⑦ 为pet表添加一条记录:

insert into  pet values( 1,'旺财','公','牧羊犬',2 );

insert into  pet(pname,psex,type,age ) values( '旺财','公','牧羊犬',2 );

⑧ 更新数据操作
为名字为‘旺财2’的宠物添加pid
update pet set pname=‘旺财2’ where pid=2

所有的宠物 年龄加1

update pet set age=age+1

删除 id 是4 的数据

delete  from  pet where pid=4

查询

  1. 查询格式:select 列 ,列… from 表 where 条件;
    例:
    select pid,pname ,psex ,age from pet where age>=5 ;
    select * from pet;
  2. 起别名格式:列 as ‘别名’(as 可以省略 ‘’ 或 ""都行 )
    例:
    Select pid ,pname ‘姓名’ ,pname from pet
    Select pid,pname as “姓名” ,pname from pet
    select stu.sno from s_student as stu
    SELECT SNO sno,SNAME sname FROM s_student
  3. 排序:order by 列 asc 或DESC(通常放在查询的最后面,默认是 asc 升序)
    例:select * from pet where psex='公' order by age desc ; (先按照 性别排序,然后相同性别的情况下,再根据年龄排序)
    select * from pet order by psex DESC , age asc;(根据性别降序,年龄升序进行排序查询)
  4. Where:后面加查询条件 ;and:并且;or:或者
    例:
    查询 公的 并且 年龄大于5岁的宠物
    select * from pet where psex=‘公’ and age>5

查询 公的 或者 年龄大于5岁的宠物

select * from pet where psex='公' or age>5 
(> < >= <=  不等于 :  != , <>)

查询所有公的的宠物

select * from pet  where psex !='母'
 select * from pet  where psex <> '母'
  1. 查询 空不空
    查询 所有 没有 生日的 宠物

select * from pet where birthday is null;
select * from pet where birthday is not null;

  1. 将 pet 表 添加 一列 birthday date 类型
    ALTER table pet add COLUMN birthday date;

7)关键字in:列 in (值1,值2,值3…)
查询列的值在括号中的记录:适用于不连续的、有限个数的值
例:查询 宠物年龄 是 3或5或7 的 记录

select * from  pet where age =3  or age=5 or age=7;
 select * from pet where age in (3,5,7) -- 查询 年龄段 是 3~7 的 宠物记录
 select * from  pet where age>=3 and age<=7

8)between and 查询格式:列 between 值1 and 值2 :
查找 列的值 是 值1 到值2 的范围的值(包含端点)
select * from pet where age BETWEEN 3 and 7;相比较( age>=3 and age<=7)高效一些
9) like 模糊查询 :格式 :列 like ‘%值%’
‘%’代表任意个任意字符(0~无穷)
‘_’代表任意一个字符
例:select * from pet where pname like '___' 练习:
①  查询 生日 是 1976-01-23 以后出生的人

SELECT * FROM s_student WHERE SBIRTH >'1976-01-23';

② 查询 95031 班的所有 男生

SELECT * FROM s_student WHERE SSEX = '男' AND CLASSES =’95031 ’

③ 查询 姓曾的 人

SELECT * FROM s_student WHERE SNAME LIKE '曾%'

④ 查询 姓曾的 并且是3个字的人

SELECT * FROM s_student WHERE SNAME LIKE '曾__'

⑤ 查询 学号在 105 ~108 的 学生信息

SELECT * FROM s_student WHERE SNO BETWEEN 105 AND 108

⑥ 查询 学号是 101 , 102, 103 ,104 这样的人

SELECT * FROM s_student WHERE SNO IN ( 101 , 102, 103 ,104)
或SELECT * FROM s_student WHERE SNO BETWEEN 101 AND 104

10)distinct:行级的去重复,将结果级中的行数据比较重复的干掉

SELECT DISTINCT  psex, type from pet;

11)多行函数 (聚合函数 方法) 会将结果集进行统计汇总变成一行
常见的聚合函数:avg()、max()、min() 、sum() 、count()
例:

select count(*),max(age),min(age),avg(age),sum(age) from pet ;
select count(*) from pet where psex='公'
select count(birthday) from pet where psex='公'

注意 :
1、count(列名 或 ) 如果是列名统计的是非null的记录数
2、count (
) 就是统计记录数量
3、使用聚合函数不建议加其他的非聚合函数的列
4、聚合函数不能直接用在where 后面

如: select max(age),pname from pet;(无意义)

12)分组格式:group by 列 having 条件
① 宠物按照性别分组

select count(*) ,avg(age) ,max(age) ,psex from pet group by psex;

② 统计一下各班级的人数信息

Select classes ,count(*)  from  s_student  group by classes ;

③ 统计一下各班 男生人数,且班级按降序排列

select  classes,count(*)  '人数'  from s_student  where ssex='男'  group by classes  order  by  classes  desc;

④ 统计男生人数大于2的班级及其人数

select  classes,count(*)  '人数'  from s_student where ssex='男' group by classes  having count(*)>2;

练习:
统计每个品种的宠物数量;

SELECT type,COUNT(*) FROM pet GROUP BY type

统计 每个品种中 名字中带财的宠物数量 ;

SELECT type,COUNT(*) FROM pet WHERE pname LIKE "%财%" GROUP BY type

统计 每个品种的宠物数量找出宠物数量大于2 的品种;

SELECT type,COUNT(*) FROM pet GROUP BY type HAVING COUNT(*)>2

统计每个品种每种性别的宠物数量 ;

SELECT psex ,type,COUNT(*) FROM pet GROUP BY type,psex