· 什么是数据库?

存放数据的仓库。

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

数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题。数据结构研究一些抽象数据模型(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约束的更多相关文章

  1. sql语句建表,并且自增加主键

    sql语句建表,并且自增加主键 use [test] CREATE TABLE [dbo].[Table_4] ( [userid] [int] IDENTITY(1,1) NOT NULL, CON ...

  2. 通过sql命令建表 和 主外键约束以及其他约束

    create table命令 create table dept ( dept_id int primary key, dept_name ) not null, dept_address ) ) c ...

  3. sql server 建表,主键与外键约束

    主键: 能唯一区分表中每一行 外键:为某表的一列,是另一个表的主键,外键定义了两表之间的联系 商品类别表 use eshopgocreate table category( name varchar( ...

  4. SQL常用语句|创建表,设置主键......

    新建表 create table [表名]([自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,[字段1] nVarChar(50) default \'默认值\' nu ...

  5. 2016.7.12 在navicat中用sql语句建表

    参考资料: http://jingyan.baidu.com/article/f0e83a25a8c4b022e5910116.html 即新建query,然后run. (1)点击要新建表的位置,选择 ...

  6. oracle建表设置主键自增

    首先创建一张表 create table member( memberId number primary key, memberMail )not null, memberName ) not nul ...

  7. 使用SQL语句建表,插入数据

    --选中数据库,点击新建查询,然后执行即可--这是SQL中的注释信息,使用两个减号来注释. drop table Book --删除表Book create table Book --创建表Book ...

  8. 用sql语句建表

    CREATE TABLE USER (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(30) NOT NULL, p ...

  9. 第15课-数据库开发及ado.net-数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库

    第15课-数据库开发及ado.net 数据库介绍,主键,外键,启动数据库,数据库身份验证方式,建表,分离数据库 1.  学习方法 2.  多涨见识 3.  比自己强的人一起,学习更强:比自己更聪明的人 ...

随机推荐

  1. 支持新版chrome,用webstorm编译形成css和sourcemap,调试sass和less源文件(转)

    旧版的chrome有个support for sass,但是新版chrome没有这个功能了.看到网上提供的方法比较多,也很乱,旧版新版的都有.而且不能指定自己所需要的路径. 所以就做了下改版. sas ...

  2. HTML中的一些常见的事件句柄

    onclick 所有类似按钮的表单元素和标记<a>及<area>都支持该处理程序.当用户点击元素时会触发它.如果onclick处理程序返回false,则浏览器不执行任何与按钮或 ...

  3. Go语言并发与并行学习笔记(三)

    转:http://blog.csdn.net/kjfcpua/article/details/18265475 Go语言并发的设计模式和应用场景 以下设计模式和应用场景来自Google IO上的关于G ...

  4. Hyper-V和Virtual PC的不同

    微软在2003年收购了推出了Virtual PC软件的Connectix公司,并在其后推出了Virtual Server服务器虚拟化软件 Hyper-V跟微软自家的Virtual PC.Virtual ...

  5. EF Code First 学习笔记:关系

      一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之 ...

  6. 获取IE代理服务器信息

    “局域网设置”里有自动配置.代理服务器的设置项目,在进行网络通讯相关的开发时,需要使用到它们,下边介绍如何将这些设置信息读取出来. 当“使用自动配置脚本”不使用时,使用WinHttpGetIEProx ...

  7. [转]使用CSS3实现树形控件

    下面是一个使用HTML的ul标签制作的关于国家区划的组织结构图. 中国 北京 广东省 广州市 韶关市 海南省 海口市 美兰区 龙华区 秀英区 琼山区 三亚市 安徽省 合肥市 安庆市 United St ...

  8. UTF-8

    UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码.由Ken Thompson于1992年创建.现在已经标准化为 ...

  9. 转: Div与table的区别

    1:速度和加载方式方面的区别 div 和 table 的差异不是速度,而是加载方式,速度只能是指网络速度,如果速度足够快,是没有差异的: div 的加载方式是即读即加载,遇到 <div> ...

  10. 开通了cnblogs

    受够了百度空间,换个地方,或许会更好. 以后有机会会将百度空间你的文章搬过来的.