优化School数据库(TSQL建库建表建约束)

使用T_sql代码建库、建表、建约束:

建库:

Create database HotelManagerSystem

on

(

---- 数据文件---

)

log on

(

---- 日志文件

)

【当有多日志、多数据文件时,以逗号分隔,连续定义就可以了】

Create database 数据库名

on

(),(),()

log on

(),()

数据库文件的主要参数:

name 、filename、size、maxsize 、filegrouwth

注意:

如果数据库在正常运行过程中,如何“动态添加”数据文件呢?

ALTER DATABASE 数据库名

ADD FILE

(     NAME  = 文件名,

FILENAME = ‘c:\temp\....’,

SIZE = 10MB,

FILEGROWTH = 10MB

)

ALTER DATABASE  数据库名

1、REMOVE FILE  文件名;

2、MODIFY  FILE(Name  = 文件名, FileGrowth = 50MB)

如何判断“数据库是否依据存在”?

方式一:

Exists(select * from sysdatabases where  name = '数据库名')

方式二:

db_id('数据库名') is not  null

-------------------------------------------------

if (db_id('Mydatabase') is not null)

drop  database Mydatabase

create database Mydatabase

on

(......)

log on

(.......)

go

如何创建“表”:

1、必须打开自己的数据库(use  数据库名  go)

2、判断数据表是否存在,并删除

-- if exist(select * from sysobjects  where name = '表名')

-- if object_id('表名') is not  null

3、语法

Create Table  表名

列名    列类型   是否为空 ,

name   varchar(20)  not null ,

go

Sqlserver中的”维护数据完整性“分类:

---- 所谓数据完整性:就是数据库中的数据,不丢失、不混淆

数据完整性分类:

1、实体完整性:

---- 确保每条记录都是唯一的,不会搞混淆

主键约束、唯一约束、自增长标识

2、域完整性:

---- 确保每条记录的每一个部分,都有有效的,没有错误数据

列的数据类型、默认约束、非空约束、check约束

3、引用完整性:

-----  确保表与表之间,具有有效的关联(表间关系)

主外键约束

4、自定义完整性:

----- 确保表中的记录,符合“逻辑业务”的要求

存储过程、触发器、规则

常用约束的设置:

---- 主键、外键、默认、检查、唯一

---- 语法(先表后约束)

Alter  Table 表名

Add  constraint  约束名  约束类型  约束的内容

约束名

约束类型

约束内容

primary   key

pk_列名

PRIMARY KEY

primary key(列名)主键约束

unique  key

uq_列名

UNIQUE

unique(列名)唯一约束

Default  for

df_列名

DEFAULT ... FOR...

Default(值) for  (列)默认约束

Check

ck_列名

CHECK

check(判断条件)

foreign   key

references

fk_列名

FOREIGN KEY ...

REFERENCES

FOREIGN KEY (本表的列) REFERENCES 外表(外表的主键列)外键约束

ALTER TABLE stuInfo

ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo) ,

CONSTRAINT UQ_stuID UNIQUE (stuID)  ,

CONSTRAINT DF_stuAddress DEFAULT ('地址不详')          FOR stuAddress  ,

CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40) ,

CONSTRAINT FK_stuNo  FOREIGN KEY(stuNo) REFERENCES stuMark(stuNo)

GO

ALTER TABLE Subject WITH NOCHECK

ADD CONSTRAINT CK_ClassHour CHECK (ClassHour>=0)

(WITH NOCHECK  加了这个强制添加,不检查原来的数据)

小贴士:

exists() ---- 当括号中的“查询字句”有返回结果,则exists =true

。。。。。。。。。。。无。。。。。。。。。。false

char\varchar 类型的区别:当数据填充时,长度是否永远固定。char=固定

带n的与不带n的char类型:只填充【字母或数字】的使用不带n的,

需要存入汉字或其他特殊符号的,就用带n的

---- 带n的字符类型,长度为2字节;不带n的字符类型,长度为1字节

