oracle_day03_DDL&DML

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35537301/article/details/83716003

一、使用DDL语句管理表

1、新用户操作数据库

  1. 创建表空间(只有DBA才能创建表空间),同时把数据文件也创建
  2. 创建用户,关联表空间
  3. 赋权限
  4. 切换用户,创建表
  5. 操作数据库

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的数据类型

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;

七、同义词(了解)

作用

  1. 可以很方便的访问其他用户的数据库对象
  2. 缩短了对象名字的长度
create [public] synonym 短的表名 for 长的表名;
create public synonym se1 for scott.emp;

select * from se1;

八、数据库备份

猜你喜欢

转载自blog.csdn.net/qq_35537301/article/details/83716003