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 ...
随机推荐
- 遇到bug我会怎么做
我今天遇到一个问题,ztree显示数据,本来这个功能是没有问题的,但是当我新加入了几个页面筛选条件时,将集合传入ztree ,页面缺一直没显示出来,弄了两个小时,代码我都仔细排查了一次,发现没有问题, ...
- java基础(十一章)
一.理解什么是类和对象 万事万物皆对象 1.属性--对象具有的特征(特点) 2.方法--对象可执行的操作(能干什么事) 3.对象的定义: 是一个客观存在的,看的见或摸得着的 ...
- integer与int区别以及integer.values()方法详解
声明:本文为博主转载文章,原文地址见文末. 知识点1:integer和int的区别 /* * int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为 ...
- Chapter 1:Introduction
作者:桂. 时间:2017-05-24 08:06:45 主要是<Speech enhancement: theory and practice>的读书笔记,全部内容可以点击这里. 1. ...
- vue+websocket+express+mongodb实战项目(实时聊天)(二)
原项目地址:[ vue+websocket+express+mongodb实战项目(实时聊天)(一)][http://blog.csdn.net/blueblueskyhua/article/deta ...
- HTML5 Web Worker简单使用
Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Wo ...
- [1] Report Fusioncharts
图形报表之fusioncharts
- HTML基础了解
对HTML最基本的认识和编写:"我的第一个网页" HTML是什么: 它的全称是Hyper Text Markup Language超文本标记语言,页面中包括有视频.图片.链接等其 ...
- POJ 1459-Power Network(网络流-最大流-ISAP)C++
Power Network 时间限制: 1 Sec 内存限制: 128 MB 题目描述 A power network consists of nodes (power stations, cons ...
- VR虚拟现实技术在教育领域的前景展望
VR虚拟现实技术在教育领域的前景展望 VR虚拟现实技术能迅速火起来,是基于它突破了人们对三维空间在时间与地域上的感知限制,以及市场需求愿景的升级.此技术可广泛地应用到城市规划.室内设计.工业仿真.古迹 ...