Oracle基础及DDL语句Oracle基础及DDL语句
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 约束(列名)varchar2最大长度
删除约束
alter table tablename
drop constrainit 约束名
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论