上一篇文章简单梳理了一下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. sql 中三大范式详解

     1 第一范式(1NF)    在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库.     所谓第一范式(1NF)是指数据库表的每一列 ...

  2. Linux命令不熟悉(记录)

    1.回到上一次操作的目录 cd - 2.rz打开上传文件 rz 3.下载某个文件 wget httpdownload 4.根据名字查找文件 find / -name mysql 5.通配符删除 rm ...

  3. canvas实现视频截图

    截取视频当前播放画面,直接上源码. <body> <div class="container"> <video id="test" ...

  4. [Leetcode] Binary search--436. Find Right Interval

      Given a set of intervals, for each of the interval i, check if there exists an interval j whose st ...

  5. 测序分析软件-phred的安装

    1.进入phred官网,给作者写信,获得所需的软件,大约需要两三天的时间即可收到回信. 2.根据作者的指示下载,解压相应软件. 3.以笔者本人的安装为例unbuntu系统(phred自带的instal ...

  6. CentOS 安装数据库笔记

    1.配置YUM源 # 下载mysql源安装包 shell.noarch.rpm # 安装mysql源 shell.noarch.rpm 检查mysql源是否安装成功 shell> yum rep ...

  7. angular嵌入注入服务实例

    <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <met ...

  8. node.js实现简单的登录注册页面

    首先需要新建四个文件 一个服务器js 一个保存数据的txt 一个登陆.一个注册页面html 1.注册页面 <!DOCTYPE html> <html lang="en&qu ...

  9. 在vue 中使用Stylus

    概述 什么是Stylus Stylus是一个CSS预处理器. 什么是CSS预处理器 关于CSS预处理器,推荐先行阅读这篇文章:为您详细比较三个 CSS 预处理器(框架):Sass.LESS 和 Sty ...

  10. 版本控制工具svn的安装与简单使用

    版本控制工具多用于多人协作开发项目中,这不同于个人开发项目,想把自己代码怎样放置都可以,而且删除了代码很难查找. 版本控制工具类似于个人处理钱的过程,放于自己口袋管理类似于个人开发情形,如果自己钱丢了 ...