版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35537301/article/details/83716003
一、使用DDL语句管理表
1、新用户操作数据库
- 创建表空间(只有DBA才能创建表空间),同时把数据文件也创建
- 创建用户,关联表空间
- 赋权限
- 切换用户,创建表
- 操作数据库
2、创建表空间
create tablespace heima -----表空间的名称
datafile 'c:/heima.dbf' ----创建数据文件
size 100M -----表空间大小
autoextend on ---off -----打开表空间大小自增长
next 10M -----每次增长的大小
3、创建用户
create user crm -----用户名
identified by crm ----密码
default tablespace heima ---关联表空间
4、为用户授予权限
4.1 查看当前登录用户权限
select * from session_privs;
4.2 oracle中的角色(权限的集合)
- dba
- resource
- connect
4.3 给用户设置角色
--给用户设置角色 (赋权限)
grant dba to crm;
5、oracle的数据类型
数据类型 | 说明 |
---|---|
number(3,2) | 数值类型,number(3):999,number(3,2):9.99 |
char(10) | 定长字符 |
varchar(10) | 可变长度字符 |
varchar2(10) | oracle 对varchar2做了很大的优化 推荐使用 |
date | 日期+时间 |
timestamp | 时间戳,秒后9位 |
long | 大字段,2G |
clob | 大字段,4G |
blob | 大字段,4G,字节流 |
6、创建表
oracle中没有主键自增的设置
create table person(
pid varchar2(10),
pname varchar2(20),
gender number(1) default 1 check(gender in(1,2)),
brithday date,
constraint person_pk_pid primary key(pid)
);
7、修改表
--添加列
alter table person add sex varchar2(2);
--修改列名
alter table person rename column sex to gender;--number 0:女 1:男
--修改列类型
alter table person modify gender number(1);
--删除列
alter table person drop column gender;
8、删除表
drop table person;--删除表
truncate table person;--删除表,创建表
9、复制表
create table v_temp as select * from scott.emp;
二、约束
1、主键约束
create table person(
pid number(10) primary key,--主键约束
pname varchar2(30),
phone varchar2(20),
gender number(1)
)
自定义约束名称
create table person(
pid number(10) ,
pname varchar2(30) not null,
phone varchar2(20) ,
gender number(1) ,
constraint pk_person primary key(pid),--主键名称 pk_person
)
2、非空约束
指定的字段不能为空
create table person(
pid number(10) primary key,--主键约束
pname varchar2(30) not null,--非空约束
phone varchar2(20),
gender number(1)
)
3、唯一约束
指定的字段值唯一
create table person(
pid number(10) primary key,--主键约束
pname varchar2(30) not null,--非空约束
phone varchar2(20) unique,--唯一约束
gender number(1)
)
自定义约束名称
create table person(
pid number(10) ,
pname varchar2(30) not null,
phone varchar2(20) ,
gender number(1) ,
constraint pk_person primary key(pid),--主键名称 pk_person
constraint uk_phone unique(phone)--唯一约束
)
4、检查约束
约束字段值的合法范围
create table person(
pid number(10) primary key,--主键约束
pname varchar2(30) not null,--非空约束
phone varchar2(20) unique,--唯一约束
gender number(1) check(gender in(0,1))--检查约束
)
自定义约束名称
create table person(
pid number(10) ,
pname varchar2(30) not null,
phone varchar2(20) ,
gender number(1) ,
constraint pk_person primary key(pid),--主键名称 pk_person
constraint uk_phone unique(phone),
constraint ck_gender check(gender in(0,1))
)
5、外键约束
保持关联数据的完整性
--主表
create table orders(
order_id number(10),
total_price number(10,2),
order_time date,
constraint orders__pk primary key(order_id)--主表的主键
);
--从表
create table order_detail(
detail_id number(10),
order_id number(10),
item_name varchar2(10),
constraint order_detail_pk primary key(detail_id),--从表的主键
constraint order_detail_fk foreign key(order_id) references orders(order_id)--从表的外键
)
三、使用DML操作语句
1、插入表中数据
方式1
insert into 表名(列名1,列名2,...,列名n) values(值1,值2,...,值n)
方式2
插入的数据,和表中字段的顺序一致
insert into 表名 values(值1,值2,...,值n)
2、修改表中数据(谨慎)
update 表名 set 列名1=值1,列名2=值2,列名3=值3 where 修改条件;
3、删除表中数据(谨慎)
delete from 表名 where 删除条件;
四、视图
1、语法
create or replace view 视图名
as
查询的SQL
with read only;--只读
2、创建视图
create or replace view v1 as select * from v_emp with read only;
3、注意
视图是一个虚表,不存储数据,所有的修改都是在原表的基础上做的修改
五、索引
1、创建索引的条件
- 表的查询概率远大于增删改的概率
- 经常出现在where 条件中的字段需要建索引(唯一性较强)
- 主键约束、唯一约束,会自动创建索引
2、作用
大幅度提高查询效率
3、坏处
- 影响增删改的效率
- or、in、like、'%M%' ,不走索引
- 在列上做四则运算的时候,不走索引
4、语法
create index 索引名 on 表名(列名1,列名2,...列名n);
create index stuIde on stu(stuid,stuname);
六、序列
1、作用
设置oracle的主键,自动增长
2、语法
create sequence 序列名称
[start with 初始量]
[increment by 递增量]
[maxvalue 最大值| nomaxvalue]
[minvalue 最小值| nominvalue]
[cycle | nocycle]
[cache 缓存个数| nocache];
create sequence seq;
----获取下一个值
select seq.nextval from dual;
----获取当前值
select seq.currval from dual;
insert into v_emp (empno,ename) values (seq.nextval,'亚瑟');
commit;
七、同义词(了解)
作用
- 可以很方便的访问其他用户的数据库对象
- 缩短了对象名字的长度
create [public] synonym 短的表名 for 长的表名;
create public synonym se1 for scott.emp;
select * from se1;