一、什么是数据库
二、oracle中常用的sql plus命令
三、表空间及其分类
四、用户管理
五、角色、权限、数据字典
六、SQL是什么
七、数据类型、创建表、约束
八、修改表、增删改查格式
数据库,本质就是软件,用于管理、维护数据
oracle的工具:sql plus、sql developer、plsql developer
connect:切换用户,简写conn 格式:conn 用户名/密码
show user:显示当前登录的用户
host:执行(操作系统命令)
host mkdir e:\oraclepractice
host md e:\1
spool:导出记录到文本
spool e:\oraclepractice\text.txt 创建了text.txt,把内容导入其中
select * from book;
spool off
clear screen:清屏
start:执行文件中的sql语句
start d:\test.sql
@ d:\test.sql
start和 @ 表示:执行
desc:显示表结构
show error:显示错误
exit:退出
oracle默认的系统用户:
sys/system:conn sys/111111 as sysdba
conn system/111111
sysman
scott:有4个表(emp、dept、salgrade、bonus)
注:conn sys/111111 @orcl as sysdba
@orcl:指定了数据库实例(选哪个数据库),有它,要把监听服务打开
若没有@orcl,就连接到默认的数据库
表空间:永久表空间、临时表空间、undo表空间
创建表空间格式:create 【temporary】tablespace XX tempfile | datafile 'XX.dbf' size XX
如:create tablespace 1 datafile '1.dbf' size 10m;
create temporary tablespace 2 tempfile '2.dbf' size 10m;
select * from dba_data_files; 查看表空间的数据文件
select * from dba_temp_files; 查看临时表空间的数据文件
select * from dba_tablespace; 查看表空间
修改表空间:修改表空间状态:alter tablespace a1 online(offline) 设置联机、脱机状态
alter tablespace a1 read only(read write) 只读、读写(联机)
修改数据文件:增加数据文件:alter tablespace a1 add datafile 'XX.dbf' size XX;
删除数据文件:alter tablespace a1 drop datafile 'XX.dbf';
删除表空间:drop tablespace a1; 只删表空间
drop tablespace a1 including contents; 表空间连同数据文件一起删
1、创建用户
create user zhe identify by 111111 default tablespace a1 temporary tablesapce a2;
2、查看创建的用户
select username from dba_users;
3、给予权限:grant connect to zhe 给zhe连接权限
4、管理用户
连接用户:conn 用户名/密码
更改密码:alter user zhe identified by 222222;
删除用户:drop user zhe 【cascade】; cascade表示:用户连同其创建的东西全删
锁定用户:alter user zhe account lock;
解锁用户:alter user zhe account unlock;
角色:权限的集合
用户可以给角色指定权限,并把角色赋予相应用户
3种标准角色:connect(连接角色)、resource(资源角色)、dba(数据库管理员角色)
对普通用户:给connect、resource权限
对DBA管理用户:给dba权限
创建角色:create role 角色名; 如:create role manager;
删除角色:drop role manager;
给角色赋予权限:grant 权限 to 角色;
grant create table,create view to manager;
把角色赋予用户:grant 角色 to 用户;
grant manager to user01,user02;
撤回授权:revoke manager from user01;
权限:分为系统权限、对象(实体)权限
查看所有系统权限:select * from system_privilege_map;
常见系统权限:create session、create sequence、create table、create user、
create view
查看所有对象权限:select * from table_privilege_map;
常见对象权限:select、update、insert、delete、all等(all:包括所有权限)
授予对象权限格式:grant select,insert on scott.emp to manager2;
grant manager2 to user03;
grant all on scott.emp to user04;
回收对象权限:revoke all on scott.emp from user04;
dba_tablespaces:管理员级别的表空间描述信息
user_tablespaces:普通级别的...
如:select tablespace_name from dba_tablespaces;
select ... ... ... from user_tablespaces;
dba_users:管理员的用户信息
user_users:普通用户的...
如:select default_tablespace,temporary_tablespace from dba_users where username =' SYSTEM'; 查看SYSTEM用户的表空间信息
select username,defult_tablespace,temporary_tablespace from dba_users;
更改用户默认的临时表空间:alter user user01 default tablespace a1 temporary tablespace a2;
SQL:结构化查询语言(Structured Query Language),是一种特殊的编程语言,用于存储数据、查询、更新、管理关系型数据库系统的语言
oracle的SQL:包括DDL(数据定义语言)、DML(数据操作语言)、DCL(数据控制语言)、TCL(事物控制语言)
DDL语句包括:create table, drop table, create index, drop index, truncate(删除表中所有行)
alter table:更改表结构,增加、修改、删除列
alter table add constraint:在已有表上加约束
DML语句包括:insert:添加数据到数据库
update:修改数据库中的数据
delete:删除
select:查询
DCL包括:grant:把权限/角色,赋予用户/角色(授予访问权限)
revoke:回收权限
lock:对数据库的特定部分进行锁定
TCL包括:commmit:提交事物处理
rollback:事物处理回退
savepoint:设置保存点
oracle中的数据类型:字符类型、数值类型、日期类型、LOB类型
字符类型:char:固定长度的字符串,长度为1~2000个字节
varchar2:可变长度的字符串,最大长度为4000字节
数值类型:number[p[,s]] p:表精度 s:小数点的位数 ,可存储整数、浮点数等类型,最高精度38位
如:number(5,0) 最大可存储 5位数 的整数
number(5,2) 最大可存 999.99 的浮点数
日期类型:date
LOB类型:CLOB:字符LOB,存大量字符数据
BLOB:存较大的二进制对象,如:图形、视频、剪辑、声音文件...
格式:create table 表名(
列 数据类型,
列 数据类型,
... ...
列 数据类型
);
如:create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50)
);
约束的格式:[constraint 约束名] 约束类型 (column列)
如不指定约束名,系统会自动分配一个
约束类型:主键约束(primary key constraint)
唯一约束(unique constraint)
默认约束(default ..)
非空约束(not null ..)
检查约束(check ..)
外键约束(foreign ..)
注:
主键约束:定义表的主键,其值不为null,不重复,来保证实体的完整
主键只有一个,但可由多个列构成
唯一约束:指定一个列或多个列组合的值的唯一性,防止在列中输入重复值(如:学生表中的身份证号)
唯一约束:列可为null
一个表里面,可有多个unique约束(即:把unique约束,定义在多个列上)
1、创建表时,加约束 (2种方法)
create table student(
sid number(8,0) [primary key],
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
constraint sid_pk primary key(sid)
);
2、若表已建成,要加约束
alter table student add constraint sid_pk primary key(sid);
3、删除约束:alter table 表名 disable/enable/drop constraint 约束名;
暂时删除/使之有效/彻底删除
如:alter table student disable/../.. constraint sid_pk;
1、创建表时,加约束 (2种方法)
create table student(
sid number(8,0),
name varchar2(20) [not null],
sex char(2),
birthday date,
address varchar2(50),
constraint nn_name not null(name)
);
2、表已创建,加not null约束,用modify
alter table student modify (name varchar2(20) not null);
3、删除约束,用modify
alter table 表名 modify (列 数据类型 null);
alter table student modify (name varchar2(20) null);
1、创建表时,加约束 (2种方法)
create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
email varchar2(50),
cardid varchar2(18) [unique],
constraint cardid_uk unique(cardid)
);
2、表已创建,加约束
alter table student add consraint cardid_uk unique(cardid);
3、删除约束:alter table 表名 disable/enable/drop constraint 约束名;
暂时删除/使之有效/彻底删除
如:alter table student disable/enable/drop constraint cardid_uk;
1、创建表时,加检查约束 (2种方法)
create table student(
sid number(8,0),
name varchar2(20),
sex char(2) 【check(sex = '男' or sex = '女')】,
birthday date,
address varchar2(50),
constraint sex_ck check(sex='男' or sex='女')
);
2、表已创建,修改表时加check约束
alter table student add constraint sex_ck check(sex='男' or sex='女');
3、删除check约束
alter table student disable/enable/drop constraint sex_ck;
暂时删除/启用约束/永久删除
系号:为外键列
1、创建表时,加外键
列级的格式:create table 从表表名(
...,
外键列 数据类型 references 主表表名(主键列/唯一列) [on delete cascade]
);
表级的格式:create table 从表表名(
...,
constraint 约束名 foreign key(外键列) references 主表表名(主键列/唯一列) [on delete
cascade]
);
如:
列级约束:主表:create table department( 从表:create table student(
depid varchar2(10) primary key, sid number(8,0),
depname varchar2(30) name varchar2(20),
); sex char(2),
birthday date,
address varchar2(50),
depid varchar2(10) references department(depid)
);
表级约束:主表如上
从表:create table student(
sid number(8,0),
name varchar2(20),
sex char(2),
birthday date,
address varchar2(50),
depid varchar2(10),
constraint depid_fk foreign key(depid) references department(depid)
);
2、修改表时,加foreign key约束
alter table student(从表) add constraint depid_fk foreign key(depid) references department(depid)
[on delete cascade];
on delete cascade:有它,若删除时,级联删除
3、删除foreign key约束
alter table student disable/enable/drop constraint depid_fk;
添加列:alter table 表名 add 新增列名 数据类型;
如:alter table student add tel varchar2(11);
修改列:alter table 表名 modify 列名 新的数据类型;
如:alter table student modify tel number(11,0);
删除列:alter table 表名 drop column 列名;
如:alter table student drop column tel;
修改列名:alter table 表名 rename column 列名 to 新列名;
如:alter table student rename column sex to gender;
修改表名:rename 表名 to 新表名;
删除表:truncate table 表名; 只删除表数据,不删表结构
drop table 表名; 表结构、表数据都删,就是这个表没有了
1、添加信息
inset into 表名[(列1,列2...)] values(值1,值2...); 若把表中的列都加数据,可省略[]
如:insert into student(sid,name,sex) values(001,'张三','女');
insert into student values(002,'王五','女',to_date('19880909','YYYYMMDD'));
2、查询
select * from 表名; select column1,column2... from 表名;
如:select * from student
select sid,name from student;
3、修改
update 表名 set column = values[,column = values] [where 条件];
如:update student set Tel ='13800000000' where sid = 001;
update student set address = '昌平区';
4、删除(数据)
delete from 表名 [where 条件];
如:delete from student;
delete from student where sid = 002;
commit:提交事务
rollback:回滚事务
savepoint:保存点
user_*
all_*
dba_*