建表的约束

1.非空约束

①字段不能为null

②null不等于“”;Oracle不允许把“”写入到非空字符串型字段中

2.唯一约束

①指定某一列或多列的数据具有唯一性

②一个表可以有多个唯一约束

③Unique

3.主键约束

①指定某一列或多列为主键列

②主键列必须同时具有非空约束和唯一约束

③一个表只能有一个主键约束

④主键约束的作用:通过主键约束能够确定唯一的一行数据;自动按照主键列生成索引,提高数据检索效率;确保数据的唯一性和规范性

⑤主键约束的方式:

a。具有唯一性的代码字段

b。自动增长的整数值字段:Oracle通过序号列实现;其他数据库有支持自增长类型的字段;适合于单数据库;不适用于分布式数据库

c。GUI D 全局唯一标识:32位长度的十六进制形式的字符串;适合于分布式数据库

4.检查约束

通过检查规则语句:限定值的大小;限定值的列表

5.外键约束

两个表之间的约束关系

时间: 2024-08-06 16:06:08

建表的约束的相关文章

MySQL-创建表及其约束

CREATE TABLE [tb_name]; 1.创建表的主键约束:主键是唯一标识某字段的作用,当该字段为主键的时候,其值必须是唯一的,且不能为空.mysql>CREATE TABLE student(id INT PRIMARY KEY,                                                 stu_id INT,                                                 course_id INT);id为主键

oracle 11g 建库 建表 增 删 改 查 约束

一.建库 1.(点击左上角带绿色+号的按钮) 2.(进入这个界面,passowrd为密码.填写完后点击下面一排的Test按钮进行测试,无异常就点击Connect) 二.建表 1-1. create table 表名1( Tid number(4) --primary key 列级约束(主键), Tname varchar(10) --ont null  非空约束,只能定义在列级约束, Tsex varchar2(2)--check (tsex='男'  or  tsex='女') 检查约束, T

SQL Server建库-建表-建约束

----------------------------------------SQL Server建库-建表-建约束创建School数据库-------------------------------------- --创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在则创建----exists关键字:括号里边能查询到数据则返回‘true’ 否则返回‘false’if exists(select * from sysdatabases where name =

使用T-sql建库建表建约束

为什么要使用sql语句建库建表? 现在假设这样一个场景,公司的项目经过测试没问题后需要在客户的实际环境中进行演示,那就需要对数据进行移植,现在问题来了:客户的数据库版本和公司开发阶段使用的数据库不兼容怎么移植? 行之有效的办法就是编写比较通用的SQL语句,编写完毕后存入*.sql文件中,最后复制到客户的计算机中,并执行*.sql文件中的SQL语句,从而实现后台数据库的移植.所以我们很有必要掌握如何使用SQL语句,实现创建数据库.创建表.添加约束和创建登录账户等! 使用SQl语句创建和删除数据库

存储引擎,详细建表语句,数据类型,约束

引擎指的是一个系统的核心部分引擎有不同分类是为了适应不同的使用场景查看mysql支持的所有引擎show engines MRG_MYISAM 是一堆MYISAM表的集合 用于做水平分表,如果一个表中数据量太大 将导致效率降低 水平分表就是把整个大表拆成不同的小表,每一次查询会先判断数据在哪一个表中 然后对应去查找 以此来提高效率垂直分表 当一个表中 字段太多 然而常用的信息就那么一两个 那就可以把不常用字段切到另一个表中 然后建立关联关系 innodb 是最最常用的引擎 因为支持 事务 行锁 外

MySQL常见建表选项及约束

一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 :如果没有,则为null. mysql> create table people                                                                      -> (    ->  id int not nu

hibernate建表一对多

级联操作,操作class对象的时候 级联操作 student Classes.java文件 1 package cn.itcast.hiberate.sh.domain; 2 3 import java.util.Set; 4 5 public class Classes { 6 private Long cid; 7 private String cname; 8 private String description; 9 public String getDescription() { 10

三、MySQL建表模板

1. 建表模板 SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `g_test`; CREATE TABLE `g_test` (  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',  `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',  `begin_time` timestamp NULL

关于MySQL建表对DML的影响【转】

本文来自这里 今天一位同学问到线上曾经碰到过连续建表,导致阻塞普通的insert.update等.不过也没有保留现场.因此有疑问为什么建表会影响DML? 分析          首先这个现象不是在所有场景都会碰到(否则MySQL的用户们早就跳起来了). 一来建表这个操作本身很快,只涉及到写表定义文件和初始化表空间.中间涉及到redo和undo的操作也很少(这里只讨论InnoDB表).因此除非碰到磁盘IO响应不了,否则多数情况下建表操作很快结束,不会"稳定复现" 二来即使由于io原因,建