您的位置:首页 > 数据库 > Oracle

学习笔记_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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: