-------------------------------------第一章  数据库的设计-------------------------------------

软件开发周期:
     (1)需求分析
     (2)概要设计
     (3)详细设计
     (4)编码
     (5)集成测试
     (6)上线运行
     (7)后期维护

1,数据库设计步骤:
     (1)收集信息
     (2)标识对象(确定数据库中有哪些表)
     (3)标识对象的属性(确定每个表中的例)
     (4)标识对象的关系(两个表的关系)
    4种关系:
     1对1
     1对多
     多对1
     多对多

2,E-R 实体关系图
     矩形   表示,实体集(即表)
     椭圆   表示,属性(即列)
     菱形   表示,关系集(即关系)

3,数据库的三大范式:(在实际工作中不一定遵循)
     衡量数据库设计是否优秀的标准

第一范式:确保每一列的数据不可再分
     第二范式:要求每个表只描述一件事
     第三范式:要求每一列与主键有直接关系,即确保表中每一列都直接依赖于主键

--------------------------------------第二章  数据库的实现------------------------------------------

1,数据库操作
     (1)使用语句创建数据库
          create database  数据库名
          on primary{     --设置数据库文件
           //逻辑名称
           name='逻辑名称',      --不用带后缀.mdf
          //设置初始大小
           size=3mb,             --sql server2014最小不可小于5mb
          //增量
          filegrowth=1mb,
          //路径包括文件,即物理名称
          filename='路径',
          //增长的最大值
          maxsize='100mb'
             }
             log on{     --设置事物日志文件
          //与上相同
          }

例:
          create database bbsDB
          on primary
          (
          name='bbsDB',size=3mb,filegrowth=1mb,
          filename='E:\SQL Sever\SQL Server 高级编程\数据库\bbsDB.mdf'
          )
          log on
          (
          name='bbsDB_log',size=1mb,filegrowth=1mb,
          filename='E:\SQL Sever\SQL Server 高级编程\数据库\bbsDB_log.ldf'
          )

(2)删除数据库
           drop database 数据库名

(3)判断数据库是否存在
          1>sysdatabases表:保存在master数据库中,这张表保存了所有数据库的信息
            sysobjects表:数据库的系统表

例:  判断数据库是否存在,如果存在输出a,否则输出b
          if(exists(select * from sysdatabases  where name='students'))
          begin
          select 'a'
          end
          else
          begin
          select 'b'
          end

2,表操作
     (1)创建表
          identity       标识列
          primary  key   主键
          not null       不为空

create table 表名
          (
            id  int not null primary key  identity,
            name varchar(20)  not null,
           ..................................
          )

(2)删除表
          drop table 表名

3,约束
     (1)主键约束   primary key
     (2)检查约束   check
     (3)默认值约束  default
     (4)主外键约束   foreign key

1>添加约束:

添加主键约束:
               alter table 表名
               add constraint 主键约束名(规范"pk_"开头)    
               primary key(列名)

添加检查约束:
               alter table 表名
               add constraint 检查约束名(规范"ck_"开头)  check(表达式);

添加默认值约束
               alter table 表名
               add constraint 默认值约束名(规范"df_"开头)
               default('默认值')   for 列名

添加主外键约束:
               alter table 表名(外键表)
               add constraint 外键约束名(规范"fk_"开头)
               foreign key(外键名)
               references   主键表名 (主键列名)

注:
       也可同时给一个表添加多个约束

2>删除约束
          alter table 表名
          drip constraint 约束名

4,使用命令创建用户和删除用户的6步
     (1)创建:
          第一步:创建sqlserver登录用户
               exec addlogin '登录名','密码'
          第二部:创建对应数据库的用户
               exec grantdbaccess '登录名','用户名'
          第三步:添加用户对指定表的操作权限
               grant insert,upadat,select  on  表名  to  用户名
     (2)删除
          第一步:撤销权限
               revoke  权限  on  表名  from  用户名
          第二步:删除数据库用户
               exec sp_dropuser  '用户名'
          第三步:删除登录账号
               exec sp_droplogin  '登录名'

---------------------------------------------第三章 T-SQL编程-------------------------------------------------

1,局部变量(自定义变量)
     declare @变量名  数据类型     。。。。后面可定义多个

2,变量的赋值
     (1)set赋值
          set @变量=值
     (2)select赋值
          select @变量=列名 from 表名
     注:这种赋值方式只适合用户查到的数据只有一条时,如果查询到的结果为多条语句,则给变量赋的值是最后一条语句的值

3,输出变量
     (1)print  变量:以文本的方式输出
     (2)select 变量:以表元素的方式输出

