如何创建表以及设计表需要注意什么,oracle五种限制
2014-12-20 22:19
911 查看
1、表:是数据库用来存储数据懂得对象,是有结构的数据的集合,是整个数据库系统的基础。概念的东西都是抽象的,其实表就是用来存储数据的。
2、表的组成
desc dept
![](http://s3.51cto.com/wyfs02/M02/57/35/wKiom1SUNXmAyYMpAACMkUKxlCE634.jpg)
DEPTNO:该列类型为number(2),表示该列的值只允许最大两个字符(一个英文字符或者一个数字都占一个字符,而一个汉字则占用两个字符)的数字,这个数字可以是1或者99,但不能是100(这是3个字符);NOT NULL表示插入的数据不能为空。
DNAME:该列类型为varchar2(14),表示该列允许最大14个字符。也就是部门名称不能超过14个英文字母或者7个汉字,这一列没有NOT NULL,即可以不输入任何值。
LOC:该列类型为varchar2(13),表示该列允许最大13个字符。就是地点名称不能超过13个英文字母或者6个汉字,这一列没有NOT NULL,即可以不输入任何值。
3、标的列有那些约束
数字:表示的是阿拉伯数字
文本表示的是字符串
4、oracle的约束条件
主键:主键是关系数据库中某一行或者某几列的集合,他能够唯一标识,主键不能包含空值(null),也就是说,员工的姓名可以重复,但是员工的编号是不可以重复的
外键(foreign):外键是关系型数据库表中的一列或者是某几列的组合,它的值或者与另外一个表的一列或者某几列相匹配,这一列是另一个表的主键
非空:就是这一列的值不能为空(NOT NULL)
唯一:这个列的值在表中是唯一存在的,不能重复,但是可以为空值;
条件:可以对列的值设定在某个条件范围之内,比如人的年龄不能为负,可以设置这一列的条件大于0小于200.
表的主键和唯一约束很像,有哪些区别?
表的主键是列的值为表中的唯一标识,不能为空(null),而表的唯一约束是列的值在表中是唯一存在的,可以为空值(null)。
5、如何创建表
创建表:create table Item1(Itemno number(2) not null, Itemname varchar2(20) not null);
插入公司项目的数据:insert into Items(Itemno, Itemname) values (1,'beijingxiangmu');
insert into Items(Itemno) values (1);
insert into Items(Itemno, Itemname) values (2, 'shenzhenxiangmu');
insert into Items(Itemno, Itemname) values (2, 'shanghaixiangmu');
insert into Items(Itemname) values ('suzhouxiangmu');
![](http://s3.51cto.com/wyfs02/M02/57/42/wKiom1SWnNnhpnEhAACFxhfN688378.jpg)
表中的现象:项目编号有重复,有的项目没有编号,有的项目只有编号没有项目名称
解释原因:item表中没有具体的约束来限制有效数据,例如未使用主键、外键、唯一、非空、条件约束
6、删除表:DROP TABLE ITEM;
drop table:是删除表的SQL语句关键字,后面接表的名字。
7、删除之后创建表item的时候应设置Itemno为主键,Itemname不能为空
CREATE TABLE Items (Itemno numble(2) constraint PK_Items primary key, Itemname varchar2(20) not null);
解释:create table:创建表时,必不可少的关键字,可用于开头随后跟表名;
constraint:定义表中约束所必须的关键字,后面跟约束名,而PK_Items即为Items表主键的约束 名;
primary key:主键约束关键字,表示这一列为表的主键。
插入数据
insert into Items(Itemno, Itemname) values (1,'beijingxiangmu');insert into Items(Itemno) values (1);insert into Items(Itemno, Itemname) values (2, 'shenzhenxiangmu');insert into Items(Itemno, Itemname) values (2, 'shanghaixiangmu');insert into Items(Itemname) values ('suzhouxiangmu');8、创建带有外键的表create table Business(BusiNo number(2) constraint PK_Business primary key ,-----------constraint前无“,”
BusiName varchar2(32) not null,
ItemNo number(2), constraint FK_Business foreign key(ItemNo) references Items(ItemNo),-----------------------------------------------------constraint前面必须有逗号
StratTime date);
![](http://s3.51cto.com/wyfs02/M02/57/43/wKiom1SWrZvCK-QVAAEY2Ik00Bk590.jpg)
foreign key()....references 这是创建表外键必须的SQL语句关键字,并且该列需要和另外一个表的主键对应起来。这里的ItemNO列与Items表中的ItemNo列对应起来,必须在Items表中ItemNo列存在的数据才可以插入Business表中ItemNo的列数据
![](http://s3.51cto.com/wyfs02/M02/57/40/wKioL1SWsFiATiT_AACH5AkN4fs532.jpg)
插入数据:INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (1,'BOOK',1,TO_DATE('2008-08-08','YYYY-MM-DD'));INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (2,'GLASS',1,TO_DATE('2008-09','YYYY-MM'));INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (3,'APPLE',1,NULL);INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (4,'SUPERMARKET',2,SYSDATE);
![](http://s3.51cto.com/wyfs02/M01/57/43/wKiom1SWwdqhsDrvAACFcYScoH0107.jpg)
TO_DATE:是oracle的内部函数,可以把字符串转变为时间,这里把字符串“2008-08-08”转变为时间报错原因: 如果是主键,则列的值不能有重复数据
如果是外键,需要确认Items表的itemno中是否存在3号这个项目,不存在则不能增加。这就可以显示出两个表关联外键所起的作用;
9、如何设置表中列值的条件和唯一性CREATE TABLE COMPUTERS(COMPNO NUMBER(4) CONSTRAINT PK_COMP PRIMARY KEY,COMPMODEL VARCHAR2(64) UNIQUE,BUYTIME DATE,PRICE NUMBER(7,2) CONSTRAINT CH_PRICE CHECK(PRICE>0 AND PRICE<30000),OWNER VARCHAR2(32));
![](http://s3.51cto.com/wyfs02/M02/57/44/wKiom1SWx-6x4G8tAAChSVIlkNI641.jpg)
UNIQUE:这是唯一约束的关键字,表示该列的值具有唯一性,
CONSTRAINT NAME CHECK...:这是条件约束的关键字,插入更改的数据需要符合这些条件才能把数据提交到数据库中;
DATE:这是oracle数据库中的表列数据类型,这里为时间类型,输入数据必须为时间格式。
NUMBER(7,2):这里的number为数字类型,表示只能是7位数字,可以保持两位小数。
五种约束条件:primary key(主键):constraint PK_name primary key foreign key(外键):constraint FK_name foreign key(列) references items(列)not null(非空)unique(唯一)check(条件):constraint CH_name check(条件)
2、表的组成
desc dept
![](http://s3.51cto.com/wyfs02/M02/57/35/wKiom1SUNXmAyYMpAACMkUKxlCE634.jpg)
DEPTNO:该列类型为number(2),表示该列的值只允许最大两个字符(一个英文字符或者一个数字都占一个字符,而一个汉字则占用两个字符)的数字,这个数字可以是1或者99,但不能是100(这是3个字符);NOT NULL表示插入的数据不能为空。
DNAME:该列类型为varchar2(14),表示该列允许最大14个字符。也就是部门名称不能超过14个英文字母或者7个汉字,这一列没有NOT NULL,即可以不输入任何值。
LOC:该列类型为varchar2(13),表示该列允许最大13个字符。就是地点名称不能超过13个英文字母或者6个汉字,这一列没有NOT NULL,即可以不输入任何值。
3、标的列有那些约束
数字:表示的是阿拉伯数字
文本表示的是字符串
4、oracle的约束条件
主键:主键是关系数据库中某一行或者某几列的集合,他能够唯一标识,主键不能包含空值(null),也就是说,员工的姓名可以重复,但是员工的编号是不可以重复的
外键(foreign):外键是关系型数据库表中的一列或者是某几列的组合,它的值或者与另外一个表的一列或者某几列相匹配,这一列是另一个表的主键
非空:就是这一列的值不能为空(NOT NULL)
唯一:这个列的值在表中是唯一存在的,不能重复,但是可以为空值;
条件:可以对列的值设定在某个条件范围之内,比如人的年龄不能为负,可以设置这一列的条件大于0小于200.
表的主键和唯一约束很像,有哪些区别?
表的主键是列的值为表中的唯一标识,不能为空(null),而表的唯一约束是列的值在表中是唯一存在的,可以为空值(null)。
5、如何创建表
创建表:create table Item1(Itemno number(2) not null, Itemname varchar2(20) not null);
插入公司项目的数据:insert into Items(Itemno, Itemname) values (1,'beijingxiangmu');
insert into Items(Itemno) values (1);
insert into Items(Itemno, Itemname) values (2, 'shenzhenxiangmu');
insert into Items(Itemno, Itemname) values (2, 'shanghaixiangmu');
insert into Items(Itemname) values ('suzhouxiangmu');
![](http://s3.51cto.com/wyfs02/M02/57/42/wKiom1SWnNnhpnEhAACFxhfN688378.jpg)
表中的现象:项目编号有重复,有的项目没有编号,有的项目只有编号没有项目名称
解释原因:item表中没有具体的约束来限制有效数据,例如未使用主键、外键、唯一、非空、条件约束
6、删除表:DROP TABLE ITEM;
drop table:是删除表的SQL语句关键字,后面接表的名字。
7、删除之后创建表item的时候应设置Itemno为主键,Itemname不能为空
CREATE TABLE Items (Itemno numble(2) constraint PK_Items primary key, Itemname varchar2(20) not null);
解释:create table:创建表时,必不可少的关键字,可用于开头随后跟表名;
constraint:定义表中约束所必须的关键字,后面跟约束名,而PK_Items即为Items表主键的约束 名;
primary key:主键约束关键字,表示这一列为表的主键。
插入数据
insert into Items(Itemno, Itemname) values (1,'beijingxiangmu');insert into Items(Itemno) values (1);insert into Items(Itemno, Itemname) values (2, 'shenzhenxiangmu');insert into Items(Itemno, Itemname) values (2, 'shanghaixiangmu');insert into Items(Itemname) values ('suzhouxiangmu');8、创建带有外键的表create table Business(BusiNo number(2) constraint PK_Business primary key ,-----------constraint前无“,”
BusiName varchar2(32) not null,
ItemNo number(2), constraint FK_Business foreign key(ItemNo) references Items(ItemNo),-----------------------------------------------------constraint前面必须有逗号
StratTime date);
![](http://s3.51cto.com/wyfs02/M02/57/43/wKiom1SWrZvCK-QVAAEY2Ik00Bk590.jpg)
foreign key()....references 这是创建表外键必须的SQL语句关键字,并且该列需要和另外一个表的主键对应起来。这里的ItemNO列与Items表中的ItemNo列对应起来,必须在Items表中ItemNo列存在的数据才可以插入Business表中ItemNo的列数据
![](http://s3.51cto.com/wyfs02/M02/57/40/wKioL1SWsFiATiT_AACH5AkN4fs532.jpg)
插入数据:INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (1,'BOOK',1,TO_DATE('2008-08-08','YYYY-MM-DD'));INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (2,'GLASS',1,TO_DATE('2008-09','YYYY-MM'));INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (3,'APPLE',1,NULL);INSERT INTO BUSSINESS(BUSINO,BUSINAME,ITEMNO,STARTTIME) VALUES (4,'SUPERMARKET',2,SYSDATE);
![](http://s3.51cto.com/wyfs02/M01/57/43/wKiom1SWwdqhsDrvAACFcYScoH0107.jpg)
TO_DATE:是oracle的内部函数,可以把字符串转变为时间,这里把字符串“2008-08-08”转变为时间报错原因: 如果是主键,则列的值不能有重复数据
如果是外键,需要确认Items表的itemno中是否存在3号这个项目,不存在则不能增加。这就可以显示出两个表关联外键所起的作用;
9、如何设置表中列值的条件和唯一性CREATE TABLE COMPUTERS(COMPNO NUMBER(4) CONSTRAINT PK_COMP PRIMARY KEY,COMPMODEL VARCHAR2(64) UNIQUE,BUYTIME DATE,PRICE NUMBER(7,2) CONSTRAINT CH_PRICE CHECK(PRICE>0 AND PRICE<30000),OWNER VARCHAR2(32));
![](http://s3.51cto.com/wyfs02/M02/57/44/wKiom1SWx-6x4G8tAAChSVIlkNI641.jpg)
UNIQUE:这是唯一约束的关键字,表示该列的值具有唯一性,
CONSTRAINT NAME CHECK...:这是条件约束的关键字,插入更改的数据需要符合这些条件才能把数据提交到数据库中;
DATE:这是oracle数据库中的表列数据类型,这里为时间类型,输入数据必须为时间格式。
NUMBER(7,2):这里的number为数字类型,表示只能是7位数字,可以保持两位小数。
五种约束条件:primary key(主键):constraint PK_name primary key foreign key(外键):constraint FK_name foreign key(列) references items(列)not null(非空)unique(唯一)check(条件):constraint CH_name check(条件)
相关文章推荐
- 16_Oracle_Admin_什么是表空间以及如何创建表空间
- 【OC学习-21】什么是类的类目category和类的延展extension?以及如何创建和注意事项
- 如何不用oracle client直接使用plsql远程连接oracle数据库以及需要注意的事项
- 每天两道oracle笔试题+第四天:1、创建用户时,需要授予新用户什么权限方能使其连上数据库?2、备份如何分类?
- [VB.NET]在VB.NET 2005中,如何创建Oracle的存储过程,以及如何来使用存储过程语句?
- 用flash builder创建手机项目以及发布app需要注意的细节
- logo设计中,你需要注意什么?
- oracle中创建序列以及序列使用注意事项
- 从MySQL迁移到Oracle需要注意些什么
- solr_4.5.0_03:什么是 core 以及如何创建 core
- [ChneChen的随笔][管理之道]什么才是我们需要的解决问题的方法(从如何限制公司电脑使用U盘解决之道谈起)
- APP如何发布到Google play 商店?以及有哪些需要注意的点
- 游戏的新手任务的作用是什么,是否一定有必要?新手任务设计需要注意什么?
- 在PPC上面用.NET CF开发应用需要注意些什么——(一)CPU、OS以及CLR差别简述
- 如何去做交互设计?交互设计师需要做什么?
- lua如何产生随机数,以及需要注意的问题
- Oracle在sys模式下创建触发器报错的原因以及如何更改
- 数据从MySQL迁移到Oracle需要注意些什么
- JAVA动态模块的设计实现以及如何通过newInstance()来创建带参的构造类实例
- Oracle 11.2 单实例连接ASM时需要注意的事项以及问题处理