DDL(Oracle)

时间:2023-03-09 01:33:07
DDL(Oracle)

DDL       数据定义       建表       建视图 建其他

drop

create table t (a varchar2 (10));可变字符串最大为10

transaction

-----------事务回退语句--------

•      rollback;                      所有语句都回退

•  -----------事务确认语句--------

•      commit;//此时再执行rollback无效

事务(Transaction)一系列操作要么同时完成    要么不完成

updata insert等也算事务事务起始于第一条语句

执行/碰到 DDL  DCL(授权) 语句事务自动提交

当正常断开连接的时候例如exit,事务自动提交。  当非正常断开连接,例如直接关闭dos窗口或关机,事务回滚

char 定长字符串   输入多少都占固定长度 (效率问题,定长效率高<如:数组>)

Number (8,3)  数字8位 小数3 位

Date              日期时间

Long             变长字符串 最长2G

Varchar2        最多4k 4096字节

五个约束条件: 非空 唯一 主键 外键 check

约束条件: 在数据库中算是一个对象

非空:  not null

唯一: unique  不能重复, 可以随意插空值,两个空值不算重复

constraint stu_name_email_uni unique(email, name) (组合约束)

主键: primary key    可以唯一标识整条记录,(语法上:唯一非空的组合)

逻辑,代表单独的每条不同记录,(现实的逻辑)(也可以组合约束)

constraint stu_id_pk primary key (id),

外键:  建立在一张表的两个字段,两个表的两个字段

  被参考字段必须是主键 有子记录不能删(有关联字段)

•  --------------外键约束   被参考字段必须是主键 -------------

   constraint stu_class_fk foreign key (class)references class(id)

修改表结构

•  ---------------修改表结构,添加字段------------------

•      alter table stu add(addr varchar2(29));

•  ---------------删除字段--------------------------

•      alter table stu drop (addr);

•  ---------------修改表字段的长度------------------

•      alter table  stu modify(修改) (addr varchar2(50));

//更改后的长度必须要能容纳原先的数据精度

•  ----------------删除约束条件----------------

•      alter table stu drop constraint  约束名

•  -----------修改表结构添加约束条件---------------

•      alter table  stu add constraint stu_class_fk foreign key(class) references class (id);

数据字典表

Desc user_tables;          当前用户下有多少张表

•       desc dictionary;

•       //数据字典表共有两个字段 table_name comments

•       //table_name主要存放数据字典表的名字

•       //comments主要是对这张数据字典表的描述

---查看当前用户下面所有的表、视图、约束-----数据字典表user_tables---

•      select table_name from user_tables;

•      select view_name from user_views;

•      select constraint_name fromu ser_constraints;

索引

-------------索引------------------

•      create index idx_stu_email on stu(email);

// 在stu这张表的email字段上建立一个索引:idx_stu_email

create index idx_stu_email on stu(email,class);

两个字段组合建索引

---------- 删除索引 ------------------

•      drop index idx_stu_email;

---------查看所有的索引----------------

•      select index_name from user_indexes;

加主键 或唯一约束   自动加索引

索引-读取效率高,插入效率低,访问量大,不轻易建立索引,索引 占据大量空间

视图

-----------创建视图-------------------

视图 是一个子查询

•      create view v$stu as selesct id,name,agefrom stu;

•  视图的作用: 简化查询 保护我们的一些私有数据,通过视图也可以用来更新数据,但是我们一般不这么用缺点:要对视图进行维护(改表结构时,需更新)

创建序列

产生一个唯一的不间断的数字序列 ,一般做主键 一般一个表对应一个

•      create sequence seq;//创建序列

•      select seq.nextval from dual;// 查看seq序列的下一个值

•      drop sequence seq;//删除序列

insert into article values(seq.nextval,'a','b');