1.DCL数据控制语言
--创建表空间
CREATE TABLESPACE TESTDATA
LOGGING
DATAFILE 'E:/oracle/product/10.1.0/oradata/orcl/TESTDATA.DBF'
SIZE 512M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;
CREATE TABLESPACE TESTIDX
LOGGING
DATAFILE 'E:/oracle/product/10.1.0/oradata/orcl/TESTIDX.DBF'
SIZE 512M
AUTOEXTEND ON
NEXT 32M MAXSIZE 2048M
EXTENT MANAGEMENT LOCAL;
--创建用户指定默认表空间
create user 用户名 identified by 密码 default tablespace TESTDATA;
--授权connect,resource角色权限
grant connect,resource to 用户名;
--授权导入权限
grant imp_full_database to 用户名;
--查看用户表空间使用情况
select username,default_tablespace from dba_users;
--修改用户密码
alter user 用户名 identifiyed by 新密码;
--首次登录修改密码
alter user 用户名 password expire;
--锁定某用户
alter user 用户名 account lock;
--解锁某用户
alter user 用户名 account unlock;
--给test用户查询与删除scott用户的emp表的权利
grant select,delete on scott.emp to test;
--回收test用户的select及delete权限
revoke select,delete on scott.emp from test;
2.数据定义语言(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。
--创建表
create table person(
pid number,
name varchar2(200),
age number,
birthday date,
sex char(1) default '1'
);
--新增字段
alter table person add (address varchar(200) default '暂无地址');
--修改字段
alter table person modify (name varchar2(20) default '无名氏');
--删除表
drop table person;
--截断表[清空表数据,立即释放资源,无法回滚]
truncate table person;
--创建非空约束、主键约束,唯一约束,检查约束
create table person(
pid number,
name varchar2(20) not null,
age number not null,
birthday date,
sex char(1) default '1',
constraint person_pid_pk primary key(pid),
constraint person_name_uk unique(name),
constraint person_age_ck check(age between 0 and 150),
constraint person_sex_ck check(sex in ('1','0'))
);
--创建外键约束
create table book(
bid number,
bname varchar2(30),
bprice number(5,2),
pid varchar2(18),
constraint book_bid_pk primary key(bid),
constraint person_book_pid_fk foreign key(pid) references person(pid) [on delete cascade]
);
--表创建完后再添加约束
alter table person add constraint person_pid_pk primary key(pid);--主键约束
alter table person add constraint person_name_uk unique(name);--唯一约束
alter table person add constraint person_age_ck check(age between 0 and 150);--检查约束
alter table person add constraint person_sex_ck check(sex in ('1','0'));--检查约束
alter table book add constraint book_bid_pk primary key(bid);--主键约束
alter table book add constraint person_book_pid_fk foreign key(pid) references person(pid) on delete cascade;--外键约束
--删除约束
alter table person drop constraint 约束名;
--创建视图
create or replace view 视图名 as 子查询 [with read only]
--删除视图
drop view 视图名;
--创建序列
create sequence 序列名
[increment by 1][start with 1]
[{maxvalue 999999999999|nomaxvalue}]
[{minvalue 1|nominvalue}]
[{cycle|nocycle}]
[{cache n|nocache}];
--获取当前序列值
select 序列名.currval from dual;
--获取序列下一个值
select 序列名.nextval from dual;
--sys用户访问scott用户下的emp表
select * from scott.emp;--访问不了
--创建同义词
create synonym emp from scott.emp;
--再访问
select * from emp;--可访问
--删除同义词
drop synonym emp;
3.数据操纵语言(SQL DML)分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作
4.数据库设计三范式
第一范式:各属性只包含原子值,不可再分;
第二范式:没有部分函数依赖;
第三范式:没有传递函数依赖;
5.附
--查死锁
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b
where a.session_id = b.sid order by b.logon_time;
--杀死锁进程
alter system kill session 'sid值1,sid值2';
--导出
exp
--导入
imp
--修改Oracle的8080端口为9000
call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',9000));
--oracle11g更改字符集AL32UTF8为ZHS16GBK SQL> conn /as sysdba SQL> shutdown immediate; SQL> startup mount SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL> alter database open; SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; ORA-12712: new character set must be a superset of old character set 提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; --我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验. SQL> shutdown immediate; SQL> startup 以后安装oracle的时候记得选择自定义安装,把这个字符集的事情事先弄好。