· 什么是数据库?

存放数据的仓库。

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

数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题。数据结构研究一些抽象数据模型(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. ajax简单封装

    var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); ...

  2. 转:Nginx配置指令location匹配符优先级和安全问题

    转:http://www.jb51.net/article/47761.htm 使用nginx 很久了,它的性能高,稳定性表现也很好,得到了很多人的认可.特别是它的配置,有点像写程序一样,每行命令结尾 ...

  3. PDF 补丁丁 0.4.1.820 测试版发布:统一PDF的页面尺寸

    之前删掉了统一页面尺寸功能,在这个版本给搬回来了. 调整页面留白的功能还没实现,请无视相关选项.

  4. C#入门篇6-8:字符串操作 深入研究字符串的内存驻留机制

    //字符串的内存驻留机制 public static void Test() { //当有多个字符串变量包含了同样的字符串实际值时, //CLR可能不会为它们重复地分配内存,而是让它们统统指向同一个字 ...

  5. [css]邮件的写法

    <style type="text/css">        /* Client-specific Styles */        #outlook a{paddin ...

  6. JobTracker启动流程源码级分析

    org.apache.hadoop.mapred.JobTracker类是个独立的进程,有自己的main函数.JobTracker是在网络环境中提交及运行MR任务的核心位置. main方法主要代码有两 ...

  7. libpng交叉编译安装

    tar xzf libpng-1.5.22.tar.gz cd libpng-1.5.22 mkdir tmp 打开Makefile文件并修改CC=arm-linux-gcc ./configure ...

  8. CRF++使用小结

    1. 简述 最近要应用CRF模型,进行序列识别.选用了CRF++工具包,具体来说是在VS2008的C#环境下,使用CRF++的windows版本.本文总结一下了解到的和CRF++工具包相关的信息. 参 ...

  9. android 回调函数

    http://blog.csdn.net/xiaanming/article/details/8703708 此为回调的java 实例 http://www.cnblogs.com/qingchen1 ...

  10. [转]AndroidManifest.xml文件详解

    转自:http://www.cnblogs.com/greatverve/archive/2012/05/08/AndroidManifest-xml.html AndroidManifest.xml ...