T-SQL 基础学习 02
 数据库设计
        定义
               数据库设计就是将数据库中的数据实体以及这些数据实体之间关系,进行规划和结构化的过程
 在需求分析阶段,设计数据库的一般步骤
 A.     收集相信
 B.     标识实体
 C.     标记每个实体需要存储的详细信息/属性
 D.    标识实体之间的关系
 在概要设计阶段和详细设计阶段数据库设计步骤:
 1.      绘制E-R图
 2.      将E-R图转化为数据库模型图
 3.      应用三大范式规范化表设计
 数据库E-R图
        定义
               1.实体
                     现实世界中具有区分其他事物的特征或属性并与其他实体有联系的实体
               2.属性
                     实体的特征
               3.联系
                     两个或者多个实体之间的关联关系
               4.映射基数
                     表示通过联系与该实体关联的其他实体的个数
                     一对一:
                     X中的一个实体最多与Y中的一个实体关联,并且Y中的一个实体最多与X中的一个实体关联
                     一对多:
                                    X中的一个实体可以与Y中的任意数量的实体关联
                     多对一:
                                    X中的一个实体最多与Y中的一个实体关联
                     多对多:
                                    X中的一个实体可以与Y中的任意数量的实体关联
 关系数据库模式
        定义
              一个关系描述为属性名的集合称为关系模式.
              关系数据库模式是对关系数据库结构的描述,或者说是对关系数据库框架的描述
 规范设计
               第一范式(1NF,Normal Formate)
                     第一范式的目标是确保每列的原子性
               第二范式(2NF)
                     第二范式是在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关
               第三范式(3NF)
                       第三范式在第二范式的基础上更进一层.第三范式的目标是确保每列都和主键列直接相关,而不是间接相关
 满足三大范式之俗语
               第一范式
                     细到不能再分
               第二范式
                     必须和主键相关
               第三范式
                     各列必须和主键直接相关,不能间接相关
 数据库文件三大部分
               主数据文件:
                      *.mdf
               次要数据文件:
                      *.ndf
               日志文件:
                      *.ldf
               每个数据库至少要包含两个文件:一个数据库文件和一个日志文件
        经验
                为了保证数据的安全性,提高存储速度,我们应该将数据文件和日志文件分别放置在不同的驱动器上
 创建数据库
        语法
                      CREATE DATABASE数据库名
                      ON PRIMARY                                   --该选项是一个关键字,指定主文件组中的文件
                      (
                             NAME=’数据库名’                    --主数据文件的逻辑名称
                             FILENAME=’数据库路径’         –主数据文件的物理名称
                             SIZE=数据库大小                      –主数据库文件的初始大小
                             MAXSIZE=数据库最大大小       –主数据文件增长的最大值
                                                  UNLIMITED         --不受限制,大小为盘符的最大值
                             FILEGROWTH=’大小增长率’    --主数据文件的增长率,当值为0时不增长
                      )
                      LOG ON
                      (
                             NAME=’’,
                             FILENAME=’’,
                             SIZE=,
                             FILEGROWTH=
                      )
                      GO                                                   --和后续的SQL语句分隔开
 修改数据库
                      ALTER DATABASE数据库名
                      ADD FILE                                         --添加数据文件
                      (
                             …….
                      )
                      ADD LOG FILE                                 --添加日志文件
                      (
                             ……
                      )
 创建多个数据文件和多个日志文件
                      CREATE DATABASE数据库名
                             ON PRIMARY
                      (
                             …..
                      ),
                      (
                             …..
                      )
                      LOG ON
                      (
                             …..
                      ),
                      (
                             …..
                      )
 删除数据库
        语法
                      DROP DATABASE数据库名
 创建数据库前先判定一下
                      USE master        --设置当前为master数据库,以便访问指定表
                      GO
                      IF EXISTS(SELECT * FROM sysdatabasesWHERE name=’指定表名’)
                      DROP DATABASE数据库名
                      CREATE DATABASE数据库名
                      ON
                      (
                             …..
                      )
                      LOG ON
                      (
                             ….
                      )
                      GO
                      EXISTS(查询语句)监测某个查询是否存在
 系统存储过程扩展
        xp_cmdshell是SQL Server扩展存储过程
               在操作系统的指定路径下创建文件夹
                      EXEC sp_configure ‘showadvanced options’,1  –在使用xp_cmdshell前先执行sp_configure
                      GO
                      RECONFIGURE                                             --重启RECONFIGURE
                      GO
                      EXEC sp_configure ‘xp_cmdshell’,1
                      GO
                      RECONFIGURE
                      GO
                      EXEC xp_cmdshell ‘MD D:\Student’           --用创建的xp_cmdshell来创建Student文件夹
                      GO
 查询当前数据库中是否有表
        语法
                     SELECT * FROM SYSOBJECTS WHERE XTYPE='U'
 创建表
        语法
                      CREATE TABLE   表名
                      (
                            列1 数据类型列的特征
                            列2 数据类型列的特征
                             ………
                      )
                     列的特征: 包括该列是否为空(NULL),是否是标识列(自动编号),是否有默认值/主键等
 修改表
        语法
                      ALTER TABLE表名
                             ALTER COLUMN列名 varchar(20) not null
                      GO
                      ALTER TABLE表名
                             ADD列名类型                               –创建一个列
                      GO
 删除表
        语法      
                      DROP TABLE表名
 数据库表存储位置
                     当前数据库系统表:sysobjects
                     所有数据库信息表:sysdatabases
 创建表的完整语法
                      USE数据库名
                      GO
                      IF EXISTS(SELECT * FROM sysobjectsWHERE name=’表名’)    //下面的3个表名必须一致
                             DROP TABLE表名
                      CREATE TABLE表名
                      (
                            列名类型是否允许为空约束名自动增长(种子,增长率)(IDENTITY(1,1))
                             ….
                      )
                      GO
        注意
                     使用DROP TABLE语句之前,首先要确认表中是否没有客户的业务数据了..
                     要养成随时备份数据库的习惯
 使用SQL语句创建和删除约束
        数据完整性
                     指数据的正确性和相容性
        实体完整性
                     唯一确定表中一行记录
        域完整性
                     表中特定列数据的有效性,以确保不会输入无效的数值
        引用完整性
                     插入或删除记录时,维护表之间定义的关系
        自定义完整性
                     定义不属于以上三种完整性的特定业务规则
 添加约束
        语法
                      ALTER TABLE表名
                      ADD CONSTRAINT约束名约束类型具体的约束说明
 常用约束即用法
        主键约束(Primary Key Constraint)
                      ALTER TABLE表名
                      ADD CONSTRAINT约束名 PRIMARY KEY(列名)       推荐约束名:PK_**
        非空约束(Not NULL)
                      NOT NULL
        唯一约束(Unique Constraint)
                      ALTER TABLE表名
                      ADD CONSTRAINT约束名 UNIQUE (列名)                       推荐约束名:UQ_**
        检查约束(Check Constaint)
                      ALTER TABLE表名
                      ADD CONSTRAINT约束名 CHECK (条件)                        推荐约束名:CK_**
        默认约束(Default Constraint)
                      ALTER TABLE表名
                      ADD CONSTRAINT约束名DEFAULT (‘默认值’) FOR列名 推荐约束名:DF_**
        外键约束(Foreign Key Constraint)
                      ALTER TABLE表名
                      ADD CONSTRAINT约束名                                               推荐约束名:FK_**
                             FOREIGN KEY(列名) REFERENCES表名(列名)
                      GO
 创建表的时候创建约束
                      CREATE TABLE表名
                      (
                            列名类型 NOT NULL 约束名(PRIMARY KEY)
                            列名类型 NOT NULL 约束名(UNIQUE)
                            列名类型 NOT NULL 约束名(DEFAULT) ‘默认值’
                             …….
                      )
 删除约束
        语法
                      ALTER TABLE表名
                             DROP CONSTRAINT约束名
 在已有表中添加约束
        方法
                     方法一:                               --数据正确性要求比较高
 1.      导出数据
 2.      在空记录表中添加约束
 3.      导入数据
                     方法二:                               --非金融行业
                                    ALTER TABLE表名 WITH NOCHECK 
                                           ADDCONSTRAINT约束名 CHECK (条件)
 同时添加多个约束
        例子
                     ALTER TABLEStudent
               ADD CONSTRAINT PK_StudentPRIMARYKEY (StudentNo),
                   CONSTRAINT UQ_StudentUNIQUE (IdentityCard),
                   CONSTRAINT DF_StudentDEFAULT ('地址不详')FOR Address,
                   CONSTRAINT CK_StudentCHECK(BornDate>1980-01-01),
                   CONSTRAINT FK_StudentFOREIGN KEY (GradeID)REFERENCES Grade(GradeID)
            GO
