1、表:是数据库用来存储数据懂得对象,是有结构的数据的集合,是整个数据库系统的基础。概念的东西都是抽象的,其实表就是用来存储数据的。

2、表的组成

desc dept

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');

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);

wKiom1SWrZvCK-QVAAEY2Ik00Bk590.jpg

foreign key()....references 这是创建表外键必须的SQL语句关键字,并且该列需要和另外一个表的主键对应起来。这里的ItemNO列与Items表中的ItemNo列对应起来,必须在Items表中ItemNo列存在的数据才可以插入Business表中ItemNo的列数据

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);

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));

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(条件)