· 什么是数据库?

存放数据的仓库。

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

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

    1.Canvas 布局控件 Canvas面板是最轻量级的布局容器,它不会自动调整内部元素的排列和大小,不指定元素位置,元素将默认显示在画布的左上方.Canvas主要用来画图.Canvas默认不会自动裁 ...

  2. cocos2dx一个场景添加多个层

    首先创建两个layer,以下是头文件 #pragma once#include "cocos2d.h"USING_NS_CC;class BackgroundLayer : pub ...

  3. [置顶] Android系统五大布局详解Layout

    我们知道Android系统应用程序一般是由多个Activity组成,而这些Activity以视图的形式展现在我们面前,视图都是由一个一个的组件构成的.组件就是我们常见的Button.TextEdit等 ...

  4. 中国.net域名网站的“前世今生”,那些年的光辉

    1987年9月的一天,中国的第一封电子邮件成功发出,邮件的内容大致是“跨越长城,走向世界”,在当时,没有人会想到十年后中国的互联网开始萌芽,并发展成今天的繁荣.1994年,“巴黎统筹委员会”的解散消除 ...

  5. 一个php小白找工作的历程

    一个php小白找工作的历程其实对新工作还是有点忐忑的,对于我这样一个有着特殊工作经历的来说更是如此.为了更好的迎接未来,不得不总结下过去.在经历一段时间的职业生涯探索期后,还是觉得自己更适合做程序员这 ...

  6. 我在网站开发中经常用到的几个js函数01

    这是我在最近的一个网站项目中频繁用到的几个js函数,非常实用.包括:1.js获取地址栏参数:2.返回cookies字符串中指定键对应的值:3.json格式的日期转换为正常格式4.清除cookie. / ...

  7. 基于jQuery发展历程时间轴特效代码

    分享一款基于jQuery发展历程时间轴特效代码,带左右箭头,数字时间轴选项卡切换特效下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="time ...

  8. [wxWidgets]_[0基础]_[不常见但有用的类wxStandardPaths]

    场景: 1.wxStandardPaths   用来获取各种系统路径.能够用于存放app的配置数据.比方文档文件夹,appData等. 代码: #include "wx/wxprec.h&q ...

  9. android Logger 一二三

    我们在开发Android应用的过程中可以很方便地使用Log信息来调试程序,这都归功于Android的Logger驱动为用户层提供的Log支持.无论是底层的源代码还是上层的应用,我们都可以使用Logge ...

  10. Java-链表(单向链表、双向链表)

    Java-链表 1.什么是链表? 2.链表的特点是什么? 3.链表的实现原理? 4.如何自己写出一个链表? 1.什么是链表? 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过 ...