1sql语句分类
-DQL语句(数据查询语言) Select
–DML语句(数据操作语言) Insert / Update / Delete / Merge
–DDL语句(数据定义语言) Create / Alter / Drop / Truncate
–DCL语句(数据控制语言) Grant / Revoke
–TCL语句事务控制语句 Commit / Rollback / Savepoint
2列别名
列别名基本书写方法有两种方式:
–第一种方式:列名 列别名
–第二种方式:列名 AS 列别名
以下三种情况,列别名两侧需要添加双引号(""):
–列别名中包含有空格
–列别名中要求区分大小写
–列别名中包含有特殊字符
3连接运算符||
select firstname||lastname from emp;
4distinct取消重复行
ps消除重复行数据的几种方式
有重复数据主要有一下几种情况:
存在两条完全相同的纪录
这是最简单的一种情况,用关键字distinct就可以去掉
example: select distinct * from table(表名) where (条件)
.存在部分字段相同的纪录(有主键id即唯一键)
如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组
example:
select * from table where id in (select max(id) from table group by [去除重复的字段名列表,....])
没有唯一键ID
这种情况我觉得最复杂,目前我只会一种方法,有那位知道其他方法的可以留言,交流一下:
example:
select identity(int1,1) as id,* into newtable(临时表) from table
select * from newtable where id in (select max(id) from newtable group by [去除重复的字段名列表,....])
drop table newtable
5desc显示表结构
6比较运算符 =,>,>=,<,<=,<>
使用笔记运算符需要遵循以下原则
字符及日期类型需要早两端用单引号,
字符类型大小写敏感
日期类型格式敏感,默认格式“DD-MON月-RR(注意月后面加一个”月“字)
select ename,job
from emp
where hiredate > '04-2月-1981';
7特殊比较运算符 between...and... in,like, is null
like运算符的使用
使用like运算符完成模糊查询功能
使用通配符来代替未知的信息,常用的通配符有%和_
%可以代替任意长度字符(包括长度为0)
_可以代替一个字符
使用ESCAPE 标识符来查找带特殊符号的字符号。
查询JOB_ID以“FI_”开头的雇员信息。
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE job_id LIKE 'FI\_%' ESCAPE '\';
ESCAPE '\'表示为转义字符表示后面的_不是通配符
is null 查询包含空值的记录
8 逻辑运算符的使用 AND OR NOT
SELECT last_name, job_id, salary
FROM employees
WHERE job_id NOT IN ('IT_PROG', 'ST_CLERK', 'FI_ACCOUNT');
NOT运算符还可以和BETWEEN…AND、LIKE、IS NULL(IS NOT NULL)一起使用
9 运算符的优先级
查找工作超过16000并且职位是FI_ACCOUNT或是AD_VP的员工。
SELECT last_name, job_id, salary, department_id
FROM employees
WHERE (job_id = 'FI_ACCOUNT'
OR job_id = 'AD_VP')
AND salary > 16000;
查找职位是FI_ACCOUNT或工资超过16000的职位是AD_VP的员工。
SELECT last_name, job_id, salary, department_id
FROM employees
WHERE job_id = 'FI_ACCOUNT'
OR job_id = 'AD_VP'
AND salary > 16000;
10 ORDER BY 的使用
SELECT *|{[DISTINCT] 列名|表达式 [别名][,...]}
FROM 表名
[WHERE 条件]
[ORDER BY {列名|表达式|别名} [ASC|DESC],…];
不同数据类型排序规则(以升序为例)
–数字升序排列小值在前,大值在后。即按照数字大小顺序由小到大排列。
–日期升序排列相对较早的日期在前,较晚的日期在后。例如:’01-SEP-06’在’01-SEP-07’前。
–字符升序排列按照字母由小到大的顺序排列。即由A-Z排列;中文升序按照字典顺序排列。
–空值在升序排列中排在最后,在降序排列中排在最开始。
ORDER BY特殊使用
–ORDER BY子句可以出现在SELECT子句中没有出现过的列。
–ORDER BY子句后的列名,可以用数字来代替。这个数字是SELECT语句后列的顺序号。
查看公司员工信息,按照月薪由高到低排列,而具体的工资数不
显示。
SELECT last_name, job_id, hire_date
FROM employees
ORDER BY salary;
查看员工信息,结果按照按照job_id升序排列,月薪按照降序排列。
SELECT last_name, job_id, salary, department_id
FROM employees
ORDER BY 2, 3 desc