我的学习之路-Oracle数据库之简单的查询语句

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值