(Oracle学习笔记) sql语言

文章目录

一、sql特点

1、功能一体化
几乎涵盖了对数据库的所有操作,语言风格统一
2、高度的非过程化的语言
用户只需要说明“做什么”,而不需要说明“怎样做”。大大减轻了用户的负担,同时降低了对用户的技术需求
3、面向集合的操作方式
不仅仅查询结果可以是多条记录的集合,插入、删除、修改操作的对象也可以是多条记录的集合,大大提高了我们对数据的操作效率。
4、多种使用方式
可以直接以命令的方式与数据库进行交互,也可以嵌套到其他高级语言中使用。
5、简介、易学
Sql语言命令数量有限,语法简单,接近自然语言

二、sql语言分类

数据查询语言;DQL,select
数据操作语言:DML,insert、update、delete
事务控制语言:TCL,commit、savepoint、rollback
数据控制语言:DCL,grant、revoke
数据定义语言:DDL,create、alter、drop

三、表空间

查询表空间

在这里插入图片描述

创建表空间

在这里插入图片描述

修改表空间名称

在这里插入图片描述

增加表空间大小

在这里插入图片描述

减小表空间大小

在这里插入图片描述

删除表空间

在这里插入图片描述

四、用户管理

查询用户

在这里插入图片描述

新建用户

在这里插入图片描述

修改用户口令

在这里插入图片描述

修改默认表空间

在这里插入图片描述

解锁用户

在这里插入图片描述

删除用户

在这里插入图片描述

五、权限管理

授权操作

在这里插入图片描述

权限再操作

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

撤销权限

在这里插入图片描述
系统权限在撤销父类权限后,对子类权限无影响。
对象赋权

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

撤销对象权限

在这里插入图片描述
在这里插入图片描述
对象权限在撤销父类权限后,子类相应的权限也被撤销。

六、用户和权限查询

1、查询所有用户

在这里插入图片描述

2、查询用户名,用户id,创建时间

在这里插入图片描述

3、查询当前用户详细信息

在这里插入图片描述

4、查询当前用户被授予的角色

在这里插入图片描述

5、查询全部用户被赋予的角色

在这里插入图片描述

6、查询系统所有角色

在这里插入图片描述

7、查询当前用户所具有的权限

在这里插入图片描述

七、角色

系统预定义角色
CONNECT
CREATE SESSION 创建会话
RESOURCE
CREATE SEQUENCE 建立序列
CREATE TRIGGER 建立触发器
CREATE CLUSTER 建立聚簇
CREATE PROCEDURE 建立过程
CREATE TYPE 建立类型
CREATE OPERATOR 创建操作者
CREATE TABLE 建表
CREATE INDEXTYPE 创建索引类型
EXP_FULL_DATABASE:数据库的导出
IMP_FULL_DATABASE:数据库导入

创建角色

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

查询用户所具有的角色

在这里插入图片描述

修改角色密码

在这里插入图片描述

激活角色

在这里插入图片描述

删除角色

在这里插入图片描述

八、profile管理密码

1、设定密码错误次数及锁定时间

创建profile文件
在这里插入图片描述
指定用户使用所创建的文件

在这里插入图片描述
在这里插入图片描述

2、设定密码过期时间

在这里插入图片描述
修改profile
在这里插入图片描述
删除profile
在这里插入图片描述

九、数据类型

1、数值类型number(precision,scale)

precision表示数字中的有效位(从左边开始第一个不为0的数算起,小数点和负号不会计入有效位数)
scale表示精确到多少位,默认值为0,大于0时表示经确定小数点多少位

2、字符类型char,varchar2

Char类型与char类型或者字符串常量进行比较时,在比较时,使用补齐空格的方式进行比较。
Varchar2类型与varchar2类型,char类型或字符串常量进行比较时,不补充空格,直接比较。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、日期类型

Date
保存日期和时间,常用的日期处理都可以使用该类型。
Timestamp
不仅可以保存日期和时间,还能保持小数秒
在这里插入图片描述
在这里插入图片描述

Sysdate:返回系统当前时间
Sysdate+1:当前时间加1天
Sysdate-1/24:当前时间减1小时
在这里插入图片描述

