SQL语句建表、设置主键、外键、check、default、unique约束

· 什么是数据库?

存放数据的仓库。

· 数据库和数据结构有什么区别?

数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题。数据结构研究一些抽象数据模型(ADT)和以及定义在该模型上的一些操作,数据库是由表、关系、操作组成。

· 什么是主键?

主键用来标识记录的唯一性。

· 什么是外键?

外键用来标识表与表之间的联系。

· 什么是check约束?

check约束限制了输入值的范围。

· 什么是default约束?

给某个属性一个默认值。

· 什么是unique约束?

限制某个属性的唯一性。

· unique约束与主键有什么区别?

主键不可为null。

关于以上知识的一些sql语句:

--部门表
create table dept
(
    dept_id int primary key,
    dept_name nvarchar(100) not null,
    dept_address nvarchar(100)
)

--员工表
create table emp
(--不能写成{
    emp_id int constraint pk_emp_id_hahaha primary key,--设置主键并命名
    emp_name nvarchar(20) not null,--名字不能为空
    emp_sex nchar(1),
    --↓设置外键,该外键来自于dept表(主键表)
    dept_id int constraint fk_dept_id_heihei foreign key references dept(dept_id),
)

create table student
(
    stu_id int primary key,
    stu_sal int check (stu_sal >= 1000 and stu_sal <= 8000),--check约束
    stu_sex nchar(1) default (‘男‘) --()可以省略,在数据库中字符串必须用‘‘括起来
)

--向student表中插入数据
insert into student(stu_id,stu_sal) values (1,1000);--可以插入
insert into student(stu_id,stu_sal) values (2,10000);--插入失败,与check约束冲突
insert into student values (2,6000,‘女‘);--可以插入
insert into student values (3,6000);--错误,列的个数不匹配。

--再重建一个表
create table student2
(
    stu_id int primary key,
    stu_sal int check (stu_sal >= 1000 and stu_sal <= 8000),--check约束
    stu_sex nchar(1) default (‘男‘), --()可以省略,在数据库中字符串必须用‘‘括起来
    stu_name nvarchar(200) unique--qunique约束
)

insert into student2 values (1,6000,‘男‘,‘张三‘);--ok
insert into student2 values (2,6000,‘男‘,‘张三‘);--error违反了唯一约束
insert into student2 values (3,6000,‘男‘,‘李四‘);--ok
insert into student2 values (null,6000,‘男‘,‘王五‘);--error主键不能为null,出错的信息是“不能将值 NULL 插入列 ‘stu_id‘”
insert into student2 values (4,6000,‘男‘,null);--ok 说明 唯一键允许为空
insert into student2 values (5,6000,‘男‘,null);--error SqlServer2005只允许一个unique列为空

--再重建一个表
create table student3
(
    stu_id int primary key,
    stu_sal int check (stu_sal >= 1000 and stu_sal <= 8000),--check约束
    stu_sex nchar(1) default (‘男‘), --()可以省略,在数据库中字符串必须用‘‘括起来
    stu_name nvarchar(200) unique not null--qunique约束和not null约束可以组合使用
)

insert into student3 values (3,6000,‘男‘,null);--error 证明了unique可以与not null组合使用

注:本文参考了郝斌老师的SQL教程,也加入了自己对SQL的一些理解,有写的不对的地方希望大家能够指出来。

时间: 2024-08-07 04:11:17

SQL语句建表、设置主键、外键、check、default、unique约束的相关文章

SQL Server中用SQL命令建表和主外键约束

建立dept和emp表,并用dept表中的dept_id设置为emp表的外键 create table dept ( dept_name nvarchar(20) not null, dept_address nchar(20), dept_id int constraint PK_dept primary key --dept表的主键,命名为PK_dept ) create table emp ( emp_name nvarchar(20) not null, emp_sex nchar(1)

oracle sql 创建表格 oracle建表设置主键自增

1.新建table CREATE TABLE ysb_log( id number(8) primary key not null , tbdate varchar(50) NULL, tb_time varchar(50) NOT NULL, tblog varchar(500) NOT NULL, tbreor varchar2(20) null, bs varchar(50) NOT NULL ); 在Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按

用sql语句建表

CREATE TABLE USER (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(30) NOT NULL, pwd VARCHAR(30) NOT NULL, email VARCHAR(100) NOT NULL, abode VARCHAR(100) NOT NULL )

Sql Server 主键 外键约束

主键约束 表通常具有包含唯一标识表中每一行的值的一列或一组列. 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束. 如果为表指定了主键约束, 数据库引擎 将通过为主键列自动创建唯一索引来强制数据的唯一性. 当在查询中使用主键时,此索引还允许对数据进行快速访问. 如果对多列定义了主键约束,则一列中的值可能会重复,但来自主键约束定义中所有列的值的任何组合必须唯一. 如下图所示, Purchasing.ProductVend

SQL主键&amp;外键

SQL的主键和外键约束 SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学

MySQL基础之 主键外键设置

外键: 定义:如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表. 作用:外键是用来实现参照完整性的,不同的外键约束方式将可以是两张表紧密的结合起来.比如修改或者删除的级联操作等,外键主要用来保证数据的完整性和一致性. 条件: 1.创建外键的两个表,父表与子表必须是InnoDB存储引擎. 2.创建外键的时候,父表要创建索引,一般为主键索引.子表在创建外键的时候也必须要创建索引. 3.子表的外键必须和父表的主键数据类型相对应(字段的类型和值必须一样或者相似,比如i

数据库主从表、关系;主、外键关系和作用

从数据库是主数据库的备份,当主数据库变化时从数据库要更新,这些数据库软件可以设计更新周期.这是提高信息安全的手段.主从数据库服务器不在一个地理位置上,当发生意外时数据库可以保存.主外键的关系结构:1,一对一,不用引用主外键,把它们放一个表中即可例如:一个学生只能有一个卡号,那么学生跟卡号放在一个表中即可2,一对多,引用主外键,'一'相当于主键,'多'即是引用主键的外键.例如:一个班级可以有多个学生,并且一个学生只能属于一个班级,这就是一对多的关系:3,多对多关系,需要创建一个表,表中需要两个字段

通过 jdbc 分析数据库中的表结构和主键外键

文章转自:http://ivan4126.blog.163.com/blog/static/20949109220137753214811/ 在某项目中用到了 hibernate ,大家都知道 hibernate 是 ORM 框架,他是有能力根据实体生成数据库表的.我们在单元测试的时候用到了 dbUnit ,dbUnit 可以帮助我们在测试前把数据库的测试数据准备好,然后我们就利用现成的数据库环境测试,测试完成后需将数据库中的所有数据清除(为了不影响其他的单元测试),然后接着下一个测试.虽然已经

主键外键建表格

create table Student ( Sno varchar(50)primary key not null, --学号(主码) Sname varchar(50) not null, --学生姓名 Ssex varchar(50)not null, --学生性别 Sbirthday datetime, --学生出生年月 Class varchar(50) --学生所在班级 ) go truncate table Student --此句是清除表中所有内容 不是清除表 insert in