oracle_基础知识整理

用户

一:系统用户:
1:sys,system,sys的权限大于system
2:sysman
3:scott,默认密码:tiger
使用自带sql/plus登陆,格式:[username/psaaword] @服务名 as 角色[sysdba/sysoper]

二:用户的切换
当在sql/plus中登录之后,使用connect 用户名/密码 来切换用户

三:查看当前用户
show user,命令语句可以不添加分号,之后会显示当前已登录的用户信息,除了这种方式,还可以使用数据库自带的数据字典来查看信息
*数据字典就是数据库自带的表,可以直接查看结构和数据
dba_users和user_users,查看系统用户

scott用户
默认情况下是被锁定的,启用用户
alter user 用户名 account unlock


表空间
表空间就是数据库存放数据的逻辑区域

类型:
永久表空间:一般存放表,视图等持久内容
临时表空间:存放数据库执行过程中的临时操作
UNDO表空间:存放历史数据,一般存放事物提交之前的历史数据

数据字典
dba_tablespaces或者user_tablespaces
前者对应系统管理员级别用户的表空间,后者对应一般用户的表空间,查看用户的默认表空间
需要在dba_users或者user_users表中查看

修改表空间
alter user 用户名 default/temporary tablespaces 新的表空间名

创建表空间
永久表空间 create [TEMPORARY] tablespace 表空间名 datafile ‘文件名’ size XX
默认创建永久表空间,添加[TEMPORARY]选项,则会生成临时表空间
示例:创建永久表空间create tablespace test_p1 datafile ‘test_p1.dbf’ size 10M
示例:创建临时表空间create TEMPORARY tablespace test_t1 datafile ‘test_t1.dbf’ size 10M

查看永久表空间
数据字典dba_data_files,查看数据文件

查看临时表空间
数据字典dba_temp_files,查看数据文件

修改表空间状态
状态:联机/脱机,联机是默认状态,脱机状态的表空间不可以使用
alter tablespace 表空间名 online/offline
可以通过dba_tablespaces或者user_tablespaces数据字典的status字段确认表空间状态
状态:只读/读写,默认是可以读写,要修改可以该状态,该表空间必须处于联机状态
alter tablespace 表空间名 read only/read write

修改数据文件
在表空间中添加/删除数据文件
alter tablespace 表空间名 add/drop datafile ‘文件名’ [size XX]

删除表空间
drop tablespace 表空间名,该选项只是删除表空间,如果需要同时删除表空间包含的文件,
那么需要在命令最后添加inculding contents


数据表
数据类型

1:字符型
char(n):固定长度,最长2000
nchar(n):固定长度,按照unicode编码存放,最长1000,适用于存储汉字
varchar2(2):变长字符类型,节省空间,最长4000
nvarchar2(2):变长字符类型,节省空间,支持unicode,最长2000

2:数据型
number(p,s):p代表有效数字,s代表小数位数
s可正可负
float(n):主要存储二进制数字

3;日期类型
date:精确到秒,已经基本满足日常使用
timestamp:精确到小数秒

4:其他
blob:存放4G数据,以二进制形式存储
clob,存放4G数据,以字符串形式存储
对表的基本操作

创建表
基本语法:
create table 表名
(
列名 数据类型,…
)

修改表
1:添加字段
语法
alter table 表名 add 字段名 数据类型
示例
alter table user add cellphone number(11,0)

2:修改字段类型(修改时表中不可以存放数据)
语法
alter table 表名 modify 字段名 数据类型
alter table user modify cellphone char(11)

3:删除字段
语法
alter table 表名 drop column 字段名

4:修改字段名
语法
alter table 表名 rename column 旧字段名 to 新字段名
5:修改表名
语法
rename 旧表名 to 新表名

5:删除表
删除表数据(截断一个表)
truncate table 表名
删除表结构连同其数据
drop table 表名

操作表中的数据
1:新增记录
insert into 表名(列名1,列名2,列名3…) values(值1,值2,值3…)
列名和值需要一一对应,如果不写列名,那么代表为所有字段添加值
*sysdate关键字,代表当前日期
*插入字符串的时候,需要添加单引号

2:设定默认值
在创建表的时候,可以为指定字段设定默认的值
create table 表名
(
id number(6,0),
reg_date date default sysdate
)

3:修改默认值
alter table user modify cellphone default ”;

