10月26日
一、默认值(default)
1.任务场景:在软件使用的过程中,会碰到某个列标题下的数据值大多数取值一致为了方便用户使用软件,我们最好提前将这个样数据值设置为默认值。
2.功能:在插入语句中为插入列表提供默认值。
3.格式
column datatype default
4.实践
例如:定义一个empbd(empbd number(4),nation varchar2(10))
drop table empbd;
create table empbd(empno number(4),nation varchar2(10));
插入数据
insert into empbd values(1000,'汉族');
insert into empbd(empno) values(2000);
查看数据表中数据
select*from empbd;
例如:定义一个带默认值的表结构,empbd(empno number(4),nation varchar2(10))
drop table empbd;
create table empbd(empno number(4),nation varchar2(10),default '汉族');
插入数据
insert into empbd values(1000,'汉族');
insert into empbd(empno) values(2000);
查看数据表中数据
select*from empbd;
二、外键约束
1.任务场景:在数据的应用过程中我们经常会碰到主表制约子表中的数据,一级子表制约主表中的数据需求在这样的情况下我们需要定义外键约束。
2.功能:主表的数据制约子表
表一级
create table table_name
(column datatype,
constraint table_name_column_fk foreign key(column_name)
references table_name(column) on delete cascade set null)
4.实践
例如:定义含有外键约束的数据表deptbd(主表)(deptno number(4)primary key,dname varchar(10))
子表empbd(empno number(4),ename varchar(10),deptno number(4) foreign key)。
第一完成主表的创建
drop table deptbd;
create table deptbd(deptno number(4)primary key,dname varchar2(20));
第一完成子表的创建
drop table empbd;
create table empbd(empno number(4),ename varchar2(20),deptno number(4),
constraint empbd_deptno_fk foreign key(deptno)
references deptbd(deptno) on delete cascade);
第三步插入数据,先主后从
insert into deptbd values(10,'information');
insert into empbd values(1000,'jingrui',10);
第四步查看数据表中数据
select*from deptbd;
select*from empbd;
第五步体会级联删除数据表中的数据
delete from deptbd;
select*from deptbd;
select*from empbd;
例如:体会外键约束在创建和删除数据表的过程中的操作次序
drop table deptbd;
drop table empbd;
体会先创建从表
create table empbd(empno number(4),ename varchar2(20),deptno number(4),
constraint empbd_deptno_fk foreign key(deptno)
references deptbd(deptno) on delete cascade);
通过体验在外键约束创建的时候,应该先主后从
体会删除数据表,先子后主
drop table deptbd;
drop table empbd;
通过体会删除数据表应该先子后主
三、修改数据表
1.任务场景:在数据表完成创建之后经常会碰到需要修改表结构的需求,比如增加列标题、修改列标题等。
2.格式
alter table table_name
add column……
modify column……
drop column……
rename column……
3.实践
例如:在empbd数据表中添加一个新的列标题sal number(8,2)
create table deptbd(deptno number(4)primary key,dname varchar2(20));
create table empbd(empno number(4),ename varchar2(20),deptno number(4),
constraint empbd_deptno_fk foreign key(deptno)
references deptbd(deptno) on delete cascade);
desc empbd;
alter table empbd
add(sal number(8,2));
desc empbd;
例如:将sal列标题重命名为salary
desc empbd;
alter table empbd rename column sal to salary;
desc empbd;
例如:将salary数据类型修改为number(10,3)
desc empbd;
alter table empbd modify(salary number(10,3));
desc empbd;
例如:将salary
desc empbd;
alter table empbd drop column salary;
desc empbd;
11.2
一、约束修改
1.任务场景:
软件升级过程中,会碰到旧数据导入新数据库中的需求,在这样的情况下有可能会出现因为新约束存在导致旧数据不可以正常导入的情况。这个时候我们可以通过修改约束状态解决旧数据的导入新库的需求。
2.格式
alter table table_name
{enable|disable}[validate|novalidate]
add constraint......
modify constrain......
rename......
二、添加约束
1.实践
例如:假设在deptbd数据表中添加主键约束。
第一步创建一个不带约束的数据表
drop table deptbd;
create table deptbd(deptno number(4),dname varchar(20));
第二步尝试在此数据表中插入数据
insert into deptbd values('10','marketing');
insert into deptbd values('10','information');
第三步查看数据表中数据
select*from deptbd;
delete from deptbd;
第四步在deptbd的数据表中添加主键约束
alter table deptbd add constraint deptbd_deptno_pk primary key(deptno);
第五步再次尝试在此数据表中插入数据
insert into deptbd values('10','marketing');
insert into deptbd values('10','information');
三、修改约束
1.任务场景:
1.约束状态分类
enable validate 、enable novalldate、disable validate、disable novalidate
2.实践
例如:将deptbd数据表中的约束修改为disable novalidate
delete from deptbd;
第一步修改deptbd数据表中约束的状态为disable novalidate
alter table deptbd modify primary key disable novalidate;
第二步尝试在此数据表中插入数据
insert into deptbd values('10','marketing');
insert into deptbd values('10','information');
第三步查看数据表中数据
select*from deptbd;
四、重命名约束
1.实践
例如:将deptbd数据表中deptbd_deptno_pk名字修改为deptno_pk.
使用user_constraint查看约束原名称
select table_name,constraint_name,constraint_type,status
from user_constraints
where table_name='DEPTBD';
第一步修改约束名称
alter table deptbd
rename constraint deptbd_deptno_pk to deptno_pk;
使用user_cinstraints查看约束原名称
select table_name,constraint_name,constraint_type,status
from user_constraints
where table_name='DEPTBD';
五、删除约束
1.实践
例如:删除deptno_pk约束
alter table deptbd drop constraint deptno_pk;
使用usr_constraints查看约束名称
select table_name,constraint_name,constraint_type,status
from user_constraints
where table_name='DEPTBD';
六、函数
1.分类
字符型函数:专门给数据类型为字符型的数据使用的函数
数值型函数:专门给数据类型为数值型的数据使用的函数
日期型函数:专门给数据类型为日期型的数据使用的函数
通用函数:三种数据类型都可以使用的函数
七、字符型函数
1.concat函数
(1)功能:字符串连接函数
(2)格式:
concat(参数1,参数2)
参数1:字符串,或者数据类型为字符串数据的列标题
参数2:字符串,或者数据类型为字符串数据的列标题
(3)实践
例如:将‘good’,‘string’连接到一起。
select concat('good','string')
from dual;
注释:dual虚拟表
例如:将Dept数据表中dname,loc两个列标题下的字符串连到一起。
select concat(dname,loc)
from dept;
2.initcap
(1)功能:将字符串首字母大写
(2)格式:
initcap(参数1)
参数1:字符串,或者数据类型为字符串数据的列标题
(3)实践
例如:将i am student 字符串首字母大写
select initcap ('i am student')
from dual;
3.length函数
(1)功能:计算字符串长度
(2)格式:
length(参数1)
参数1:字符串,或者数据类型为字符串数据的列标题
(3)实践
例如:统计i am student字符串
select length('i am student')
from dual;
例如:统计Dept数据表中dname列标题下的字符宽度
select length(dname)
from dept;