DDL、DML、DQL语言基础

1.DDL—数据定义语言

​ DDL——数据定义语言,可以创建、修改和删除表。

1.1create 表创建

​ 表创建遵循三范式:

  1. 列不可再分,字段的原子性

  2. 添加主键(数据量多,频繁操作的需要定义主键)

  3. 拆分消除传递依赖,建立主外键关系

    创建表的一般格式:

create table 表名(

​ 字段名1 字段类型1 约束条件,

​ 字段名2 字段类型2 约束条件,

​ …

​ 其中约束条件是对字段值的要求;常用约束条件包含以下几种:

关键字功能
primary key主键约束:非空+唯一
not null非空约束,结果不能为空值
unique唯一约束,该字段值只能出现一次
default ()默认约束,当不给字段提供值时存在默认值
check()检查字段值是否与规定值相同
foreign key外键约束,定义该字段为外键,与主表主键相连接。当直接在字段后面定义时,references 主表(字段名),另起一行时:constraint 提示名 foreign key(从表字段名) references 主表(字段名)
--创建一个名为CGNDEPT的主表
create table CGNDEPT (
       deptno number (3) primary key,--主键
       dname varchar (18)
);
--插入数据
insert into CGNDEPT values (101,'设计');
insert into CGNDEPT values (102,'生产');

--创建一个名为CGN,有6个字段并按照一定条件约束
create table CGN (
       empno varchar2 (8) primary key,--主键:非空且唯一,该主键是该表的主键
       ename varchar2 (18) constraint ck_null not null,--非空值
       esex char (1 char) constraint ck_sex check(esex in('男','女')),--检查字段内容
       ebirthday date default (sysdate),--默认约束
       ephone number (11) unique,--唯一约束
       deptno number (3) references CGNDEPT(deptno)--外键约束,与外键连接的约束
       --constraint ck_sex foreign key(deptno) references NGCDEPT(deptno)
       --在字段后面只需要references 引用即可
       --当另起一行时,constraint  和   foreign一起使用
);
--插入数据
insert into CGN values ('C880188','张三','男',default,13354895674,101);
insert into CGN values ('C880178','李四','男',to_date('1999-5-5','yyyy-mm-dd'),13012651230,102);

select * from CGN;
select * from CGNDEPT;

drop table CGN;
drop table CGNDEPT;

1.2alter 表结构修改

表名修改:rename 原表名 to 新表名

修改列:alter table 表名 rename column 原列名 to 新列名

修改类型:alter table 表名 modify (字段 类型)

修改约束:先删除 后添加

添加列:alter table 表名 add 字段 类型

删除列:alter table 表名 drop column 字段

--修改表名
rename tb_txt to tb_txt_new;
--修改列名
alter table tb_txt_new rename column txtid
to tid;
--修改类型
alter table tb_txt_new modify(tid
varchar2(20));
--添加列
alter table tb_txt_new add col varchar2(30);
--删除列
alter table tb_txt_new drop column col;
select * from tb_txt_new;

1.3drop 表删除

drop table 表名;

--删除名为CGNDEPT的表格
drop table CGNDEPT;

2.DML——数据操作语言

​ 数据操作语言DML可以用来做数据的增删改。

2.1insert

insert可以在已经存在的表格中添加数据,其格式为:

  • insert into 表名 values (所有字段的值列表);

​ 此方式添加一条数据,必须定义所有字段:

--在名为dept的表中增加以行数据,且定义了各字段的值
insert into dept values (50,'教学部','上海');
  • insert into 表名(字段1,字段2,…) values (指定字段的值列表);

    添加一条数据并为指定字段赋值:

--在名为dept表中的deptno,dname字段添加值
insert into dept(deptno,dname) values (60,'后勤部');

2.2delete

​ delete可以删除数据源中的所有数据,也可以指定删除满足条件的数据。

  • delete from 数据源;
--删除dept表中的全部数据
delete from dept;
  • delete from dept where 条件;
--删除dept表中 deptno为50和60的数据
delete from dept where deptno in(50,60);

​ 以上删除操作是在不考虑主从表的情况下进行的,当删除表的数据与其他表由主外键连接时,需要格外注意。

​ 当删除的是从表中的数据,可以直接删除,当删除主表中的数据没有与从表产生连接,也可以直接删除。

--直接删除从表
delete from emp;
--删除主表中的dept为40的字段值,该值不在从表的值列表中
delete from dept where deptno=40

​ 若要删除主表中某一数据时,且主从表中都存在的,则不可直接删除主表数据,要先删除从表中的数据,再删除主表中的数据,顺序不能颠倒。

--先删除从表中字段deptno值为10的数据
delete from emp where deptno=10;
--最后删除主编中字段为deptno值为10的数据
delete from dept where deptno=10;

​ 此外还可以在从表外键设置on delete cascade,该方法在删除主表数据的同时,也能将引用了主表数据的从表同样内容的整行数据进行删除。

--创建一个名为CGNDEPT的主表
create table CGNDEPT (
       deptno number (3) primary key,--主键
       dname varchar (18)
);
--插入数据
insert into CGNDEPT values (101,'设计');
insert into CGNDEPT values (102,'生产');

--创建一个名为CGN,有6个字段并按照一定条件约束
create table CGN (
       empno varchar2 (8) primary key,--主键:非空且唯一,该主键是该表的主键
       ename varchar2 (18) constraint ck_null not null,--非空值
       esex char (1 char) constraint ck_sex check(esex in('男','女')),--检查字段内容
       ebirthday date default (sysdate),--默认约束
       ephone number (11) unique,--唯一约束
       deptno number (3) references CGNDEPT(deptno) on delete cascade--外键约束,与外键连接的约束    on delete cascade
       --constraint ck_sex foreign key(deptno) references NGCDEPT(deptno)
       --在字段后面只需要references 引用即可
       --当另起一行时,constraint  和   foreign一起使用
);
--插入数据
insert into CGN values ('C880188','张三','男',default,13354895674,101);
insert into CGN values ('C880178','李四','男',to_date('1999-5-5','yyyy-mm-dd'),13012651230,102);
--删除主表中数据的同时,从表数据中deptno=101的数据也会被删除
delete from cgndept where deptno=101;

​ 当从表外键字段设置on delete set null时,删除主表时,从表的数据也会被删除,但是不会被整行删除,而是将该字段的值删除后使用null代替。

2.3update

​ update可以修改表中所有数据的指定字段的值。

update 表名 set 字段名=z字段值,字段名=字段值…;

--将emp表中sal字段的值都+100,deptno字段的值都设置为40
update emp set sal=sal+100,deptno=40;

3.DQL

select 数据 from 数据源 where 行过滤条件 group by 分组字段 having 过滤组信息 order by …;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值