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

一.数据库的创建

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

  

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

二.SQL Server的数据类型

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

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

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

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

1.数字数据类型

2.字符数据类型

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

3.日期和时间数据类型

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

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

三.数据完整性

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

  数据完整性(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)
  规则
  约束
  触发器

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

 --PRIMARY KEY约束:唯一识别每一条记录的标志,可以由多列共同组成
CREATE TABLE student
(
stuNo int primary key,--学号为主键,指定为主键列,stuNo的值不能重复也不能为NULL
stuName varchar(20)
)
 --IDENTITY 约束:列值自增,一般使用此属性设置的列作为主键
CREATE TABLE student
(
sId int identity(1,1) primary key,--Identity(1,1)表示第一行记录的sId值为1,第二行的值为2。以后每次加1,不需要用户显式地添加数据 stuName varchar(20)
)
 --UNIQUE(唯一约束) :可以使用UNIQUE约束确保在非主键列中不存在重复值,但列值可以是NULL(空)
CREATE TABLE student
(
sId int identity(1,1) primary key,
stuTel varchar(13) unique --电话号码字段(可以为空,但不能重复)
)
 --CHECK(检查)约束:用于限制列中的值的范围
CREATE TABLE student
(
sId int identity(1,1) primary key,
stuTel varchar(13) unique,--电话号码字段(可以为空,但不能重复)
stuAge int check(stuAge>=15 and stuAge<=30)--学生年龄在15到30之间
--Check(表达式):只有满足表达式的值才是合法的 )
 --DEFAULT(默认值)约束:在不指定列值时,将以默认值填充
CREATE TABLE student
(
sId int identity(1,1) primary key,
--电话号码字段(可能为空,但不能重复)
stuTel varchar(13) unique,
--学生年龄在15到30之间
stuAge int check(stuAge>=15 and stuAge<=30),
--学生国籍,默认为“中国”
stuContry varchar(20) not null default ‘中国’--指定该列的值不能为NULL
)

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

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

四.删除数据表

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

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

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

小结:

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

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

常用的约束包括:

CHECK(检查)约束

RIMARY KEY(主键)约束

IDENTITY(自增)约束

UNIQUE(唯一)约束

FOREIGN KEY(外键)约束

DEFAULT(默认)约束

NOT NULL(非空)约束

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

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

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

SQL Server 数据库表的管理的更多相关文章

  1. 千万级SQL Server数据库表分区的实现

    千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server ...

  2. SQL SERVER 数据库表同步复制 笔记

    SQL SERVER 数据库表同步复制 笔记 同步复制可运行在不同版本的SQL Server服务之间 环境模拟需要两台数据库192.168.1.1(发布),192.168.1.10(订阅) 1.在发布 ...

  3. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  4. 修改SQL Server数据库表的创建时间最简单最直接有效的方法

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,因为这种操作方式是通用的,即使是对现在最新的SQL Server数据库里面的操作也是一 ...

  5. 将文件导入到SQL server数据库表中的字段中

    一.在要执行的sql server数据库a中执行如下脚本,创建存储过程sp_textcopy /* 将二进制文件导入.导出到数据库相应字段列中 */ CREATE PROCEDURE sp_textc ...

  6. SQL Server 数据库表的统计信息的更新

             最近在调整基础信息数据时,新增了几个客户类型,意想不到的事情发生了,在使用新增的客户类型作为 查询条件查询报表时,居然出现了超时的现象,但是用其他以前的客户类型查询就没有问题,用一个 ...

  7. EFCore 通过实体Model生成创建SQL Server数据库表脚本

    在我们的项目中经常采用Model First这种方式先来设计数据库Model,然后通过Migration来生成数据库表结构,有些时候我们需要动态通过实体Model来创建数据库的表结构,特别是在创建像临 ...

  8. 获取sql server数据库表结构

    if exists (select 1 from sysobjects where name = 'sysproperties'and xtype = 'V')begin    DROP VIEW s ...

  9. Excel文件导入SQL Server数据库表

    --office 2003--如果接受数据导入的表已经存在insert into DemoTable select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0 ...

随机推荐

  1. 遇到bug我会怎么做

    我今天遇到一个问题,ztree显示数据,本来这个功能是没有问题的,但是当我新加入了几个页面筛选条件时,将集合传入ztree ,页面缺一直没显示出来,弄了两个小时,代码我都仔细排查了一次,发现没有问题, ...

  2. java基础(十一章)

    一.理解什么是类和对象               万事万物皆对象 1.属性--对象具有的特征(特点) 2.方法--对象可执行的操作(能干什么事) 3.对象的定义: 是一个客观存在的,看的见或摸得着的 ...

  3. integer与int区别以及integer.values()方法详解

    声明:本文为博主转载文章,原文地址见文末. 知识点1:integer和int的区别 /* * int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为 ...

  4. Chapter 1:Introduction

    作者:桂. 时间:2017-05-24  08:06:45 主要是<Speech enhancement: theory and practice>的读书笔记,全部内容可以点击这里. 1. ...

  5. vue+websocket+express+mongodb实战项目(实时聊天)(二)

    原项目地址:[ vue+websocket+express+mongodb实战项目(实时聊天)(一)][http://blog.csdn.net/blueblueskyhua/article/deta ...

  6. HTML5 Web Worker简单使用

    Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Wo ...

  7. [1] Report Fusioncharts

    图形报表之fusioncharts  

  8. HTML基础了解

     对HTML最基本的认识和编写:"我的第一个网页" HTML是什么: 它的全称是Hyper Text Markup Language超文本标记语言,页面中包括有视频.图片.链接等其 ...

  9. POJ 1459-Power Network(网络流-最大流-ISAP)C++

    Power Network 时间限制: 1 Sec  内存限制: 128 MB 题目描述 A power network consists of nodes (power stations, cons ...

  10. VR虚拟现实技术在教育领域的前景展望

    VR虚拟现实技术在教育领域的前景展望 VR虚拟现实技术能迅速火起来,是基于它突破了人们对三维空间在时间与地域上的感知限制,以及市场需求愿景的升级.此技术可广泛地应用到城市规划.室内设计.工业仿真.古迹 ...