MySQL指令Ⅲ

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;

 

 

 

 

面试题

havingwhere的区别

where后边跟的是表达式

having聚合函数结合起来使用 group by

 

select sex,count(sex) from person group by sex;

 

 

 

 select sex,count(sex) as 总数 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的时间类型:

  DATETIMEYYYY-MM-DD HH:MM:SS 最大值到9999

  TIMESTAMPYYYY-MM-DD HH:MM:SS    最大值到2038

  DATEYYYY-MM-DD

  TIMEHH:MM:SS

  YEARYYYY

 

通过日期筛选

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是数字的最大数(精度),其范围为“165”,默认值是10D是小数点右侧数字的数目(标度),其范围是“030”,但不得超过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)

    -> );

 

 

posted @ 2022-08-26 18:28  丶空·  阅读(27)  评论(0)    收藏  举报