优化MySchool数据库(二)的更多相关文章

  1. 优化MySchool数据库设计之【巅峰对决】

    优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识 ...

  2. 优化MySchool数据库(一)

    <优化MyShcool数据库>:能够的独立的分析|设计|创建|运营|你的独立的数据库系统 设计--->实现--->TSQL--->查询优化---->性能优化技术-- ...

  3. 优化MySchool数据库设计总结

    数据库的设计   一:什么是数据库设计? 数据库设计就是将数据库中的数据实体以及这些数据实体之间的关系,进行规范和结构化的过程. 二:为什么要实施数据库设计? 1:良好的数据库设计可以有效的解决数据冗 ...

  4. 优化MySchool数据库(存储过程)

    什么是“存储过程”: ---- 数据库中,用于存储“业务逻辑”的技术!(T-SQL代码当做数据一样保存到数据可) 语法 : [if exists(select * from sysobjects wh ...

  5. accp7.0优化MySchool数据库设计内测笔试题总结

    1) 在SQL Server 中,为数据库表建立索引能够(C ). 索引:是SQL SERVER编排数据的内部方法,是检索表中数据的直接通道 建立索引的作用:大大提高了数据库的检索速度,改善数据库性能 ...

  6. 优化MySchool数据库设计

    第一章 数据库的设计 1.E-R图中: 矩形:实体 椭圆:属性 菱形:关系 直线:连接实体,属性和关系 2.映射基数 一对多 多对一 多对多 3.范式: 第一范式:确保每列的原子性 第二范式:确保表中 ...

  7. 优化MySchool数据库(事务、视图、索引)

    事务.视图.索引: 事务:当生活逻辑中的“一个步骤”,需要使用多条SQL去完成时,必须使用事务来确保其“完整性“. 视图:简化数据库结构,方便你编写SQL语句(简化SQL语句的编写) 索引:提高“数据 ...

  8. 优化MySchool数据库(四)

    关于“无法附件数据库”过程的遇到的问题: 1.数据文件本身,具有访问权限的限制 ---- 选中 数据库文件所在的文件夹---->右键菜单(属性)----> 安全 --->User用户 ...

  9. 优化MySchool数据库(三)

    使用T_SQL 编写业务逻辑: 如何定义及使用“变量”: ---- 让电脑帮我记住一个名字(王二) C#: string   name ;    [定义一个变量] name = "王二&qu ...

随机推荐

  1. SwiftLint——Swift代码检查及自动格式化工具

    某软不给力,正在做的UWP项目停工了.官方说法是要等到RS2发布新的VOIP架构,再看看是不是给某软面子.虽然Beta用户中发出了几点愤怒的声音,但是木有用.有用的只能是某软的Skype for bu ...

  2. 爬虫--Scrapy

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  3. 前端构建:Source Maps详解

    一.前言 当使用CoffeeScript.ClojureScript编写前端脚本时,当使用Less.Sacc编写样式规则时,是否觉得调试时无法准确找到源码位置呢?当使用jquery.min.js等经压 ...

  4. 【Swift学习】Swift编程之旅---可选链(二十一)

    可选链Optional Chaining是一种可以在当前值可能为nil的可选值上请求和调用属性.方法及下标的方法.如果可选值有值,那么调用就会成功:如果可选值是nil,那么调用将返回nil.多个调用可 ...

  5. 使用Python进行GUI操作自动化

    前言 本文介绍怎样使用Python进行跨平台的GUI操作的,其中使用的一个工具包是pyautogui,PyAutoGUI可以模拟鼠标的移动.点击.拖拽,键盘按键输入.按住操作,以及鼠标+键盘的热键同时 ...

  6. javascript类型注意事项

    以下是javascript类型的注意事项: null:表示尚未存在的对象,注意,尽管尚未存在,也是个对象啊,所以用typeof检测一个null值变量的结果是Object:不过,为了便于写if语句,在j ...

  7. Think PHP项目在阿里云的虚拟主机上部署

    购买完万网的虚拟主机后,今天终于把以前一个项目转成了PHP项目,我用的是TP框架,阿里的虚拟主机还是很方便上手的,在把数据库导入完后,用FTP把程序文件上传到服务器上,阿里的虚拟主机(Linux主机) ...

  8. iOS阶段学习第一天笔记(Mac终端的操作)

    前言部分 原本从事的是.NET开发,一直在要不要转iOS 中犹豫徘徊,经过复杂的内心挣扎终于鼓起勇气辞职脱产学习iOS;希望通过四个月的 学习后能够拿到理想的薪资.以下是学习过程中的学习笔记,为了方便 ...

  9. Nancy 自定义JsonSerializer

    1.创建自己的jsonserializer类 public class CustomJsonNetSerializer : JsonSerializer, ISerializer { public C ...

  10. 2016 年沈阳网络赛---QSC and Master(区间DP)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5900 Problem Description Every school has some legend ...