4:复制表
1):创建表时就复制,复制结构和数据
create table 新建表表名 as select 列1,列2…|* from 所要复制表的表名
2):在新增时添加来自其他表的内容
insert into 表名(列1,列2…) select 列1,列2…|* from 所要复制表的表名
和新增一条记录类似,但是values关键字被替换成目标表的列,数据来源不是手动指定,而是来自其他表

5:修改表数据
update 表名 set 列1=值1,列2=值2… [where 条件…]
无条件更新,也就是全表更新
update user set username=’new_name’(更新的时候要注意,列和值的类型要匹配,全表更细是有风险的操作,谨慎操作)
有条件更新
update user set username=’other_name’ where id=123456

6:删除表数据
delete from 表名 [where 条件…]
无条件删除
delete from user(删除全表数据,但是效率上不如truncate操作快)
条件删除
delete from user where id=123456


约束
作用:来定义记录中数据的规则,哪些字段必须输入,字段的内容。以此来保持数据的完整性

1:非空约束
创建表时添加该约束
create table 表名
(
id number(6,0) NOT NULL,
)
*只能在列级设置,不能在表级设置,并且非空约束是没有约束名称
修改表的约束
alter table 表名 modify 列名 类型 NOT NULL,但是如果表中的数据存在违反非空约束的记录,那么会修改失败
去除非空约束
alter table 表名 modify 列名 类型 NULL

2:主键约束
主键约束:确保记录在表中的唯一性,主键可以由一个或者多个字段组成,并且一个表中只能有一个主键约束

创建表时添加该约束,列级
create table 表名
(
id number(6,0) PRIMARY KEY,
);

创建表示添加该约束,表级
create table 表名
(
id number(6,0),
username varchar2(50),
constraint pk primary key(id,username)
);
*使用一个字段作为主键无需指定主键的名字,而多个主键需要指定主键的名称

查看约束
用到了一个数据字典user_constraint
select constraint_name from user_constraint where table_name=’XXX’
在修改表时添加该约束
alter table 表名 add constraint 主键名 primary key(指定为主键的列)
修改约束名称
alter table 表名 rename constraint 旧名字 to 新名字

3:外键约束
创建表的时候添加外键关联,列级
create table 表名(从表)
(
id number(6,0) primary key,
username varchar2(50),
type_id varchar2(5) references 表名(主表)(主表字段,只能是主键)
)
或者,表级
create table 表名(从表)
(
id number(6,0) primary key,
username varchar2(50),
constraint 外键名 foreign key(从表外键列名) reference 主表名(主表列名)[ON DELETE CASCADE],可选项是级联删除,主表记录删除,从表相应记录也会被删除)
*外键只能来自主表的主键(或者是null),并且类型必须一致

在修改时添加外键约束
alter table user add constraint fk_id foreign key(id) references user_info(id)[ON DELETE CASCADE]

4:唯一约束
作用:保证字段值的唯一性
和主键的区别:允许空值,允许有多个
创建表的时候添加唯一约束,列级
create table 表名(从表)
(
id number(6,0) primary key,
username varchar2(50),
type_id varchar2(5) UNIQUE
)
或者,表级
create table 表名
(
id number(6,0) primary key,
username varchar2(50),
constraint 唯一约束名 unique(列名);
)
*每个唯一约束都有自己的名字,不可以联合多个字段设置唯一约束

在修改表时添加唯一约束
alter table 表名 add constraint 约束名 unique(id )

5:检查约束
作用:限制数据的录入,同一个表中可以存在多个
create table 表名,列级
(
id number(6,0) primary key,
username varchar2(50),
age number(3,0) check(age >0)
)
或者,表级
create table 表名
(
id number(6,0) primary key,
username varchar2(50),
age number(3,0),
constraint 检查约束名 check(age >0);
)
在修改表时添加检查约束
alter table 表名 add constraint 约束名 check(salary>0)

6:禁用/启用和删除约束的方法
启用/禁用约束
alter table 表名 disable|enable constraint 约束名

7:删除约束
1:
alter table 表名 drop constraint 约束名
2:
alter table 表名 drop primary key[cascade] 约束名,添加可选项,连同外键的级联删除

posted on 2015-07-28 11:04 都较瘦 阅读(139) 评论(0)  编辑  收藏 所属分类: Oracle相关问题积累


只有注册用户登录后才能发表评论。


网站导航:
 
<2015年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

公告

博客定位:囿于目前的水平,博客定位在记录自己的学习心得和随手的练习

常用链接

留言簿

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