4,全局变量
     常用:
          @@error           获取上一条语句的错误号
          @@identity       获取最后一次产生的标识值
          @@rowcount        受上一条语句所受影响的行数
          不常用:
          @@language       当前使用的语言名称
          @@max_connections   可以创建的同时连接的最大数目
          @@servername         本地服务器的名称
          @@servicname         本地计算机上的SQL服务的名称
          @@timeticks           当前计算机上每刻度的微秒数
          @@version            当前sql server的版本号

5,逻辑控制语句
     if(条件)
     begin

end
     else
     begin
     end

例:
     declare @username varchar(10)
     set @username='许超'
     if(@username='超')
     begin
     print '呵呵'
     end
     else
     begin
     print '呜呜。。。'
     end

6,while循环语句
     while
     begin

end

例:
     declare @i int
     set @i=0;
     while(@i<10)
     begin
     print @i
     set @i=@i+1
     end

7,case ...end 多分支结构
     case
      when  条件1   then   结果1
      when  条件2   then   结果2

else
       其他情况
     end
 
     注:case...end  不能单独使用必须嵌套在sel语句中使用

8,批出理   
     关键字:go

---------------------------------------第四章 高级查询-------------------------------------------

1,子查询的特点:
     (1)当子查询返回的值只有一个时可以使用比较运算符,当子查询的值不只一个时要用in 或not in
     (2)子查询中查询的列只能是一列
     (3)子查询中的类型要和条件的类型一致
     (4)子查询可以应用在 insert,update,select,delete  语句中
     (5)如果子查询中使用了order by 就必须包含top关键字

2,简单子查询
     例:select * from stuinfo where scoreid=(select id from stuscore where score=60)

3,in和not in 子查询
     例:select * from stuinfo where scoreid in(select id from stuscore where score>60)
     例:select * from stuinfo where scoreid not in(select id from stuscore where score>60)

4,exists和not exists
     检查查询的数据是否存在,存在返回true,不存在返回false
     用法:
          exists(语句)
          not exists(语句)

-------------------------------------------第五章 事物、索引和视图-------------------------------------

1,事物
     (1)事物作为一个整体,要么都执行,要么都不执行。
          1>开始事物
               begin tran   (或begin transaction)

2>提交事物
               commit tran
          3>回滚事物
               rollback tran

(2)事物的属性:
               原子性:是一个整体,不可再分,要么都执行,要么都不执行
               一致性:事物开始之前和事物结束之后,数据的状态保持一致
               隔离性:对同一个数据的操作,事物之间是彼此隔离的,要么A先执行,要么B先执行
               永久性:事物对数据的影响是永久的

2,索引
     (1)分类:
          1>聚集索引:(主键索引属于聚集索引)
               特点:
               *每个表只能有一个聚集索引
               *索引页的顺序和数据页的数据是一致的
               *创建主键会自动创建聚集索引
               *当查询范围值时特别有效

2>非聚集索引
               每个表最多可健249个,因为没个表最多可以有249个列
               选择索引列的标准:
               *频繁作为查询条件的列
               *唯一值较多的列
               *不经常被更新的列
     (2)使用SQL语句创建索引
          非聚集索引:
               create index  索引名称  on  表名(列名1,列名2,.....)
          聚集索引:
               create clustered index  索引名称   on    表名(列名1,列名2,.....)

3,视图
     创建视图:
          create view 名称(一般以vi_开头)
          as
          内容

使用视图:
          select * from  视图名

--------------------------------------------第6章 存储过程------------------------------------------------

(一),存储过程
1,存储过程的优点:
     (1)执行速度更快
     (2)允许模块化程序设计
     (3)提高系统安全性
     (4)减少网络流通量

2,常见的系统存储过程

sp_database            显示当前系统中的所有数据库信息
     sp_helpdb              显示所有或指定数据库的详细信息
     sp_renamedb            修改数据库名称             例:sp_renamedb  '旧名','新名'   
     sp_tables                显示当前数据库下所有表的信息         例:sp_tables 或 sp_tables '表名'
     sp_columns              显示某个表列的信息        例:sp_columes '表名'
     sp_help                查看某个表的所有信息        例:sp_help  或 sp_help '表名'
     sp_helpconstraint      查看某个表的约束         例:sp_helpconstraint '表名'
     sp_helpindex             查看某个表的索引            例:sp_helpindex '表名'
     sp_stored_procedures      显示当前数据库下的所有存储过程    例:sp_stored_procedures
     sp_password            修改当前登录用户的密码        例:sp_password '旧密码','新密码'
     sp_helptext            显示默认值、未加密的存储过程、用户定义的存储过程、触发器或试图的实际文本        例:sp_helptext

