查询的sql语句:
查询数据库中的某张表的所有数据 : select * from 表名;
查询某张表中指定的列: select 列名,列名... from 表名;
按条件查询: select 列名,列名..... from 表名 where 条件;
含有运算符查询: ①:相等= 不等 != select 列名,列名..... from 表名 where age=25;
②:between a and b 注意前面那个数要比后面那个数要小 a<=x<=b :between and 是包含边界的
③:in(值1,值2,值3) 在指定值中任意取任一一个 。where 列名 in (值,值,值.......)等价于where 列名=值 or 列名=值 or 列名=值 .......
模糊查询: % 任意字符串 查询名字中含有 张 的学生的信息 select * from name like ‘%张%’
_表示匹配单个字符 name like '_张%' 第二个字为张的学员信息
模糊查询是非常消耗性能
判断非空: is null 判断该列值为空 不是null is not null
过滤重复数据: 查询排重:select distinct 列名 from 表名 [where 条件];
对查询结果进行排序: select * from 表名 order by 列名 asc , 列名 asc; asc是升序排列,desc是降序排列
我们如果多字段进行排序,规则按照前面的先排序,相同再按照后面的排序。
如果有多个列需要排序,用逗号隔开就行了。
别名: select 列名 as 别名,列名 as 别名,列名 as 别名.... from 表名 where 条件;
在使用别名的时候,as 关键字可以省略。
sql语句的聚合函数:
count函数:统计个数 select count(列名) from 表名
注意: count在根据指定的列统计的时候,如果这一列中有null 不会被统计在其中。
sum函数 :求和 select sum(列名) from 表名
avg函数 : 求平均值 select avg(列名) from 表名;
max,min函数: select max(score),min(score) from student 求出班级的最高分和最低分
group by分组函数: select … from … group by 列名,列名 如果使用group by 对数据进行分组之后还要过滤。
where 后不能跟 聚合函数,having中可以跟 聚合函数。
select 语句的执行顺序
标准SQL的解析顺序为:
(1)from 子句, 组装来自不同数据源的数据
(2)where子句, 基于指定的条件对记录进行筛选
(3)group by 子句, 将子句划分为多个分组
(4)使用聚合函数进行计算
(5)使用having子句筛选分组
(6) select将最终结果显示出来。
(7)使用order by 对结果集进行排序
多表查询
笛卡尔积介绍
select * from a,b;多个表名之间使用逗号隔开,查询到的结果是a表所有的数据和b表所有的数据进行相乘。
内连接查询 查询的结果:两表的公共部分。
语法一:select 列名 , 列名 .... from 表名1,表名2 where 表名1.列名 = 表名2.列名;
语法二:select * from 表名1 inner join 表名2 on 条件
外链接查询
左外连接:左表数据全部显示
语法:select * from 表1 left outer join 表2 on 条件;
右外链接:右边表数据全部显示
语法:select * from 表1 right outer join 表2 on 条件;
全外连接:左外连接和右外连接的结果合并,单会去掉重复的记录。
语法:select * from 表1 full outer join 表2 on 条件
Mysql的分页
分页sql格式是:select * from 表名 start,limit; 其中start是页码,limit是每页显示的条数。
select * from category limit 0,2; 查询category的第一页,每页显示2条数据。
sql语句的插入
insert into 表名(列名,列名) values(value1,value2)
sql语句的更新
update 表名 set 列名=value1 where 范围
sql语句的删除
delete from 表名 where 范围
索引的创建原则或者注意事项
1,经常用作查询选择的字段,建立索引。
2,限制索引的数目
索引的数目一般不要超过3个,最多不要超过5个。索引虽说提高了访问速度,但太多索引会影响数据的更新操作。
3,不要在有大量相同取值的字段上,建立索引
这样的字段(例如:性别)上不建议建立索引
4,尽量使用数据量少的索引
如果索引的值很长,那么查询的速度会受到影响。例如,对一个CHAR(100)类型的字段进行全文检索需要的时间肯定要比对CHAR(10)类型的字段需要的时间要多。
索引失效的情况有如下几种原因(不包括索引本身无效的情况)
1, CBO计算走索引花费过大的情况,mysql估计使用全表扫描要比使用索引快,则不使用索引。
2,对单字段建了索引,where条件确实查询了多字段(其中包括我们的单字段索引)
3,如果条件中有or,即使其中有条件带索引也不会使用
4,like查询是以%开头(以%结尾是可以的)