Oracle的优点
优点:
- 数据存储量大
- 处理速度快
- 安全性高
- 容错性强
SQL分类
DDL : 数据定义语言 create alter drop truncate
DML : 数据操纵语言 insert update delete
DCL : 数据控制语言 安全 授权 grant revoke
DQL : 数据查询语言 select from子句 where子句
Oracle表空间的创建与删除
--创建表空间
create tabkespace tablename --表空间的名字
datafile 'c:\table.dbf' --路径
size 100m --设置空间大小
outoextend on --设置自动扩展空间
next 10m maxsize 100m; --每次扩展多少空间
--删除表空间
drop tablespace tablename;
Oracle创建用户
create user username --用户名
identified by password --密码
default tablespace tablename; --来自哪个表空间
给用户授权
Oracle数据库中常用角色:
- connect -------------连接角色,基本角色
- resource -------------开发者角色
- dba -------------超级管理员角色
--给用户授权一个角色
grant dba to username;
--grant ... to... 授予
Oracle数据类型
No | 数据类型 | 描述 |
---|---|---|
1 | Varchar,varchar2 | 表示一个字符串 |
2 | NUMBER | NUMBER(n)表示一个整数,长度是n |
3 | DATA | 表示日期类型 |
4 | CLOB | 大对象,表示大文本数据类型,可存4G |
5 | BLOB | 大对象,表示二进制数据,可存4G |
创建person表
create table person(
pid number(20),
pname varchar2(10)
);
--字段名 类型
修改表结构(数据定义语言Data Definition Language)(person 表)
--添加一列(多列括号中间用逗号隔开)关键字 add
alter table person add (gender number(1),...,...);
--修改列类型,关键字 modify
alter table person modify (gender char(1),...,...);
--char 长度是固定的
--修改列的名称 rename column 旧名称 to 新名称
alter table person rename column gender to sex;
--删除一列 drop column
alter table person drop column sex;
数据的增删改
--添加一条记录 insert into
insert into person (pid,pname) values(1,'小明');
commit; --提交事务
--修改 update
update person set pname='小马'
where pid=1;
commit;
--三个删除
--删除表中全部记录
delete from person;
--删除表结构
drop table person;
--先删除表再创建表。效果等同于删除表中全部记录在数据量大的情况下,该操作效率高
--索引可有提供查询效率,但是会影响增删改的效率
truncate table person;
伪表 dual
dual :虚表,只是为了补全语法,没有任何意义
select s_person.currval from dual
序列的使用(sequence)
- 序列不属于任何一张表,但是可以逻辑和表做绑定
- 序列默认从1开始,依次递增,主要用来给主键赋值
- 序列名.nextval,类似于Java中的迭代器,返回下一个序列值
- 序列名.currval,方法是返回当前序列值
- 第一次使用序列时需要先调用nextval这个方法,不然调用currval会报错显示“currval尚未在会话中定义”
create sequence s_name //序列名
increment by 增长数 //每次增长幅度
start with 起始值 //开始值
maxvalue 最大值 //序列最大值
minvalue 最小值 //序列最小值
Cycle 循环 nocycle 不循环 //如果为循环使用,则到达最大值或者最小值后重新建立对象
Cache 缓存 n //是否将序列缓存在内存中,n 代表缓存的序列个数
//Cache<maxvalue-minvalue/increment by 代表缓存所有序列值
--eg:创建一个序列,要求开始为1001,每次增长1,最大值为99999,最小值为1001,不缓存,不循环。
create sequence emp_eid_seq --创建序列
increment 1 --每次增长的幅度
start with 1001 --序列开始值
maxvalue 99999 --最大值
minvalue 1001 --最小值
nocycle --不循环
nochache --不缓存
--
----添加一条记录
insert into person (pid,pname) values (s_person.nextval,'小明')
commit; --提交事务
scott 用户,默认密码 tiger
scott 用户是 Oracle 帮我们建好的测试账户,Scott账户常用,里面有emp、dept表等。
----解锁scott用户(需要在管理员权限下)
alter user scott account unlock;
----解锁密码(可以重置密码)
alter user scott identified by tiger;
- EMP表为员工表
- DEPT表为部门表
- SALGRADE表为工资表
单行函数(作用于一行返回一个值)
--字符函数
select lower ('YES') from dual
select upper ('yes') from dual
--数值函数
select round (26.16,1)