上一篇文章简单梳理了一下SQL Server数据库的安装和基本操作,这篇文章主要讲述一下数据库表的管理

一.数据库的创建

有关数据库的创建有两种方式,一种是通过视图创建,第二种就是通过T-SQL语句来创建了,通过视图创建比较简单,下面主要介绍一下T-SQL语句是如何创建数据库的

  

sqlserver 一个表可以建立两个聚集索引吗 sqlserver一个表可以建立多少行_SQL



1 CREATE DATABASE demo
2 ON    --指定主文件属性
3 (
4     NAME = ' demo ',--主文件逻辑名称
5     FILENAME = 'D:\ demo .mdf',--主文件存放在D盘根目录下
6      SIZE = 5, --主文件初始大小
7      FILEGROWTH = 10% --主文件增长方式
8 )    
9 --注:"--"为单行注释符,"/**/为多行注释符"
10--更详细的创建代码在上篇文章中已经提到,本文中就不再赘述



二.SQL Server的数据类型

   首先我们需要思考一个问题:为什么需要数据类型?

相信大家家里都有衣柜吧,衣柜里被分成大小不同的一些格子,有的放上衣,有的放被子,有的放裤子,每个东西都会放到适合其大小的地方,

sqlserver 一个表可以建立两个聚集索引吗 sqlserver一个表可以建立多少行_数据库_02

 

在SQL中,数据类型和衣柜中大小不一的格子类似。对于不同的数据,需要分类存储.

那么在SQL中有哪几种类型呢?

1.数字数据类型

sqlserver 一个表可以建立两个聚集索引吗 sqlserver一个表可以建立多少行_SQL_03

2.字符数据类型

字符数据类型对应Java中的字符串类型

sqlserver 一个表可以建立两个聚集索引吗 sqlserver一个表可以建立多少行_SQL_04

3.日期和时间数据类型

  SQL中,时间日期类型应用很广泛.例如在转账记录中时间就需要用到

sqlserver 一个表可以建立两个聚集索引吗 sqlserver一个表可以建立多少行_数据类型_05

 

以上就是一些基本的常用数据类型,我们实际使用中根据需要来选择合适的数据类型,一般来说节省空间效率要低,浪费空间效率高

三.数据完整性

  上面讲完了数据类型,接下来开始讲数据的完整性,那么什么是数据的完整性呢?  

  数据完整性(Data Integrity):是指数据的精确性(Accuracy)和可靠性(Reliability)为了防止数据库中存在不符合语义的数据,数据库提供一种机制来检查数据库中的数据,这种机制就被成为完整性检查:

  实体完整性(Entity Integrity) :

    PRIMARY KEY(主键)约束
    IDENTITY(自增)约束

    UNIQUE(唯一)约束

  域完整性(Domain Integrity)
    CHECK(检查)约束
    FOREIGN KEY(外键)约束
    DEFAULT(默认值)约束
    NOT NULL(非空)约束
  引用完整性(Referential Integrity)

 Foreign Key Counstraint(外键约束) 需要建立两表间的关系并引用主表的列
  用户自定义完整性(User-defined Integrity)
  规则
  约束
  触发器

下面就用代码来进行完整性演示:


1 --PRIMARY KEY约束:唯一识别每一条记录的标志,可以由多列共同组成
2 CREATE TABLE student
3 (
4     stuNo int  primary key,--学号为主键,指定为主键列,stuNo的值不能重复也不能为NULL
5     stuName varchar(20) 
6 )


1 --IDENTITY 约束:列值自增,一般使用此属性设置的列作为主键 
2 CREATE TABLE student
3 (
4     sId int identity(1,1) primary key,--Identity(1,1)表示第一行记录的sId值为1,第二行的值为2。以后每次加1,不需要用户显式地添加数据
5 
6     stuName varchar(20) 
7 )


1 --UNIQUE(唯一约束) :可以使用UNIQUE约束确保在非主键列中不存在重复值,但列值可以是NULL(空) 
2 CREATE TABLE student
3 (
4     sId int identity(1,1) primary key,
5     stuTel varchar(13)  unique    --电话号码字段(可以为空,但不能重复)
6 )


