学习笔记_oracle——基础操作
2014-04-13 23:37
501 查看
数据库
Create Datebade命令
1、打开配置和移植工具-database Coffigyration Assistant
2、选择创建数据库--依照工具提示操作
数据库存储结构
物理的存储结构:显示的存储单元
数据文件:表,索引数据
日志文件:记录对数据库修改的信息
控制文件:记录物理结构的二进制文件
逻辑的存储结构:数据概念上的组织
是数据库存储数据的逻辑单元
SYSTEM 数据库内部表和数据字典
SYSAUX 常用样例用户对象
撤销表空间 用于存储撤销信息的空间
USER 用户表空间
Temp 临时数据的表空间
划分,一般采取一个用户一个表空间,或者一个项目一个表空间
表空间与数据文件的关系
一个数据库包括多个逻辑存储单元即是表空间,每个表空间包含多个多个数据文件
SQL语言
PL/SQL 过程化查询语言
T-SQL
分类
数据定义语言(DDL) 定义和管理数据库中的各种对象
CREATE创建对象 ALTER修改对象 DEOP删除对象
数据操作语言(DML) 操作数据库对象所包含的得数据
INSERT UPDATE DELETE
数据库控制语言(DCL)
SQL
创建表空间
create teablespace shop_dev_daata(空间名)
datafile 'shop_dev_data.DBF','shop.DBF'(储存文件名,分割)
size 100M(大小) autoextend on(是on否off自动扩展);
创建用户
create user<用户名> identiffied by <密码>
default tablespace <表空间名>
temporary tablespace <临时表空间名>
quota <空间大小> on <空间名称>
用户授权
方式,直接授权和通过角色授权*推荐
权限: 系统权限 使用系统功能
create session 连接到数据库
create table 创建表
create view 创建视图
create sequence 创建序列
对象权限 对对象操作的权限
角色 权限的集合
预定角色 CONNECT 有连接到数据库的权限
RESOURCE 有创建表、触发器、过程等的权限
DBA 所有系统权限
授权
GRANT 权限 TO 角色;
字段类型
文本类型
char 定长字符数据,最大2000字节。补空格
varchar 变长字符数据,最大4000字节
long 大字符数据(被clob代替)
数值类型
number 整形或浮点型
binary_iterger PL/SQL中,慢于inrefer
binary_double 双精度64位浮点数
number子类型 float,real,double
日期类型
date 7个字节固定长度,分别存储世纪,年。。。秒
timetamp 储存年月日小时分,包含时区
SYSDATE函数用于返回当前时间
大对象数据类型
clob 大量文本
blob二进制对象,比如图片
表操作
创建表
CREATE TABLE student(
表名 字段名 (长度),
表名 字段名 (长度),
表名 字段名 (长度)...
)
数据完整性
完整性约束
实体完整性约束 保证每行数据表示一个实体
实现 主键约束,唯一约束
主键
alter table 表名 add constraint 约束名
primary key (字段名)
唯一约束
alter table 表名 add constraint 约束名
unique key (字段名)
域完整性约束 验证输入有效性
实现 限制数据类型,检查约束,输入格式,默认值,非空约束等
检查约束
alter table 表名 add constraint 约束名
check (age > 0)
引用完整性约束
实现 外键
外键
alter table 子表名 add constraint 约束名
foreign key (字表外键) peferences 主表 (主表主键)
自定义完整性约束
存储过程,触发器
数据操作
插入
单行 insert into 表名 [字段列表] values [值列表]
多行 insert into 表名 (select字句)
[注] '' 表示单引号
修改
单行 update 表名 set 字段 = 属性,字段 = 属性... where 条件
查询
select 字段名/* from 表名 where 条件
模糊查询 like 'str' 符合str的 其中_一个字段,%多个字符
between and a 到b之间 between 100 and 400,
in ('a','b') 在a,b之中
别名
表名列名后加别名 table as a
排序
order by 字段名 [ASC|DESC]升序/降序
去重
distinct 去重
删除
delete from 表名 where 条件
[假删除]用一个字段标志删除还不是即删除
函数
字符函数
concat函数 concat(a , b); 返回 ab
类似 a || b
nvl函数 concat(a , b); a为null时返回b,反之返回a
数字函数
teunc teunc(col , n ) col为截取的数值,n为位数,整数表示小数点前,0表示小数点,负数表示小数点后
round teunc(col , n ) col为四舍五入的数值,n为位数,整数表示小数点前,0表示小数点,负数表示小数点后
日期函数
sysdate 返回系统时间
extract 获取部分日期 extract(year from sysdate) 返回年
转换函数
to_char() 转换为字符串 对日期to_char(date) to_char(date , '时间格式')
to_date() 转化为date to_date(char) to_date(char , '时间格式')
聚合函数
分组 group by 字段名
函数 sum(字段名) 对当前字段求和,有分组时求各组求和
count(字段名) 求字段总行数,有分组时求各组求行数
max(字段名) 求字段最大值,有分组时求各组求最大值
高级SQL
子查询
对于单一返回值的子查询
操作符 =,>,>=,<,<=,!=
对于多行返回的走查询
操作符 in,not in,any, all, exists
条件的值写作查询的结果
伪列
ROWNUM,对符合条件的记录的序列号
关于rownum使用的经验
在select执行时,先执行where,后执行order by
所以在使用时,先对where的结果集排序,把结果当做虚拟表再用rownum做条件处理
rownum不能带表名使用
rownum的固化
即把rownum取别名,同时,把含有固化的rownum的返回集做虚拟表子查询
表连接的分类
内连接 仅包含那些满足连接条件的记录行
等值连接 使用=运算符比较连接的值
非等值连接 使用初等号外的列植连接查询
(>,<,!=,like,in,between)
外连接
左外连接 只限制右表的行,不限制左表。即左边记录即使不满足连接条件也显示,以null填充
右外连接 只限制左表的行,不限制右表。即右边记录即使不满足连接条件也显示,以null填充
全外连接 两个表均不限制
自连接
连表查询
内连接 等值连接
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名)] and 表名.字段名=value
非等值连接
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名)] and 表名.字段名>value
外连接 左外查询/右外
select 表名.字段名 from 左表 LEFT OUTER JOIN 右表 where [连接条件(表名.字段名 = 表名.字段名)] and 查询条件
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名(+))] and 查询条件
右外查询/右外
select 表名.字段名 from 左表 RIGHT OUTER JOIN 右表 where [连接条件(表名.字段名 = 表名.字段名)] and 查询条件
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名(+) = 表名.字段名)] and 查询条件
集合查询
交集 INTERSECT
并集 UNION\UNION ALL
补集 MINUS
Create Datebade命令
1、打开配置和移植工具-database Coffigyration Assistant
2、选择创建数据库--依照工具提示操作
数据库存储结构
物理的存储结构:显示的存储单元
数据文件:表,索引数据
日志文件:记录对数据库修改的信息
控制文件:记录物理结构的二进制文件
逻辑的存储结构:数据概念上的组织
是数据库存储数据的逻辑单元
SYSTEM 数据库内部表和数据字典
SYSAUX 常用样例用户对象
撤销表空间 用于存储撤销信息的空间
USER 用户表空间
Temp 临时数据的表空间
划分,一般采取一个用户一个表空间,或者一个项目一个表空间
表空间与数据文件的关系
一个数据库包括多个逻辑存储单元即是表空间,每个表空间包含多个多个数据文件
SQL语言
PL/SQL 过程化查询语言
T-SQL
分类
数据定义语言(DDL) 定义和管理数据库中的各种对象
CREATE创建对象 ALTER修改对象 DEOP删除对象
数据操作语言(DML) 操作数据库对象所包含的得数据
INSERT UPDATE DELETE
数据库控制语言(DCL)
SQL
创建表空间
create teablespace shop_dev_daata(空间名)
datafile 'shop_dev_data.DBF','shop.DBF'(储存文件名,分割)
size 100M(大小) autoextend on(是on否off自动扩展);
创建用户
create user<用户名> identiffied by <密码>
default tablespace <表空间名>
temporary tablespace <临时表空间名>
quota <空间大小> on <空间名称>
用户授权
方式,直接授权和通过角色授权*推荐
权限: 系统权限 使用系统功能
create session 连接到数据库
create table 创建表
create view 创建视图
create sequence 创建序列
对象权限 对对象操作的权限
角色 权限的集合
预定角色 CONNECT 有连接到数据库的权限
RESOURCE 有创建表、触发器、过程等的权限
DBA 所有系统权限
授权
GRANT 权限 TO 角色;
字段类型
文本类型
char 定长字符数据,最大2000字节。补空格
varchar 变长字符数据,最大4000字节
long 大字符数据(被clob代替)
数值类型
number 整形或浮点型
binary_iterger PL/SQL中,慢于inrefer
binary_double 双精度64位浮点数
number子类型 float,real,double
日期类型
date 7个字节固定长度,分别存储世纪,年。。。秒
timetamp 储存年月日小时分,包含时区
SYSDATE函数用于返回当前时间
大对象数据类型
clob 大量文本
blob二进制对象,比如图片
表操作
创建表
CREATE TABLE student(
表名 字段名 (长度),
表名 字段名 (长度),
表名 字段名 (长度)...
)
数据完整性
完整性约束
实体完整性约束 保证每行数据表示一个实体
实现 主键约束,唯一约束
主键
alter table 表名 add constraint 约束名
primary key (字段名)
唯一约束
alter table 表名 add constraint 约束名
unique key (字段名)
域完整性约束 验证输入有效性
实现 限制数据类型,检查约束,输入格式,默认值,非空约束等
检查约束
alter table 表名 add constraint 约束名
check (age > 0)
引用完整性约束
实现 外键
外键
alter table 子表名 add constraint 约束名
foreign key (字表外键) peferences 主表 (主表主键)
自定义完整性约束
存储过程,触发器
数据操作
插入
单行 insert into 表名 [字段列表] values [值列表]
多行 insert into 表名 (select字句)
[注] '' 表示单引号
修改
单行 update 表名 set 字段 = 属性,字段 = 属性... where 条件
查询
select 字段名/* from 表名 where 条件
模糊查询 like 'str' 符合str的 其中_一个字段,%多个字符
between and a 到b之间 between 100 and 400,
in ('a','b') 在a,b之中
别名
表名列名后加别名 table as a
排序
order by 字段名 [ASC|DESC]升序/降序
去重
distinct 去重
删除
delete from 表名 where 条件
[假删除]用一个字段标志删除还不是即删除
函数
字符函数
concat函数 concat(a , b); 返回 ab
类似 a || b
nvl函数 concat(a , b); a为null时返回b,反之返回a
数字函数
teunc teunc(col , n ) col为截取的数值,n为位数,整数表示小数点前,0表示小数点,负数表示小数点后
round teunc(col , n ) col为四舍五入的数值,n为位数,整数表示小数点前,0表示小数点,负数表示小数点后
日期函数
sysdate 返回系统时间
extract 获取部分日期 extract(year from sysdate) 返回年
转换函数
to_char() 转换为字符串 对日期to_char(date) to_char(date , '时间格式')
to_date() 转化为date to_date(char) to_date(char , '时间格式')
聚合函数
分组 group by 字段名
函数 sum(字段名) 对当前字段求和,有分组时求各组求和
count(字段名) 求字段总行数,有分组时求各组求行数
max(字段名) 求字段最大值,有分组时求各组求最大值
高级SQL
子查询
对于单一返回值的子查询
操作符 =,>,>=,<,<=,!=
对于多行返回的走查询
操作符 in,not in,any, all, exists
条件的值写作查询的结果
伪列
ROWNUM,对符合条件的记录的序列号
关于rownum使用的经验
在select执行时,先执行where,后执行order by
所以在使用时,先对where的结果集排序,把结果当做虚拟表再用rownum做条件处理
rownum不能带表名使用
rownum的固化
即把rownum取别名,同时,把含有固化的rownum的返回集做虚拟表子查询
表连接的分类
内连接 仅包含那些满足连接条件的记录行
等值连接 使用=运算符比较连接的值
非等值连接 使用初等号外的列植连接查询
(>,<,!=,like,in,between)
外连接
左外连接 只限制右表的行,不限制左表。即左边记录即使不满足连接条件也显示,以null填充
右外连接 只限制左表的行,不限制右表。即右边记录即使不满足连接条件也显示,以null填充
全外连接 两个表均不限制
自连接
连表查询
内连接 等值连接
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名)] and 表名.字段名=value
非等值连接
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名)] and 表名.字段名>value
外连接 左外查询/右外
select 表名.字段名 from 左表 LEFT OUTER JOIN 右表 where [连接条件(表名.字段名 = 表名.字段名)] and 查询条件
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名 = 表名.字段名(+))] and 查询条件
右外查询/右外
select 表名.字段名 from 左表 RIGHT OUTER JOIN 右表 where [连接条件(表名.字段名 = 表名.字段名)] and 查询条件
select 表名.字段名 from [包含的表(表名,表名)] where [连接条件(表名.字段名(+) = 表名.字段名)] and 查询条件
集合查询
交集 INTERSECT
并集 UNION\UNION ALL
补集 MINUS
相关文章推荐
- Oracle基础学习笔记
- Oracle 学习笔记 14 -- 集合操作和高级子查询
- GitHub入门与实践学习笔记--github学习基础之关于git的基本操作
- 黑马程序员--Java基础学习笔记【数组操作、基本数据类型包装类】
- Oracle基础学习笔记(二)
- oracle开发之<<SQL Cookbook>>学习笔记整理:第三章 操作多个表
- 九、Oracle数据库之学习笔记---Oracle操作数据
- Oracle基础学习笔记(3)
- javascript学习基础笔记之DOM对象操作
- 【VC++ 中使用ADO操作数据库学习笔记】 基础环境的设置
- Oracle基础学习笔记(二)(Index)
- 「Oracle数据库」第一课:Oracle基础相关 学习笔记
- Oracle 学习笔记 查询(重点,也是基础)
- {传智播客} (学习笔记)--Oracle使用需要掌握的基础知识
- Swift学习笔记(十六)——String字符串的基础操作
- [Oracle 学习笔记] 04 子查询和集合操作
- [学习笔记]JavaScript基础--数组操作
- Oracle基础学习笔记(1)
- Java基础学习笔记之XML文件操作
- Oracle学习查询操作的笔记以及语句