码迷,mamicode.com
首页 > 数据库 > 详细

mysql基础

时间:2015-10-09 00:30:12      阅读:295      评论:0      收藏:0      [点我收藏+]

标签:

select 语句

select语句可以从一个或者多个表中选取特定的行和列,结果通常是生成一个临时表。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列,并将结果放到一个临时的表中,这就是实现选择和投影运算的一个形式。

语法格式

select  ****

from 子句

where 子句

group BY 子句

having 子句

order by 子句

limit 子句

定义别名

使用as子句来更改查询结果的别名

语法格式

select columnName as column_alias

 替换结果中的数据

select 学号,姓名,

(case

when  总学分 is null then “尚未选择”

when 总学分 < 50 then “不及格”

when 总学分 >= 50 and 总学分 < 60 then “及格”

when 总学分 >= 60 and 总学分 < 80 then “良好”

when 总学分 >= 80 and 总学分 < 100 then “优秀”

else “满分"

end as 等级

from xs

where 专业 = ”计算机“;

count函数

用于统计族中满足条件的行数或者总行数,

count(expression)

expression中值为空时,会不会跳过?会的,会被跳过,不计入总数

sum/avg函数

分别用于求表达式中所有值项的总和与平均值

sum与group by 一起,求各组的和

 

全连接

连接的第一种方式就是将各个表用逗号分隔,这样就是指定了全连接。新表是每个表的每个行都与其他表中的每行交叉可以产生所有的可能组合,也就是笛卡尔积

这样可能得到的行数可能为每个表中行数之积,

等值连接

在全连接的前提下,用where子句设置条件来将结果集减少为易于管理的大小,这样即为等值连接。

内连接

内连接是系统默认的,和等值连接是一样的。

高级

show profile for query num,查看每条数据的执行时间

分页查询

select * from tableName limit(offset ,size);

eg.

select * from tb_stu limit(10000,10);

 外连接

左连接,结果表中除了匹配行外,还包括左表有但是右表中不匹配的行,对于这样的行,从右表被选择的列设置为null

右连接,与列连接类似,相反

操作同一张表时,为了避免出现A1中的索引B1中没有,B1 中有的索引而A1中没有

所以可以用一个只查询所有索引的临时表来left joinA1和B这样就不会出现索引不全的问题了

 

 

 

senior

select * from tb_stu where id>10000 limit(10);

在百万级数据分页时优选,但是这种做法有个前提是数据的完整性,数据的id必须都在,但实际是由的会被物理删除,对应的解决办法是不物理删除,执行逻辑删除,设置一个is_delete关键字

延迟关联技巧

select tb_stu.id ,name ,age from tb_stu inner join (select id from tb_stu from tb_stu limit(100000,10)) as tmpTable on tmpTable.id = tb_stu.id;

利用索引提高百万级数据的分页效果

 

mysql基础

标签:

原文地址:http://www.cnblogs.com/rocky-AGE-24/p/4862587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!