转载出至:http://blog.csdn.net/heqingsong1/article/details/7495496
T-SQL 基础学习 02的更多相关文章
- Oracle SQL 基础学习
		oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ... 
- SQL 基础学习(2) Joining 和function , 作业没有做,需要看百宝箱。NOsql的概念
		SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has ... 
- SQL 基础学习(1):下载DB Browser for SQLite. 下载graphviz(为了使用Rails ERD的前提)出现❌,已debug.
		SQL is a standard language for storing, manipulating and retrieving data in databases. 关系型数据库:RDBMS( ... 
- SQL基础学习_04_视图
		视图 1. 视图的创建 视图就是保存好的SELECT语句,这些SELECT语句执行之后会产生新的表,所以在SQL中,视图和表是不做差别对待的,也就是SQL也可以对视图做一些操作: 由于 ... 
- sql基础学习
		学习参考网站:http://www.runoob.com/sql/sql-tutorial.html 一.SQL命令 1.SELECT 语句 用于从数据库中选取数据. select column_na ... 
- SQL基础学习_05_函数、谓词、CASE表达式
		函数 算术函数 1. 四则运算: +.-.*./ 2. ABS:求绝对值, ABS(数值) 3. MOD: 求余,MOD(被除数,除数) 4. ROUND:四舍五入,ROUND(对象数值,保留小数的 ... 
- SQL基础学习_03_数据更新
		数据的插入 1. 基本INSERT语句 INSERT的基本语法为: INSERT INTO <表名> (列1, 列2, 列3, -) VALUES (值1, 值2, 值 ... 
- SQL基础学习_02_查询
		SELECT语句 1. SELECT语句查询列(字段): SELECT <列名> FROM <表名>; 该语句使用了两个SQL子句,SELECT子句列举了 ... 
- SQL基础学习_01_数据库和表
		SQL语句及其种类 1. SQL语句分为三类: DDL(Data Definition Language): CREATE.DROP.ALTER; DML(Data Manipulat ... 
随机推荐
- py-faster-rcnn +cudnn V5
			转载自http://blog.csdn.net/u010733679/article/details/52221404,经过实际操作,采用了第二种手动替换代码文件.修改个别函数名的方式,成功编译. - ... 
- Photon服务器进阶&一个新游戏的出产(三)
			下面或许该介绍介绍我用Photon写的一个4人联机麻将了~ 上图 
- <<< Js中实现对字符串的截取
			1.函数split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例:var Data = "1/234/5678/9"; var str = shuju.split( ... 
- Windows操作系统
			Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家 ... 
- 一个类似宣传的H5页面
			趁着闲置 做了一个H5的页面 感觉不错. 具体效果如下 框架上我选择 zepto(其实这个可有可无,推荐用原生的最好) FullPage (感觉挺好用的一个全屏滚动插件 ) pageResponse ... 
- mysql  存储过程在批处理数据中的应用
			最近批处理数据的时候,突然想到:为什么不使用存储过程进行数据批处理? 为什么要进行批处理? 自答:减少数据库连接次数,提高效率. 存储过程批处理数据的优点:一次编译,永久执行. 这次的批处理逻辑较简单 ... 
- tyvj1113 魔族密码
			描述 风之子刚走进他的考场,就…… 花花:当当当当~~偶是魅力女皇——花花!!^^(华丽出场,礼炮,鲜花) 风之子:我呕……(杀死人的眼神)快说题目!否则……-_-### 花 ... 
- [Kerberos] Java client访问kerberos-secured cluster
			使用java client访问kerberos-secured cluster,最重要的是先从admin那里拿到可用的keytab文件,用来作认证.接下来就是调整连接的配置.以下先用连接hdfs为例进 ... 
- 新一代记事本“Notepad++”个性化设置备份
			Notepad++是一套非常有特色的自由软件的纯文字编辑器(许可证:GPL),有完整的中文化接口及支援多国语言撰写的功能(UTF8 技术).它的功能比 Windows 中的 Notepad(记事簿)强 ... 
- .htaccess 基础教程(二)
			今天要介绍的:.htaccess的第一个应用是自定义错误页面,这将使你可以拥有自己的.个性化的错误页面(例如找不到文件时),而不是你的服务商提供的错误页或没有任何页面.这会让你的网站在出错的时候看上去 ... 