日期格式直接相减算天数差,单位为天,时分秒换算成小数
在这里插入图片描述
将日期转化为字符串
在这里插入图片描述
将字符串转化为日期to_date(char,Format)
在这里插入图片描述
返回日期格式的某一部分内容Extract(date from datevalue)
在这里插入图片描述
Add_months(date,months) 在date日期上增加月份
在这里插入图片描述

4、rowid

用于定位数据库中一条记录,包含数据物理存储地址,伪列,通过rowid来查询数据,能最快定位到数据。
在这里插入图片描述

十、创建表

在这里插入图片描述
创建表副本
在这里插入图片描述

十一、维护表

更改表名

在这里插入图片描述

删除列

在这里插入图片描述

新增列

在这里插入图片描述

修改列属性

在这里插入图片描述

修改表状态

在这里插入图片描述

表删除

在这里插入图片描述

查询表是否在回收站中

在这里插入图片描述

恢复已删除表

在这里插入图片描述

完全删除

在这里插入图片描述

十二、非空约束

建表时创建非空约束
在这里插入图片描述
通过修改表字段,添加非空约束
在这里插入图片描述

十三、主键约束

建表时创建主键

在这里插入图片描述
在这里插入图片描述

删除主键

在这里插入图片描述

添加主键

在这里插入图片描述

主键自增长:序列

创建序列
在这里插入图片描述

Increment:增长步幅
Start with :从多少开始
Nomaxvalue/maxvakue:有无最大值
Currval:表示序列当前的值
Nextval:获取序列下一个值,新序列首次使用时,必须先调用nextval进行序列初始化才能调用currval

使用序列实现主键自增长

在这里插入图片描述

删除序列

在这里插入图片描述

十四、唯一约束

创建

在这里插入图片描述

删除

在这里插入图片描述

添加组合唯一约束

在这里插入图片描述

十五、外键约束

创建

在这里插入图片描述
在这里插入图片描述

十六、检索数据

1、简单查询

在这里插入图片描述

查询日期

默认以简体中文格式展示
在这里插入图片描述
以英语格式显示日期
在这里插入图片描述
自定义日期展示格式
在这里插入图片描述

带有表达式的select子句

在这里插入图片描述

为列指定别名

在这里插入图片描述

结果去重

在这里插入图片描述

处理null,nvl函数

在这里插入图片描述

连接字符串

||拼接
在这里插入图片描述

Concat函数拼接

在这里插入图片描述

十七、筛选查询

1、比较查询

常用比较符:=、A!=B或A<>B、>、<、>=、<=
查询工资>1500的员工编号,员工姓名,员工工资:
在这里插入图片描述
特殊比价
A{operator} ANY (B),表示A与B中任何一个元素进行operator运算符比较,只要有一个比较值为真,就返回数据行
A{operator} ALL (B),表示A与B中任何一个元素进行operator运算符比较,所有比较值为真,才返回数据行
查询工资为1600和800的员工编号,员工姓名,员工工资:
在这里插入图片描述
查询工资不等于1600和800的员工编号,员工姓名,员工工资:
在这里插入图片描述

2、like关键字使用

%:代表一个或多个字符
_:代表一个字符
在这里插入图片描述
通配符连用,查询姓名以S开头,并且第三个字符为O的员工信息
在这里插入图片描述
查询在81年被雇佣的员工
在这里插入图片描述

定义转义字符,escape

查询I?_???:
在这里插入图片描述

_表示普通‘_’

in关键字

判断某一字段值是否在一组值中出现
查询是销售员和文员的员工编号,员工姓名,员工工作:
在这里插入图片描述
查询不是销售员和文员的员工编号,员工姓名,和员工工作:
在这里插入图片描述

Between…and关键字

判断某列值是否在指定区间内
查询工资在2000和3000之间的员工编号,员工姓名,员工工资
在这里插入图片描述

Is null关键字,判断某个字段是否为null

查询无奖金的员工姓名,工资,奖金:
在这里插入图片描述
查询有奖金的员工姓名,工资,奖金:
在这里插入图片描述

逻辑筛选

在where子句中使用逻辑运算符and,or和not进行逻辑判断
查询工资大于等于2000并且小于等于3000的员工姓名,编号,工资:
在这里插入图片描述
查询工资小于2000或大于3000的员工编号,员工姓名,员工工资:
在这里插入图片描述