1 --CHECK(检查)约束:用于限制列中的值的范围 
2 CREATE TABLE student
3 (
4     sId int identity(1,1) primary key,
5     stuTel varchar(13)  unique,--电话号码字段(可以为空,但不能重复)
6     stuAge int check(stuAge>=15 and stuAge<=30)--学生年龄在15到30之间
7     --Check(表达式):只有满足表达式的值才是合法的
8 
9 )


1 --DEFAULT(默认值)约束:在不指定列值时,将以默认值填充
 2 CREATE TABLE student
 3 (
 4     sId int identity(1,1) primary key,
 5     --电话号码字段(可能为空,但不能重复)
 6     stuTel varchar(13)  unique,
 7     --学生年龄在15到30之间
 8     stuAge int check(stuAge>=15 and stuAge<=30),
 9     --学生国籍,默认为“中国”
10     stuContry varchar(20)  not null default ‘中国’--指定该列的值不能为NULL
11 )


下面来用一个实例来示范数据的完整性

sqlserver 一个表可以建立两个聚集索引吗 sqlserver一个表可以建立多少行_java_06


1 CREATE TABLE Tb_Student
2 (
3   StudentNo varchar(20) PRIMARY KEY,--主键约束
4   StudentName varchar(30) NOT NULL,--非空
5   StudentAge int NOT NULL CHECK(StudentAge>20 and StudentAge<30), --check约束
6   Country varchar(20) NOT NULL DEFAULT '中国',--默认值约束
7   StuTime datetime NOT NULL,
8   Tuition money NOT NULL
9 )


 

四.删除数据表

通过上面的讲解我们应该知道如何创建数据表并添加约束,下面我们就来简单学习一下如何删除数据表

注:在实际开发中删除是一项十分危险的操作,请务必谨慎


1 --语法格式:DROP TABLE 表名 
2 USE demo--选择该表所在的数据库
3 GO
4 DROP Tb_Student --这样我们之前创建的表就被删除了,右键数据库刷新一下就可以看到我们之前创建的Tb_Student 表已经消失了


 小结:

SQL Server数据类型包括数字数据类型、字符数据类型、二进制数据类型和时间日期类型

数据完整性包括:实体完整性约束、域完整性约束、引用完整性约束以及用户自定义完整性

常用的约束包括:

CHECK(检查)约束 
RIMARY KEY(主键)约束 
IDENTITY(自增)约束 
UNIQUE(唯一)约束 
FOREIGN KEY(外键)约束
DEFAULT(默认)约束
NOT NULL(非空)约束

以上内容就是数据库表的一些简单管理,有一点需要说明的是如果添加的外键约束的话,要想删除表必须要先删除子表再删除主表,否则会因为存在外键约束而删除失败


1 --创建表,添加约束
 2 if exists(select * from sysobjects where name = 'Student') --判断是否存在Student表,存在的话先删除再创建
 3 drop table Student
 4 go
 5 create table Student  
 6 (
 7 stuId int primary key identity(1,1),  --主键约束 自增长 identity(x,y)  x:起始值 y:每次增长步长
 8 stuName nvarchar(10) unique,    --唯一性约束
 9 stuAge int check(stuAge>=0 and stuAge<=100),    --检查约束
10 stuSex nchar(1) check(stuSex = '男' or stuSex = '女'),    --检查约束
11 stuAddress nvarchar(50) not null default '湖北武汉' ,    --默认值
12 classId int foreign key references classes(classId)    --外键约束
13 )
14 --创建表
15 if exists(select * from sysobjects where name = 'classes') --判断是否存在表
16 drop table classes
17 go
18 create table classes  
19 (
20 classId int primary key identity(1,1),  --identity(x,y)  x:起始值 y:每次增长步长
21 className nvarchar(10) not null
22 )
23 drop table Student --先删除子表
24 drop table classes --再删除主表


如以上书写有任何疑问或者错误的地方,请随时留言指出,不胜感激!