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的一些理解,有写的不对的地方希望大家能够指出来。
SQL语句建表、设置主键、外键、check、default、unique约束的更多相关文章
- sql语句建表,并且自增加主键
sql语句建表,并且自增加主键 use [test] CREATE TABLE [dbo].[Table_4] ( [userid] [int] IDENTITY(1,1) NOT NULL, CON ...
- 通过sql命令建表 和 主外键约束以及其他约束
create table命令 create table dept ( dept_id int primary key, dept_name ) not null, dept_address ) ) c ...
- sql server 建表,主键与外键约束
主键: 能唯一区分表中每一行 外键:为某表的一列,是另一个表的主键,外键定义了两表之间的联系 商品类别表 use eshopgocreate table category( name varchar( ...
- SQL常用语句|创建表,设置主键......
新建表 create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' nu ...
- 2016.7.12 在navicat中用sql语句建表
参考资料: http://jingyan.baidu.com/article/f0e83a25a8c4b022e5910116.html 即新建query,然后run. (1)点击要新建表的位置,选择 ...
- oracle建表设置主键自增
首先创建一张表 create table member( memberId number primary key, memberMail )not null, memberName ) not nul ...
- 使用SQL语句建表,插入数据
--选中数据库,点击新建查询,然后执行即可--这是SQL中的注释信息,使用两个减号来注释. drop table Book --删除表Book create table Book --创建表Book ...
- 用sql语句建表
CREATE TABLE USER (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(30) NOT NULL, p ...
- 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库
第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1. 学习方法 2. 多涨见识 3. 比自己强的人一起,学习更强:比自己更聪明的人 ...
随机推荐
- iOS App从点击到启动
程序启动之前 从exec()开始 main()函数是整个程序的入口,在程序启动之前,系统会调用exec()函数.在Unix中exec和system的不同在于,system是用shell来调用程序,相当 ...
- android - anim translate中 fromXDelta、toXDelta、fromYDelta、toXDelta属性
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http:// ...
- 使用git上传项目
1. 安装Git 2. 安装TortoiseGit 3.任意文件夹选择「TortoiseGit」>「settings」,打开如下界面. 3. 生成SSH公钥 3.1运行Git Bash,如下命令 ...
- javascript function new this
1. 首先,我们这里把function直接调用时将这个function当做方法来看待,而new function是将function当做类来看待 2. 当把function作为类来使用时,functi ...
- 实验五 cmp传输与加解密
---恢复内容开始--- (一)实验内容 1.运行TCP代码,一人服务器,一人客户端 2.下载加解密代码,先编译运行代码,一人加密一人解密. 3.集成代码,一人加密后通过TCP 发送,加密使用DES或 ...
- shell之两个文档找出相同的之后在选
for i in `cat t1` ; do echo "$i" | awk '{sub(/^ */,"");sub(/ *$/,"")}1 ...
- js图片轮播图
/*焦点图*/ var Box='.carousel';//盒子 var Menu=$(Box+' .l_cursor li');//圆点菜单 var Con ...
- PHP后台
一.ajax提交表单 先引入ajax.js function ajax(url, fnSucc, fnFaild) { //1.创建Ajax对象 var oAjax=null; if(window.X ...
- 二模 (8) day1
第一题: 题目大意: 梦幻城市每年为全市高中生兴办一次运动会.为促使各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同.为增加比赛的竞争性,希 ...
- 快餐问题(dp好题)
Peter最近在R市开了一家快餐店,为了招揽顾客,该快餐店准备推出一种套餐,该套餐由A个 汉堡,B个薯条和C个饮料组成.价格便宜.为了提高产量,Peter从著名的麦当劳公司引进了N条 生产线.所有的生 ...