3,自定义存储过程(一般以proc_开头)
     语法:
          create procedure  名称
          参数1,参数2,......输出参数 output
          as
          内容

(二),触发器
     在执行增删改查时会自动触发
1,优点:
     (1)触发器会自动执行
     (2)可以对表进行级联修改
     (3)可以实现强制约束

2,两个重要的表
     inserted表:存在内存中的临时表,存放最新插入的数据,修改后的数据在inserted表中
     deleted表:临时保存了删除的记录,存放修改前的数据

3,触发器的使用
     插入触发器:insert
     修改触发器:update

例:
     插入的触发器:
          create trigger  触发器名  on  表名
          for insert
          as
          declare @id int,@count int
          select @id=scoreid from inserted
          update stuscore set score=20 where id=@id

修改的触发器:
          create trigger 触发器名 on 表名
          for update
          as
          declare @id int
          select @id=scoreid from deleted
          update stuscore set score=50 where id=@id

删除存在的触发器:
          drop trigger 触发器名

Sql Server数据库设计高级查询的更多相关文章

  1. SQL Server数据库(高级查询)

    高级查询 1.连接查询 有外键关系的两张表,通过关系一次查询两张表 (1)select * from 表名,表名 --- 直接使用出现笛卡尔积,两个表数据一一对应,查询出的结果数目是两个表的行的乘积, ...

  2. 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》

    一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...

  3. SQL Server 数据库设计、命名、编码规范

    https://blog.csdn.net/songguozhi/article/details/5858159 SQL Server 数据库设计.命名.编码规范

  4. 如何使用SQL SERVER数据库跨库查询

    SQL Server中内置了数据库跨库查询功能,下面简要介绍一下SQL Server跨库查询.首先打开数据源码:OPENDATASOURCE不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分 ...

  5. SQL Server 数据库设计

    一.数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置.如果不经过数据库的设计,我们构建的数据库不 ...

  6. SQL server 数据库基础语句 查询语句

    这一章要学习查询语句 我看car这一数据 我们就开始打上 select  *from car 条件修改 update 表名 set 列名1=值1 where 列名2=值2   //当列名2=值2时   ...

  7. SQL SERVER数据库多条件查询

    例如:查询挂号超500的数据select CONVERT(VARCHAR(10),DGH,23),COUNT(*) from yxhis2017..VTBMZGHMX2017 where bth=0 ...

  8. SQL Server数据库 优化查询速度

    查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...

  9. 查询Sql Server数据库对象结构

    查询Sql Server数据库对象结构 查询数据库 查询架构 查询表 查询列 查询存储过程 查询视图 1.查询某一服务器下所有数据库 select t.[name] as 数据库 from sys.d ...

随机推荐

  1. ExtJS4.x动态加载js文件

    动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...

  2. 解决获取IP地址时出现“在一个非套…

    今天单位的一台机器在用IPCONFIG/RENEW时遇到了这个问题,上网查了一下,网上的版本在对XP不太好用,网上的版本如下: 1.从注册表中备份以下项:(当然也可以用Erunt备份整个注册表)HKE ...

  3. 代码初始化 故事板初始化 xib初始化总结

    对象的初始化有三种方式   // 代码创建 - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { ...

  4. OC——NSDictionary和NSMutableDictionary

    //初始化 NSString *key1 = @"key1"; NSString *key2 = @"key2"; NSString *key3 = @&quo ...

  5. mysql插入返回当前生成的主键

     1:sql中需要添加属性 keyColumn="base_price_id" keyProperty="basePriceId" useGeneratedKe ...

  6. 「北京」京东 JD.COM 招聘中/高级前端工程师

    工作职责: 负责前端界面的前端构建,各类交互设计与实现: 前端样式和脚本的模块设计及优化: 协同后台开发人员完成项目: 职位要求: 专科及以上学历,2年以上前端重构与脚本开发经验,计算机或相关专业者优 ...

  7. Ecsotre 参考

    2.dbschema dbschema 字段属性 ‘type’ => ‘int unsigned’, //字段类型 ‘extra’ => ‘auto_increment’,//定义自增 ‘ ...

  8. cocos2d-x中的Box2D物理引擎

    在Cocos2d-x中集成了2个物理引擎,一个是Chipmunk,一个是Box2D.前者是用C语言编写的,文档和例子相对较少:Box2D是用C++写的,并且有比较完善的文档和资料.所以在需要使用物理引 ...

  9. iOS中判断设备系统版本

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  10. UVa230 Borrowers (STL)

     Borrowers  I mean your borrowers of books - those mutilators of collections, spoilers of the symmet ...