limit:限制(工作中千万不能全量查询:会把数据库的服务器搞死)
限制表的查询个数
select * from user limit 3;
select * from user order by age asc;(升序,默认asc,可加可不加)
select * from user order by age desc;(倒序)
select * from user order by name;(ascil码:把字母处理成数字,实现从小到大的排序)
python中可以使用 ord(“任意字母”)来查看字母对应的数字
(a=97)
select count(1) from user;
select sum(age) as 总和 from user;
select avg(age) as 平均年龄 from user;
select max(age) as 最大年龄 from user;
select min(age) as 最小年龄 from user;
去重distinct
select distinct age from user;
面试题
having和where的区别
where后边跟的是表达式
having聚合函数结合起来使用 group by
select sex,count(sex) from person group by sex;
总数 from person group by sex having 总数>1;
查询两个或两个以上关联表共同拥有的数据inner
select * from good inner join shop on good.id=shop.good_id;
select * from good inner join shop on good.id=shop.good_id where good.id=1;
select good.name,shop.name,shop.level from good inner join shop on good.id=shop.good_id;
select g.name,s.name,s.level from good g inner join shop s on g.id=s.good_id;(别名)
select * from good inner join shop on good.id=shop.good_id inner join city on shop.id=city.shop_id;(三个表的关联)
select g.address,c.name from good g inner join shop s on g.id=s.good_id inner join city c on s.id=c.shop_id;
内链接分为左链接和右链接
左链接
1、先走内连接的逻辑
2、再查询出左表所有的数据
select * from good g left join shop s on g.id=s.good_id;
右链接
select * from good g right join shop s on g.id=s.good_id;
子查询
子查询的逻辑:里面的SQL执行的结果是,是外面SQL执行的结果是输入
select name,level from shop where good_id in
-> (select id from good)
-> ;
select name,level from shop where good_id in
-> (select id from good where address="xian");
能子查询的必然能内查询
select s.name,s.level from good g inner join shop s on g.id=s.good_id where g.skid="g001";
列的约束
AUTO_INCREMENT:自增
PRIMARY KEY:主键
NOT NULL:不为空
unique:唯一性
default:默认
MySQL的时间类型:
DATETIME:YYYY-MM-DD HH:MM:SS 最大值到9999
TIMESTAMP:YYYY-MM-DD HH:MM:SS 最大值到2038年
DATE:YYYY-MM-DD
TIME:HH:MM:SS
YEAR:YYYY
通过日期筛选
select * from user where birthday between "1996-01-01 12:12:12" and "2000-01-01 00:00:00" ;
MySQL小数点:
FLOAT:单精度
DOUBLE:双精度
DECIMAL (M, D):D代表小数点前的位数,M代表小数点后的位数
语法格式“DECIMAL(M,D)”。其中,M是数字的最大数(精度),其范围为“1~65”,默认值是10;D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M。
create table personinfo( id int primary key, name varchar(20), salary decimal(7,2) );
创建带有索引的表
create table userindex
-> (
-> id int primary key,
-> name varchar(20),
-> code varchar(18),
-> index code_index(code)
-> );
给本身已有的表怎加索引
alter table user add index user_index(name);
删除索引
drop index user_index on user;
薪资总和,平均薪资、最大薪资、最小薪资
select sum(salary) 总和,avg(salary) 平均工资,max(salary) 最大薪资,min(salary)最小薪资 from salaries;
最大薪资减去最小薪资
select(
-> (select max(salary) from salaries)
-> -
-> (select min(salary) from salaries)
-> );