以下的指令适用于MYSQL环境。
1.查询所有记录
select * from table
2.模糊查询
select * from 表 where 字段 like '%查询条件%‘
替代方式,INSTR的效率会更高,例子如下:
select * from 表 where INSTR(字段,查询条件)>0
select * from info where INSTR(typefeild,'红色') > 0
3.关联表
查询格式,主要用到 left join table on 条件
微软不推荐from 后面写多个表名的做法。主要还是可读性、规范性方面的考虑。
4.排序
1:字段名为你要排序的字段。一般排序的字段为id、时间、点击量等等
2.asc为升序、desc为降序。
select * from 表名 order by 字段名 desc //降序
select * from 表名 order by 字段名 asc //升序
举个栗子
/**查询员工信息,要求工资按照从高到低进行排序(默认升序)**/
SELECT * FROM employees ORDER BY salary ASC;
/**方法2:**/
SELECT * FROM employees ORDER BY salary;
/**查询部门标号大于等于90的员工信息,并且按照入职时间进行先后排序**/
SELECT * FROM employees
WHERE department_id >= 90
ORDER BY hiredata ASC;
/**按照员工的年薪的高低显示员工的信息和年薪**/
SELECT *, salary*12(1+IFNULL(commission_pct,0) 年薪
FROM employees
ORDER BY 年薪 ASC;
/**按照姓名的长度显示员工的姓名和工资**/
SELECT LENGTH(last_name) 姓名字节长度 ,last_name,salary
FROM employees
ORDER BY 姓名字节长度;
/**查询员工信息,先按工资升序排序,在按照员工编号降序排序**/
SELECT * FROM employees ORDER BY salary ASC,employee_id DESC;
进阶练习:
/**选择工资不在8000-9000的员工的姓名和工资,按照工资的降序排序**/
SELECT last_name,salarty
FROM employees
WHERE salary NOT BETWEEN 8000 AND 9000
ORDER BY salary DESC;
/**查询邮箱中包含e的员工信息,先按照邮箱的字节数升序排序,在按照部门的降序排序**/
SELECT *
FROM employees
WHERE email LIKE('%e%')
ORDER BY LENGTH(email) ASC, department_id DESC
5.读取前几条数据
select * from 表名 limit 10
6.去重复
select distinct 字段名 from 表名
7.分组
关键字:grounp by
例子,按照site_id进行分组并统计count
SELECT site_id, SUM(access_log.count) AS nums
FROM access_log GROUP BY site_id;
8.取交集
select * from 表A,表B where A.ID=B.ID