SQL Server 数据库表的管理
上一篇文章简单梳理了一下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 数据库表的管理的更多相关文章
- 千万级SQL Server数据库表分区的实现
千万级SQL Server数据库表分区的实现 2010-09-10 13:37 佚名 数据库 字号:T | T 一般在千万级的数据压力下,分区是一种比较好的提升性能方法.本文将介绍SQL Server ...
- SQL SERVER 数据库表同步复制 笔记
SQL SERVER 数据库表同步复制 笔记 同步复制可运行在不同版本的SQL Server服务之间 环境模拟需要两台数据库192.168.1.1(发布),192.168.1.10(订阅) 1.在发布 ...
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- 修改SQL Server数据库表的创建时间最简单最直接有效的方法
说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,因为这种操作方式是通用的,即使是对现在最新的SQL Server数据库里面的操作也是一 ...
- 将文件导入到SQL server数据库表中的字段中
一.在要执行的sql server数据库a中执行如下脚本,创建存储过程sp_textcopy /* 将二进制文件导入.导出到数据库相应字段列中 */ CREATE PROCEDURE sp_textc ...
- SQL Server 数据库表的统计信息的更新
最近在调整基础信息数据时,新增了几个客户类型,意想不到的事情发生了,在使用新增的客户类型作为 查询条件查询报表时,居然出现了超时的现象,但是用其他以前的客户类型查询就没有问题,用一个 ...
- EFCore 通过实体Model生成创建SQL Server数据库表脚本
在我们的项目中经常采用Model First这种方式先来设计数据库Model,然后通过Migration来生成数据库表结构,有些时候我们需要动态通过实体Model来创建数据库的表结构,特别是在创建像临 ...
- 获取sql server数据库表结构
if exists (select 1 from sysobjects where name = 'sysproperties'and xtype = 'V')begin DROP VIEW s ...
- Excel文件导入SQL Server数据库表
--office 2003--如果接受数据导入的表已经存在insert into DemoTable select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0 ...
随机推荐
- Vue 犯罪指南:TypeError: Right-hand side of 'instanceof' is not an object
背景:在迁移项目从 Vue1.x 到 Vue2.x 时,改动没有过脑子,导致翻车.
- Expression 转化为sql(三) --自定义函数
SQL 语句有很多函数如len(),now()等等.如何来生成这些函数.最近研究也写办法共大家参考. 一.首先建立一个建一个扩展类,控制只能允许这些函数出现,如果出现其他函数就直接报异常. publi ...
- Ajax&jQuery教案总结
Ajax&jQuery教程总结 目录 第一章 Ajax入门 6 第1讲 传统表单提交存在的问题 6 课程内容 6 1. 问题的引入 6 2. 问题的解决 6 参考进度(0.5课时) 7 第2讲 ...
- 【javascript】Promise/A+ 规范简单实现 异步流程控制思想
——基于es6:Promise/A+ 规范简单实现 异步流程控制思想 前言: nodejs强大的异步处理能力使得它在服务器端大放异彩,基于它的应用不断的增加,但是异步随之带来的嵌套.难以理解的代码让 ...
- 新增article注意事项
默认情况下在日志复制中如果新增加Article那么需要产生一个包含所有Article的Snapshot.由于产生Snapshot会加锁,同时会产生IO操作,所以对于大的数据库性能影响是很大的. 可以通 ...
- python学习-面向对象
面向对象 编程方式的区别 过程式编程 函数式编程 面向对象式编程 面向对象编程 对象是类的一个实例 创建 class foo(): def __init__(self): #类的构造方法 pass d ...
- PHP按值合并数组
/** * PHP按值合并数组 * */ function my_array_merge(&$array1, &$array2) { $result = Array(); foreac ...
- [leetcode-485-Max Consecutive Ones]
Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: [1, ...
- 【Android Developers Training】 88. 使用备份API
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 遇到android.os等系统sdk包没有自动导入的情况
采取手动导入,build path,然后add external jar,找到sdk的安装目录,导入android 的jar包即可