Oracle数据库之管理语言
DDL:数据定义语言
create表创建
-
创建表(不加约束)
create table tb_user(
userid number(5),
username varchar2(30)
); -
创建表(同时创建约束+默认名称)
create table tb_user(
--主键约束
userid number(5) primary key,
--非空约束
username varchar2(30) not null,
--检查约束
userpwd varchar2(20) check(length(userpwd) between 4 and 18),
--默认约束 检查约束
age number(3) default(18) check(age>=18),
--默认约束 检查约束
gender char(3) default('男') check(gender in('男','女')),
--唯一约束
email varchar2(30) unique,
--默认约束
regtime date default(sysdate)
); -
创建表(同时创建约束+指定名称) 在字段的后面指定约束名直接添加
create table tb_user(
--主键约束
userid number(5) constraint pk_user primary key,
--非空约束
username varchar2(30) constraint nameNotNull not null,
--检查约束
userpwd varchar2(20) constraint ckPwd check(length(userpwd) between 4 and 18),
--默认约束 检查约束
age number(3) default(18) constraint ck_age check(age>=18),
--默认约束 检查约束
gender char(3) default('男') check(gender in('男','女')),
--唯一约束
email varchar2(30) unique,
--默认约束
regtime date default(sysdate)
); -
创建表(同时创建约束+指定名称) 在结构结束之前为当前表中指定字段添加约束
create table tb_user(
userid number(5),
username varchar2(30),
userpwd varchar2(20) constraint nn_user_pwd not null ,
age number(3) default(18) ,
gender char(3) default('男'),
email varchar2(30),
regtime date default(sysdate),
constraint pk_user_id primary key (userid),
constraint name_not_null check(username is not null),
constraint ck_user_name check(length(username)between 4 and 20) ,
constraint ck_user_pwd check(length(userpwd) between 4 and 18),
constraint ck_user_age check(age>=18),
constraint ck_user_gender check(gender in('男','女')),
constraint uq_user_email unique(email)
); -
已有表中拷贝结构
-
拷贝结构 emp
create table emp_his as select ename,sal from emp where 1!=1
-
拷贝结构 emp +数据
create table emp_his2 as select ename,sal from emp where sal>2000
-
drop删除表
-
删除表:先删除从表 再删除主表 ;同时删除约束
drop table emp_his;
-
存在主外键关联表的删除
-
删主表:不能直接删除
-
先删所有从表,在删主表
-
删除主表同时级联删除主外键约束
drop table tb_txt cascade constraints;
-
-
删除从表 : 直接删除
-
约束
-
物理约束 : 表结构上为字段添加约束,推荐主外键约束可以定义物理约束
-
外键约束
-
直接参考:cid number(5) references clazz(cid)
-
添加约束,再参考:cid number(5) constraint fk_cid references clazz(cid)
-
结构结束前写约束:constraint fk_cid foreign key(cid) references clazz(cid)
-
结构外添加约束:alter table student add constraint pk_stu_cid foreign key(cid) references clazz(cid) ;
-
-
-
逻辑约束 : 在后端逻辑代码上添加判断,逻辑,检查等约束建议定义为逻辑约束
-
追加约束
alter table tb_user add constraint pk_user_id primary key (userid);
check(length(username)between 4 and 20) ;
alter table tb_user add constraint ck_user_pwd check(length(userpwd) between 4 and 18);
alter table tb_user add constraint uq_user_email unique(email);-
默认与非空
alter table tb_user modify age default 18;
alter table tb_user modify username not null; -
alter修改表结构
-
修改表名
rename student to haha_stu;
DML:数据操控语言
insert插入
向数据表张插入一条记录
用法:
-
insert into 表名 values(值列表);
-
insert into 表(指定列) values(值列表);
-
insert into 表名 select 查询列 from 源表 where 过滤数据;
-
insert into 表(指定列) select 查询列 from 源表 where 过滤数据;
update修改
修改数据表中的一条或多条记录,也可以修改数据表中的所有记录,但是,它的操作 对象仍是记录
用法:
-
update 表名 set 字段=值 [,....] where 过滤行记录;
-
update 表名 set (字段列表) =(select 字段列表 from 源表 where 过滤源表记录) where 更新记录的条件手动更改字段值
delete删除
用于修改已存在表中的记录的内容
-
用法:
-
delete from 表名;
-
delete from 表名 where 行过滤条件; 注意:from可省略
-
-
删除主外键约束关系下的两张表中的数据:
-
从表可直接删除
-
主表删除
-
主表没被从表引用可直接删除
-
主表被引用不能直接删 解决方法:
-
先删从表引用主表的数据,再删主表数据
-
删主表数据同时将从表的外键设为null 前提:创从表时,外键字段约束 + on delete set null
cid number(5) references clazz(cid) on delete set null;
-
删主表时,直接删从表与主表连接的数据 前提:创从表时,外键字段约束 + on delete cascade(级联删除)
cid number(5) references clazz(cid) on delete cascade
-
-
-
truncate数据截断
-
是什么:实现截断删除数据
-
怎么用:
truncate table tb_student;
-
与delete的区别:
-
数据截断没有事务管理,操作不可回滚,而delete可以通过事务管理
-
数据截断不能操作主表,从表结构上检查如果存在从表,不能截断
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~