Oracle——六约束(主键,外键,非空,唯一,默认,检查)

创建表:

create table student(
        id number,
        name varchar2(10),
        phone number,
        class varchar2(10)
);

六大约束

表级约束和行级约束:

表级约束:
create table student(
        id number,
        constraint pk_id primary key(id)
);

行级约束:
create table student(

        id number primary key(id)
);

1.主键约束(Primay Key Coustraint) 唯一性,非空性 

表级别设置主键:

建表时定义:
create table student(
        id number,
        constraint pk_id primary key(id)
);

外部定义:alter table student add constraint pk_id primary key(id);

2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个 

建表后创建唯一约束:alter table student add constraint uk_phone unique(phone);

3.检查约束 (Check Counstraint) 对该列数据的范围、格式的限制(如:年龄、性别等) 

建表后创建检查约束:alter table student add constraint ck_class check(class>=1);

4.默认约束 (Default Counstraint) 该数据的默认值

建表后创建默认约束:alter table student modify (name varchar2(10)  default 'stu1');

 5.外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列

create table school(
        sname varchar2(30),
        sphone number,
        smoney number(20), 
        swhere varchar2(30)
        snumber number
);

create table student(
        id number,
        name varchar2(10),
        phone number,
        class varchar2(10),
        sname varchar2(30)
);
为school表中sname设置主键:
 alter table school add constraint school_sname_pk primary key(sname);


为student表中sname设置外键:
 alter table student add constraint student_sname_fk foreign key(sname) references school(sname);

 6.非空约束(NOT NULL)

alter table student modify class not null;

### 创建 MySQL 表的语法与特性 在 MySQL 中,`CREATE TABLE` 语句用于定义新表及其结构。以下是创建包含主键 (`PRIMARY KEY`) (`FOREIGN KEY`)约束 (`NOT NULL`)唯一约束 (`UNIQUE`) 和自动增长属性 (`AUTO_INCREMENT`) 的表格的具体方法。 #### 主键 (Primary Key) 主键是一种特殊的唯一索引,它不允许 `NULL` 值并确保每行记录具有唯一的标识符。可以通过以下方式声明: ```sql id INT AUTO_INCREMENT PRIMARY KEY, ``` 此代码片段表示列 `id` 是整数类型,并启用自动递增功能作为主键[^1]。 #### (Foreign Key) 用来建立两个表之间的关系。例如,如果存在另一个名为 `t2` 的表,则可以这样设置关联: ```sql FOREIGN KEY (t2ID) REFERENCES t2(id), ``` 这里假设当前表有一个字段叫作 `t2ID`,而目标表 `t2` 存在一个叫做 `id` 的主键或者唯一[^2]。 #### 约束 (Not Null Constraint) 指定某列为不可为时,在该列名后面加上关字 `NOT NULL` 即可。比如对于用户名字这一项可能要求不能为: ```sql name VARCHAR(50) NOT NULL, ``` 这表明名字长度不超过五十字符且必填[^3]。 #### 唯一约束 (Unique Constraint) 当希望某些特定的数据项目在整个数据库里保持独一无二的时候就可以应用这个选项。像电子邮件地址通常应该在全球范围内都是独特的: ```sql email VARCHAR(100) UNIQUE, ``` 这条命令使得邮箱栏位中的每一个值都必须与其他所有条目不同。 #### 自动增加 (Auto Increment) 为了让每次新增加一条新的纪录都会让某个数值型别的资料域自行依序增大一位数字,我们可以利用 `AUTO_INCREMENT` 属性来做设定。一般会配合主键一起使用以便于追踪每一笔独立交易或事件的发生次序。 综合以上各点,下面给出一个完整的例子展示如何构建这样的数据模型: ```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, -- 设置为主键并且开启自增模式 name VARCHAR(50) NOT NULL, -- 用户名称不得为白 email VARCHAR(100) UNIQUE, -- E-mail 地址需维持独有状态 password_hash CHAR(64), -- 密码哈希存储间预留充足大小 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,-- 记录创建时间戳默认现在时刻 updated_at DATETIME ON UPDATE NOW(), -- 更新时间为最后修改日期/时间 FOREIGN KEY (another_table_id) REFERENCES another_table(primary_key_column)-- 定义对部资源链接的关系图谱 ); ``` 上述脚本展示了怎样去设计一张涵盖了多种常见SQL概念的基础用户信息登记册样式的电子档案库架构方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值