Oracle基础及DDL语句

Oracle基础及DDL语句

  • 1.用户管理
  • 2.表管理
  • 3.alter table语法

sysdba:数据库管理员
sysoper:数据库操作员

1.数据定义语言DDL,包括create(创建)命令,alter(修改)命令,drop(删除)命令等。
2.数据操纵语言DML,包括insert,update,delete,select…for update命令等。
3.数据查询语言DQL,包括基本查询语句,Order By子句,Group By子句等。
4.事务控制语言TCL,包括COMMIT(提交)命令,SAVEPOINT(保存点)命令,
ROLLBACK(回滚)命令。
5.数据控制语言DCL,GRANT(授权),REVOKE(撤销权限)命令。

1.用户管理

创建用户
CREATE USER 用户名 
IDENTIFIED BY 密码
[ACCOUNT LOCK][UNLOCK]	--创建用户是是否锁定,默认为锁定lock,锁定的用户无法正常登陆进行数据库操作。

CREATE USER jason  
IDENTIFIED BY 123456
ACCOUNT UNLOCK;

锁定用户
alter user username account lock;
解锁用户
alter user username account unlock;
删除用户
drop user username [cascade];
cascade作用:当此用户已建立表时,连同表一起删除,否则将无法删除。

修改自己的密码
password 用户名或passw

修改别人的则需要具有dba的权限,或是拥有alter user的系统权限
alter user 用户名 identified by 新密码

数据库角色
CONNECT角色,主要应用在临时用户,特别是那些不需要建表的用户

RESOURCE角色,更可靠和正式的数据库用户可以授予 RESOURCE role

DBA角色DBA role拥有所有系统权限--包括无限制的空间权限和给其他用户授予各种权限的
能力。system为DBA角色

作为数据库管理员连接数据库
conn jason/123456 as sysdba

授权
grant connect,resource to jason;
grant connect to username;		授权用户允许登录的权限
grant rolename to username; 		将角色的权限授权给该用户
grant create tablespace to username;	授权创建表空间权限
grant select on tablename to username; 	授权该用户可以查询某个表的权限
grant update on tablename to username;	授权该用户可以更新某个表的权限
grant insert on tablename to username;	授权该用户可以插入某个表的权限
grant execute on 存储过程 to username;	授权该用户具有存储过程权限

revoke替换grant用于收回权限
revoke .....from 用户名

查询系统时间
select sysdate from dual;
select sysdate,systimestamp from dual;包含时区,小数

2.表管理

三范式目标:
不存在冗余数据,即不存储重复数据,即数据的标准化
第一范式:确保每列保持原子性
1.要有主键
2.列不可分。也不能重复
第二范式:唯一性。一个表只说明一个事物,确保标的每列都和主键相关。
第三范式:确保每列都和主键列直接相关,而不是间接相关

查询当前用户拥有的表
select table_name from user_tables

查询所有用户的表
select table_name from all_tables;

select table_name from dba_tables;(包括系统表)

oracle数据类型
CHAR(length),定长,会用空格填充以达到最大长度,默认字长为1,最大2000字节
VARCHAR2(length),可变长,默认字长为1,最大4000字节
NUMBER(p,s),p为有效数字最大位数,s为小数位数
CLOB,大文本
BLOB,存储非结构化的二进制数据,一般是图像,声音,视频等文件
DATE,日期数据类型,一般为7个字节
TIMESTAMP类型,日期数据类型,不同于DATE,可以包含小数秒,小时点右边最多可保留9位,占7或12字节

创建约束
alter table 表名 add constraint 约束名 约束内容

example:创建学生信息表
create table stu_info (
  stu_id varchar2(10) primary key,	--学号,主键
  stu_name varchar2(10),		--姓名
  stu_sex varchar2(1),			--性别
  stu_score number(3,2),		--成绩
  class   varchar2(10)			--班级
);

约束:
create table score(
sc_id varchar2(20) primary key,				--主键
term varchar2(2) check(term='s1' or term='s2'),		--check约束
stu_id varchar2(10) not null unique,			--唯一约束,非空约束
labscore number(5,2) default '0' not null,		--默认值约束
constraint FK_score_stu_info_stu_id foreign key(stu_id)
references stu_info(stu_id)	--当前表stu_id作为外键,随外表删除修改
);

Oracle中不容许在相同列上既创建主键又创建唯一性约束。
删除主表前,要解除与从表的关系

3.alter table语法

添加外键
alter table table_name1--从表
add constraint constraint_name foreign key(column)
references table_name2(column) on delete cascade on update cascade--主表

删除外键
alter table 表名 drop constraint 外键名;

on delete cascade跟随主表删除
on update cascade跟随主表更新

添加约束
alter table 表名 add 约束(列名)
	
删除约束
alter table tablename
drop constrainit 约束名

你可能感兴趣的:(Oracle)