MySQl学习记录3 :查询笔记
2015-04-28 22:17
567 查看
参考书目 《SQL学习指南》
select子句用于在所有可能的列中, 选择查询结果集要包含哪些列.
select 还可以添加:
字符, 比如数字或字符串
表达式;
调用内建函数, 比如ROUND(transaction.amount,2)
用户自定义函数调用
- 永久表(create table)
- 临时表(子查询所返回的表)
- 虚拟表(create view创建)
上面的代码创建了视图
没明白
降序
查找姓氏中以a为第二个字符,并且e在a后面任意位置出现的.
- 表达式可以为null但不能等于null
- 两个null值彼此不能判断为相等
为了测试表达式是否为null,需要使用null操作符
检查列中数据是否被赋值,可以用IS NOT NULL.
select子句
select语句中的第一个组成部分, 但实际在数据库服务中,他是最后被评估的. ,select name from department; select * from department;
select子句用于在所有可能的列中, 选择查询结果集要包含哪些列.
select 还可以添加:
字符, 比如数字或字符串
表达式;
调用内建函数, 比如ROUND(transaction.amount,2)
用户自定义函数调用
select emp_id, 'ACTIVE', emp_id * 3.14159, upper(lname) from employee;
列的别名
select emp_id, 'ACTIVE' status, emp_id * 3.14159 empid_x_pi, upper(lname) last_name_upper from employee;
去重复的行
select distinct emp_id from employee
from
表分类:- 永久表(create table)
- 临时表(子查询所返回的表)
- 虚拟表(create view创建)
子查询产生的表
select e.emp_id,e.fname,e.lname from (select emp_id,fname,lname,start_date,title from employee) e;
视图
create view employee_vm as select emp_id,fname,lname, YEAR(start_date) start_year from employee;
上面的代码创建了视图
select * from employee_vm;
表连接
从两个表提取数据没明白
select employee.emp_id, employee.fname, employee.lname,department.name dept_name from employee INNER JOIN department ON department.dept_id = employee.dept_id
定义别名
select e.emp_id ,e.fname,e.lname, d.name as dept_name from employee as e inner join department as d on d.dept_id = e.dept_id
where
selcet emp_id, fname, lname, start_date, title from employee where (title = 'Head Teller' AND start_date > '2006-01-01') or (title = 'Teller' and start_date > '2007-01-01');
group by 和 having
groupby用来分组, having用来对分组后的数据进行过滤select d.name, count(e.emp_id) mum_employees FROM department d INNER JOIN employee e on d.dept_id=e.dept_id group by d.name having COUNT(e.emp_id)>2;
order by
orderby 对id和product同时排序.select open_emp_id, product_cd from account order by open_emp_id, product_cd
降序
select open_emp_id, product_cd from account order by open_emp_id desc
根据表达式排序
right(str,len)最后len个字符排序select cust_id, cust_type_cd, city, state, fed_id from customer order by RIGHT(fed_id, 3)
根据数字占位符排序
第二列五列排序select status, account_id, custmer_id, avalable balance from employee order by 2,5;
匹配条件
通配符
通配符 | 匹配 |
---|---|
_ | 一个字符 |
% | 任意数目的字符(包括0) |
select lname from employee where lname like '_a%e%'
正则表达式
select emp_id, fname, lname from employee where lname regexp '^[FG]'
查找姓氏中以a为第二个字符,并且e在a后面任意位置出现的.
select * FROM individual where fname regexp '^.a.*e.*'; select * FROM individual where fname like '_a%e%'
null 关键字
使用null要记住:- 表达式可以为null但不能等于null
- 两个null值彼此不能判断为相等
为了测试表达式是否为null,需要使用null操作符
select emp_id, fname, lname, superior_emp_id from employee where superior_emp_id IS null
检查列中数据是否被赋值,可以用IS NOT NULL.
相关文章推荐
- MySQL学习笔记(5)——插入、查询记录
- mysql学习笔记之八(单表数据记录查询)
- mysql学习笔记之九(多表数据记录查询)
- [MySQL]学习笔记- 用户行为表中,查询每个人的一条最新行为(分组 排序 取时间最大的一条记录)
- mysql查询优化学习笔记
- MySQL学习笔记 3:子查询、连接、运算符和函数
- 44.笔记 MySQL学习——相关子查询
- MySQL学习笔记9:连接查询
- OAF学习笔记-1-空 和 % 查询所有记录
- mysql学习笔记-创建用户以及登录,基本信息查询
- php学习笔记(二)php与mysql连接与用php发送SQL查询
- MySQL学习笔记7:基本查询
- MySQL学习足迹记录12--使用子查询
- 【数据库学习笔记】MySQL_02_查询,约束
- MySQL学习笔记7(查询数据)
- OAF学习笔记-1-空 和 % 查询所有记录
- MySQL学习笔记8:函数查询
- Mysql学习笔记十——union查询
- MYSQL学习笔记 (六)explain分析查询
- 46.笔记 MySQL学习——将子查询改写为连接