十八、分组查询

Select字句后面只可以有两类表达式:统计函数和进行分组的列名
在这里插入图片描述
Group by常用的聚合函数
Avg 返回一个数字列的平均值
Count 返回查询列的结果记录数
Max 返回数字列的最大值
Min返回数字列的最小值
Sum 返回数字列的总和
在这里插入图片描述

查询每个部门每个岗位的平均工资和最高工资
在这里插入图片描述

Group by改变分组排序

查询每个部门部门号,工资总额,并根据工资总额降序排列
在这里插入图片描述

Having子句限制分组结果,与group by连用

查询每个部门平均工资大于2000的部门号以及部门平均工资
在这里插入图片描述

十九、排序查询

单列排序

在这里插入图片描述
在这里插入图片描述

在order by 中使用列号进行指定排序

在这里插入图片描述

使用非选择列进行排序

在这里插入图片描述

多列排序

首先第一列进行排序,当第一列存在相同数据时,再以第二列进行排序
在这里插入图片描述

二十、多表查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、内连接

关键字INNER JOIN 来实现,其中 INNER可以省略,使用关键字内连接时,必须使用ON关键字设定连接规则
使用内连接进行多表查询时,返回的结果中只包含与查询结果和连接条件相匹配的行。内连接消除了与另一个表中不匹配的行。
在这里插入图片描述

一旦给表设定别名后,接下来只能使用表别名
在这里插入图片描述

2、外连接

扩展了内连接的结果集,除了返回所有匹配的行之外,还会返回一部分或全部不匹配的行
左外连接
Left join.....On
左表中所有数据都会被查询出,与右表中未能连接的字段使用null值
在这里插入图片描述

二十一、系统函数

Ascii函数
在这里插入图片描述

Concat(s1,s2)拼接字符串

在这里插入图片描述
Initcap(s):将字符串每个单词首字母大写
在这里插入图片描述
Instr(s1,s2,[i],[j]) :返回s2在s1中,从i位置开始第j次出现的位置
在这里插入图片描述
Length(s):返回字符串s的长度
在这里插入图片描述
Lower(s),Upper(s)
在这里插入图片描述
Substr(s,i,[j]):从s字符串中第i个位置开始,截取长度为j的字符串,如果省略j,怎截到字符串末尾
在这里插入图片描述
Ceil()函数:返回大于或等于数字n的最小整数
在这里插入图片描述
Power(n1,n2):n1的n2次方
在这里插入图片描述
Sysdate返回系统当前时间
在这里插入图片描述

聚合函数
Avg,count,sum
在这里插入图片描述

二十二、子查询

注意事项:
1、子查询必须用括号括起来
2、子查询不能包含order by子句
3、子查询允许嵌套多层,但是不能超过255层

单行子查询

可以使用单行比较运算符(=、>、>=、<、<=、<>)
在这里插入图片描述
在这里插入图片描述
查询emp表中,既不是最高工资,也不是最低工资的员工信息
在这里插入图片描述

多行子查询(in,any,all)

查询不在销售部门(sales)de 员工信息
在这里插入图片描述

在emp表中,查询工资大于10号部门的任意一个员工工资的其他部门的员工信息。(any)
在这里插入图片描述
在emp表中,查询工资大于部门编号为30的所有员工工资的员工信息。(all)
Where sal > all()
关联子查询
在emp表中,检索工资大于同职位的平均工资的员工信息
在这里插入图片描述

分页查询

Rownum是一个伪列,或根据sql语言自动添加一列排好的序列号。
在这里插入图片描述
在这里插入图片描述

分页查询
Rownum总是为满足条件的记录自动生成从1开始的序号
查询emp表中第4-9跳记录
在这里插入图片描述

二十三、插入数据

1、当为数据列增加数据时,可以直接提供数值或者用单引号引住
2、当为字符或日期增加数据时,必须用单引号引住
3、当增加数据时,数据必须满足约束条件
4、当增加数据时,数据必须与列的个数和顺序保持一致

显式指定全部列

在这里插入图片描述

显式指定部分列

在这里插入图片描述

不指定列名称

在这里插入图片描述

二十四、更新数据

在这里插入图片描述
在这里插入图片描述

将员工姓名为SMITH的工资调整为部门号为30的部门平均工资

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值