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 ...
随机推荐
- java基础(四章)
一. switch结构(开关语句)的语法 switch(表达式 ){ ------- [dream1]类型为int.char case 常量1 : ---------[ ...
- PHP的SQL注入技术实现以及预防措施
SQL 攻击(SQL injection,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞.简而言之,是在输入的字符串之中注入SQL指 令,在设计不良的程序当中忽略了检 ...
- FastReport.NET 中使用二维码
FastReport.net 是一个比较好用的报表控件,在编辑器中编辑以后 可以直接在vs 中引用. 最近在研究fastreport 现在讲解一下 如何使用它的二维码. fastreport 没有单独 ...
- [BZOJ2707]走迷宫
Description Morenan被困在了一个迷宫里.迷宫可以视为N个点M条边的有向图,其中Morenan处于起点S,迷宫的终点设为T.可惜的是,Morenan非常的脑小,他只会从一个点出发随机沿 ...
- 多重bash登入的history写入问题
问题:如果一个用户同时开好几个 bash 接口, 这时~/.bash_history中会写入哪个bash的历史命令记录? 答:所有的bash 都有自己的 HISTSIZE 笔记录在内存中,因为等到注销 ...
- asp.net core中负载均衡场景下http重定向https的问题
上周欣喜地发现,微软官方终于针对 asp.net core 在使用负载均衡的情况下从 http 强制重定向至 https 的问题提供了解决方法. app.UseForwardedHeaders(new ...
- druid参数配置说明
配置 缺省值 说明 name 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来.如果没有配置,将会生成一个名字,格式是:"DataSource-" ...
- jersery+jetty嵌入式restful的框架开发
随着微服务的流程,越来越多的后台服务采用了restful api风格的开放API,jersery+jetty嵌入式变成了一个很好的选择, 我自己写了一个简单的框架,https://github.com ...
- MySQL,Oracle,PostgreSQL通过web方式管理维护, 提高开发及运维效率
在开发及项目运维中,对数据库的操作大家目前都是使用客户端工具进行操作,例如MySQL的客户端工具navicat,Oracle的客户端工具 PL/SQL Developer, MSSQL的客户端工具查询 ...
- Android view的测量及绘制
讲真,自我感觉,我的水平真的是渣的一匹,好多东西都只停留在知道和会用的阶段,也想去研究原理和底层的实现,可是一看到代码就懵逼了,然后就看不下去了, 说自己不着急都是骗人的,我自己都不信,前两天买了本& ...