Oracle学习笔记之表和约束

Oracle学习笔记(JavaWeb)

表和约束



表和约束

1.什么是表?

​ 数据库中存储数据的元素称之为表。

2.创建表

2.1 基本语法

​ create table 表名(

​ 列名 类型,

​ 列名 类型

​ )

2.2 数据类型
类型参数描述
char(n)n取值范围1到2000定长字符串,n代表字节长度。如果不指定长度,缺省为1个字节
varchar2(n)n的取值范围1到4000字节可变长的字符串,这种数据类型可以存储数字,字母,ASCII码字符集。 如果数据长度没有达到最大值n,oracle可以根据存储数据的大小自动调节字段的长度,如果数据前后存在空格,oracle会自动将其删除。
number(m,n)m的取值范围1到38。 n的取值范围 -84到127可变长的数值列,允许为0,正数,负数。m是所有有效数字的位数,n是小数点后的位数。如果数值超出了位数有效限制就会截取多余的位数。
date没有参数从公元前4712年1月1日到公元4712年12月31日的所有合法日期。缺省的格式DD-MON-YY:26-04-21
long没有参数可变长字符列。最大长度限制为2GB。一般用于不需要做检索的长串数据。
raw(n)n的取值范围1到2000可变长二进制数据。用于存储较小的文件和图形。
long raw没有参数可变成的二进制数据。最大长度为2GB。用于存储较大的文件和图形。
blob没有参数存储特大数据。最大长度为4GB。

2.3 创建表实例
CREATE TABLE STUDENT(
    stuid varchar2(50),
    sname char(50),
    phone number(11),
    classes varchar2(50),
    sex char(2) 
)

3. 操作表结构

3.1添加列
//添加一列
ALTER TABLE STUDENT ADD (JAVASCORE NUMBER(3,1));
//添加多列
ALTER TABLE STUDENT ADD (JAVASCORE NUMBER(3,1),PYTHONSCORE NUMBER(3,1));
3.2 删除列
//删除一列
ALTER TABLE STUDENT DROP (JAVASCORE);
//删除多列
ALTER TABLE STUDENT DROP (JAVASCORE,PYTHONSCORE);
3.3 表重命名
 RENAME STUDENT TO STU; 
 //RENAME 旧表名 TO 新表名;

4.约束

4.1 主键约束
ALTER TABLE STU ADD CONSTRAINT PK_STUID PRIMARY KEY(STUID);
4.2 唯一约束
ALTER TABLE STU ADD CONSTRAINT UQ_PHONE UNIQUE(PHONE);
4.3 默认约束
ALTER TABLE STU modify ADDRESS default '地址不详';
4.4 检查约束
ALTER TABLE STU ADD CONSTRAINT CK_AGE CHECK(AGE BETWEEN 17 AND 22);
4.5 非空约束
CREATE TABLE CARDID (
    CID VARCHAR2(20) PRIMARY KEY,
    --非空约束
    NATIVEPLACE VARCHAR2(30) not null,
    STUID VARCHAR2(20)
)
4.6 外键约束
//一个表中可以存在多个外键约束
//主表中的外键指向是从表中的主键
//语法:ALTER TABLE 主表 ADD CONSTRAINT 外键名 FOREIGN KEY (主表的外键字段) REFERENCES 从表名(从表主键);

ALTER TABLE STU ADD CONSTRAINT FK_TID FOREIGN KEY (TID) REFERENCES CARDIDSS(TID);

5.数据库设计三范式

5.1第一范式(确保每列保持原子性)

​ 第一范式是最基本的范式,如果数据库表中的所有字段都是不可分解的原子值那么就说明该数据库

第一范式。

​ 错误实例:

编号姓名性别家庭地址
1001xx四川省南充市小毛村
1002xx辽宁省锦州市小曹村
1003xx安徽省淮南市小吴村

​ 正确实例:

编号姓名性别省份城市详细地址
1001xx四川省南充小毛村
1002xx辽宁省锦州小曹村
1003xx安徽省淮南小吴村
5.2第二范式(确保表中的每列都和主键有关)

​ 第二范式是建立在第一范式基础上,第二范式需要确保数据库表中的每一列都和主键有关,而不是只与

主键的某一部分相关(主要针对于联合主键)。也就是说一个数据库表中只能存储一种数据,不能把多种数据

保存在同一个表中。

​ 错误实例

订单编号商品编号商品名称商品价格客户姓名所属单位联系方式
10018001兰蔻小黑瓶1399冯超shenxxxx123456
10028002海蓝之谜面霜1099冯超xxxx123456
10038001兰蔻小黑瓶1399王舒卉xxxx456789

​ 正确实例:

客户信息表

客户编号客户名称所属单位联系方式
4001冯超xxxx123456
4002王舒卉xxxx456789

商品信息表

商品编号商品名称商品价格
8001兰蔻小黑瓶1399
8002海蓝之谜面霜1099

订单表

订单编号客户编号商品编号
100140018001
100240018002
100340028001
5.3 第三范式(确保每列都和主键列直接相关)

​ 第三范式需要确保数据表中每一列都和主键直接相关而不是间接相关

​ 错误实例:

订单编号订单项目负责人客户编号客户名称客户所属单位
1001挖掘机xx8001老毛大连毛氏
1002塔吊xxx8002老曹锦州曹氏

​ 正确实例:

订单信息表

订单编号订单项目负责人客户编号
1001挖掘机xx8001
1002塔吊xxx8002

客户信息表

客户编号客户名称客户所属单位
8001老毛大连毛氏
8002老曹锦州曹氏
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值