• 优化数据库设计


                                           第一章 (E-R)图

    实体可以是有形的事物,一个实体只描述一件事情。

    映射基数:

    1对1:X中的一个实体最多与Y中的一个实体关联。

    1对多:X中的一个实体可以与Y中的任意数量的实体关联。

    多对1:X中的一个实体最多与Y中的一个实体关联。

    多对多:X中的一个实体可以与Y中的任意数量的实体关联。

    图形:

    矩形表示实体集。

    椭圆形表示属性。

    菱形表示联系集。

    直线用来连接属性和实体集,也用来连接实体集和联系集。

    范式:

    第一范式:实现每列的数据不可以再分。

    第二范式:目标:确保一张表只做一件事,实现:满足第一范式,其他列与主键都有关系。

    第三范式:实现:满足第三范式,除主键外其他列都不传送依赖。

                                        第二章 (创建数据库和表,约束)

    T-SQL语句构成
    1.DML(数据库操作语言)
    INSERT,UPATE,DELETE
    2.DCL(数据控制语言)
    3.DQL(数据查询语言)
    4.DDL(数据定义语言)
    CREATE DATABASE CREATE TABLE
    创建数据库的步骤:
    1、确定数据库
    use master
    2、判断数据库是否存在,若存在则删除数据库
    if EXISTS(select * from sysdatabases where name=’数据库名’) DROP DATABASE 数据库名
    3.创建数据库:
    CREATE DATABASE 数据库名
    ON RTMARY
    (
    --数据库主要文件参数
    NAME=‘数据库主要文件逻辑名称’,
    FILENAME=’数据库主要文件物理名称’,--路径
    SIZE=数据库主要文件初始大小,
    MAXSIZE=数据库文件最大值,
    FILEGROWTH=数据库主要文件增长率
    )
    LOG ON
    (
    --数据库日志文件参数
    NAME=‘数据库主要文件逻辑名称’,--名字后一般加个_log
    FILENAME=’数据库主要文件物理名称’,
    SIZE=数据库主要文件初始大小,
    MAXSIZE=数据库文件最大值,
    FILEGROWTH=数据库主要文件增长率

    )

    创建表的步骤:
    1、确定数据库:
    use 数据库名
    2、判断数据表是否存在,若存在则删除数据表:
    IF EXISTS(select * from sysobjects where name='数据表名')
    DROP TABLE 数据表名
    3、创建表:
    CREATE TABLE 数据表名
    (
    列名1 数据类型 标识列 是否为空,-- studentNo int NOT NULL,不为空
    IDENTITY(1,1)--标识种子,标识增量
    列名2 数据类型 标识列 是否为空,-- studentNo int,为空
    .....

    )
    创建数据表的约束:
    use 数据库名
    1.主键约束(不能为空)

    ALTER TABLE 数据表名 [WITH NOCHECE] ADD
    CONSTRAINT 主键名 PRIMARY KEY(列名)
    (PK_表名)
    [WITH NOCHECE]:可以省略,暂时不检查数据约束
    2.唯一约束
    ALTER TABLE 数据表名 ADD
    CONSTRAINT 唯一约束名 UNIQUE(列名)
    (UN_列名)
    3.检查约束
    ALTER TABLE 数据库名 ADD
    CONSTRAINT 检查约束名 CHECK(表达式)
    (CK_列名) (列名>=‘1980-1-1’)
    4.默认值约束
    ALTER TABLE 数据表名 ADD
    CONSTRAINT 默认值约束名 DEFAULT(值) FOR 列名
    (DF_列名)
    5.外键约束
    ALTER TABLE 数据表名 ADD
    CONSTRAINT 外键约束名 FOREIGN KEY(列名) REFERENCES 主表名(列名)
    (FK_子表名_主表名_主表上的列名)
    删除约束:
    ALTER TABLE 表名
    DROP CONSTRAINT 约束名

                                            第三章(SQL编程)

    T-SQL的变量
    1、局部变量:
    定义:由自己声明的变量。
    形式:@变量名
    应用:
    1、声明:
    DECLARE @变量名 数据类型
    2、赋值:
    1.SET方式赋值:
    SET @变量名=值
    SET @变量名=(Select 列名 from 表名 where 条件)
    注意事项: 1.SET只能为一个变量赋值
    2.SET赋值时,变量值只能是一个,若有多个变量将报错
    2.SELECT方式赋值:
    SELECT @变量名=值
    SELECT @变量名=列名 from 表名 where 查询条件
    注意事项:1.SELECT可以为多个变量赋值
    2.SELECT赋值时,若变量值有多个,将赋于变量最后一个变量值
    3.查询条件可以省略,一般不省略
    4.赋值时,变量值为NULL,若变量之前的值是NULL,则变量被赋予NULL值
    5.赋值时,变量值为NULL,若变量之前的值不是NULL,则变量将保持原有值
    3、调用:
    PRINT @变量名 --打印
    2、全局变量
    定义:由系统声明的变量,只能使用不能修改
    形式:@@变量名
    应用:
    常用全局变量:
    1.@@ERROR:最后一个T-SQL的错误号
    2.@@IDENTITY:记录最后一次插入的标识值
    3.
    数据转换:CONVERT(nvarchar(10),列名,格式)
    (100,101,111...)
    CAST(表达式AS数据类型)
    T-SQL逻辑控制:
    1.顺序结构:
    2.分支结构:
    1)IF-ELSE选择结构:
    语法:
    IF(判断条件)
    BEGIN
    代码块1
    END
    ELSE
    BEGIN
    代码块2
    END
    2)CASE-WHEN结构:

    3.循环结构:
    1)WHILE循环结构:
    语法:
    WHILE(循环条件)
    BEGIN
    循环操作
    END

                                      第四章(高级查询)

    SELECT.........FROM 表1 WHERE 列1>(子查询)

    一个查询里面嵌套另一个完整的查询语句

    子查询还可以在多表间查询符合条件的数据,从而替换表连接(join)查询。

    IN 和NOT IN子查询

    IN(包含这个区间的)

    NOT IN(包含这个区间以外的)

    IF EXISTS(子查询)

    语句

    如果子查询的结果非空,则EXISTS(子查询)将返回真(true),否则返回假(false).

    子查询可以指定表名

    SELECT * FROM (子查询) AS 表的别名

                                第六章(事务,视图,索引)

    事务:
    属性:
    原子性:
    一致性:
    隔离性:
    永久性:
    步骤:
    1.开始事务
    BEGIN TRANSACTION
    2.业务处理,记录处理结果
    3.判断处理结果
    若处理结果为零,提交事务:
    COMMIT TRANSACTION
    若处理结果不为零,回滚事务:
    rollback trnsaction
    if(@num=0)
    begin
    commit transaction
    end
    else
    begin
    rollback trnsacition
    end
    分类:
    1.显示事务

    2.隐式事务
    注意:将截断字符串或二进制数据(长度不够)
    视图:
    语法:
    1.确定数据库
    use 数据库名
    2.判断视图是否存在,若存在则删除视图
    IF EXISTS(select * from sysobjects where name='视图名')
    DROP VIEW 视图名
    GO
    3.创建视图
    CREATE VIEW 视图名
    AS
    --SQL查询语句
    GO
    4.使用视图:
    可以重复使用的虚拟表
    不能使用 order by,insert

    索引:
    类型
    唯一索引

    主键索引

    聚集索引
    数据逻辑位置与物理位置一致,一张表只有一个聚集索引
    非聚集索引
    数据逻辑位置不与物理位置一致,一张表有多个非聚集索引

                                  第七章(存储过程)

    存储过程
    1.系统存储过程
    由系统定义并实现,以sp_开头
    2.扩展存储过程

    3.用户自定义存储过程
    由用户自定义并实现,以usp_开头

    语法
    1.确定数据库
    use 数据库名
    2.判断存储过程是否存在,若存在则删除
    IF EXISTS(SELECT * FROM SYSOBJECTS WHERE
    NAME='存储过程名') DROP PROCEDURE 存储过程名
    Go
    3.创建存储过程
    CREATE PROCEDURE 存储过程名
    参数列表
    (默认:=赋值)(OUTPUT:传出参数)
    AS
    --SQL语句S
    4.调用存储过程
    EXECUTE 存储过程名 参数列表
    1.(按照参数的顺序依次赋值)
    2.(指定参数名称给予参数赋值)
    3.(以default关键字替代有默认值的参数)
    4.(定义变量来接收传出参数,变量名 OUTPUT)

    我是不会选择做一个普通人的,如果我能够做到的话,我有权成为一位不寻常的人,我寻找机会,但我不寻求安稳,我不希望在国家的照顾下,成为一名有保障的国民,那将被人瞧不起,而使我感到痛苦不堪,我要做有意义的冒险,我要梦想,我要创造,我要失败,我也要成功,我的天性是挺胸直立,骄傲而无所畏惧,我勇敢的面对这个世界,自豪的说:在上帝的帮助下,我已经做到了。
  • 相关阅读:
    HDU 1010 Tempter of the Bone(DFS剪枝)
    HDU 1013 Digital Roots(九余数定理)
    HDU 2680 Choose the best route(反向建图最短路)
    HDU 1596 find the safest road(最短路)
    HDU 2072 单词数
    HDU 3790 最短路径问题 (dijkstra)
    HDU 1018 Big Number
    HDU 1042 N!
    NYOJ 117 求逆序数 (树状数组)
    20.QT文本文件读写
  • 原文地址:https://www.cnblogs.com/xiongrui/p/4510353.html
Copyright © 2020-2023  润新知