数据库技术及应用

一、SQL  Server 系统概述

1.SQL  Server 系统环境

    打开SQL Server Management Studio,系统自动打开“连接到服务器”,进入系统首页窗口

2.SQL  Server 管理工具

    打开SQL,在“连接到服务器”中,在“身份验证”下拉选择“SQL Server身份认证”选项;然后输入登录名为“sa”,密码为“123456”,单机连接进入系统首页

3.设置查询分析器

    打开SQL,单机新建查询,进入查询设计器,工具--选项--查询执行,可设置参数

    SET ROWCOUNT执行超时值        SET TEXTSIZE批处理分隔符

二、数据库操作

2.1数据库类型

    1.系统数据库

    Master:记录所有SQL Server系统级信息的数据库

    Model:模板数据库。每当用户创建一个新的数据库,SQL S便会复制Model,以此作为创建新数据库的基础

    Tempdb   :临时数据库

    Distribution:与数据复制相关的库

    2.用户数据库

2.2创建与使用数据库

    1.创建数据库

    系统首页--数据库--右键--新建数据库--输入名称--确定

    2.查看属性

    系统首页--数据库名称--右键属性

    常规:备份信息和维护相关信息

    文件:查看和修改文件名称、文件类型、文件组

    文件组:查看修改文件组相关信息

    选项:查看修改访问限制,故障还原

    更改跟踪:对数据库的持续数据变更进行异步跟踪

    权限:查看修改数据库权限,用户或角色以及权限的设置等相关信息

    事务日志:查看修改事务日志相关信息

    3.压缩数据库
    系统首页--数据库名称--任务--收缩--数据库--确定

三、表操作

3.1数据类型

数据库技术及应用_第1张图片

    1.字符型(ASCII 1字节、Unicode2字节)

    定长字符型Char、Nchar

    变长字符型 Vachaar、Nvachar、

    文本型Text、Ntext

    2.数值型

    (1)整数型:存储整数

        Bignit大整形、Int/Integer整形、Smallint短整型、Tinyint微短整型

    (2)精确数值型:带小数的整数

    (3)浮点型:近似数值型,不能精确表是数值

        float(n) real

    (4)货币型:数字前冠一个货币符号¥,梅三位分隔符

    3.日期时间型
    4.二进制数据类型:存储图像,有格式的文本数据excel word
    5.其他数据类型:

           时间戳数据类型

            账号标识符数据类型

            游标数据类型

            变体数据类型

3.2创建数据表

    1.数据库包含(多个)数据表,表是库的对象,库对应文件,表对应主题

    2.二维表:以行和列的形式

    3.字段field是数据表中最基本的数据项

    4.数据表组成

    表名:同一个数据库中表的名称不能相同,不要与数据库中的师团窗体报表等同名

    表结构:空表。创建表先设计表结构

    表记录

3.3利用SQL创建表

    1.语法框架

        CREATE TABLE...

    2.语法格式

        CREATETABLE<表名>

        (<列名><数据类型>[<列约束>]

           [,<列名><数据类型>[<列约束>]]...

            [,<表约束>])

      数据库技术及应用_第2张图片

3.4修改表结构涉及哪些方面 

        1.增加或删除字段 

        2.改变字段的排列顺序 

        3.修改字段

                更改字段名、更改字段的数据类型、更改字段的大小,更改字段的其他属性

        4.重新设置主键

3.5修改表结构的方法 

        1.利用表“设计视图”修改表结构 
        2.利用SQL语句修改表结构
            ALTER TABLE <表名> 
             [ ADD <新列名> <数据类型> [ 完整性约束 ] ]       增加
             [ DROP <完整性约束> / <列名> ]                       删除
             [ MODIFY/ ALTER  <列名> <数据类型> ]            修改已存在字段

3.6主键与外键

        只要能唯一区分开每一条记录的列都可以设置成主键;一个表只允许有一个主键

        主键外键可同时存在,也可独立存在

        1.主键

            (1)一个表只有一个主键,分为单字段主键和多字段主键

        2.主键设置方法
            1.在设计视图中设置
            2.利用SQL语句设置

        3.外键
            某个字段在当前表中不是主键字段,但在其他表中是主键字段,则称为外键
            外键的存在是为了在表之间建立关系,关系的简历是为了在表之间正确引用数据

3.7创建表关联

            1.发起创建关联的表称为主表,接收关联的表称为从表

            2.1对1,1对n,n对1,m对n

四、表中数据的操作

        1.利用SQL插入记录

                语法框架       INSERT  INTO …VALUES … 

         2.例子

            例1:将一个完整的学院记录('A', '软件', '沈存', '04311234567', 'A-209') 插入到学院表中。 INSERT INTO 学院 VALUES('A', '软件', '沈存', '04311234567','A-209') 

            例2:将一个不完整的学院记录('B', '物理','B901')插入 到学院表中。 INSERT  学院 (学院编号,学院名称,地址) VALUES ('B','物理', 'B901') 

        3.数据更新

            1.更改字段的数据时,数据的取值范围和类型必须与字段所定义的范围和类型一致
            2.利用SQL语句修改记录
                命令动词:update
                语法框架:
                 update...set...where...
                语法格式
                update<表名>set<列名1>=更新的值[where<更新条件>];

        4.删除记录

                先删除从表中的相关记录,然后才能删除主表中相关的记录

五、索引操作

        5.1    索引是按照索引表达式的值,使表中的记录有序排列;索引可分为聚集索引,非聚集索引,唯一索引

                索引要占用无力空间,而且常比基本表本身占用的空间要大

                一个基本表,可根据应用环境的需要创建若干索引以提供多种存取途径,所i你的创建和撤销由DBA或表的拥有着负责

        5.2    分类

                1.聚集索引

                2.非聚集索引

                3.唯一索引

        5.3 创建索引

                create...index...on...

                unique 唯一索引        clustered 聚集索引        nonclustered  非聚集索引

        5.4 查看索引

                sp_helpindex 学生

         5.5 删除索引

                drop index<索引名>
                drop index 学生.学生_班级编号

六、视图操作

        1.视图和表的区别

                视图是已经编译好的sql语句,表不是
                视图不保存数据记录,表保存数据记录
                模式上看,表是内模式,视图是外模式
                视图是查看数据表的一种方式,知识一些sql语句的集合
                表属于全局模式,是实表;视图属于局部,是虚表

        2.视图与表的联系

                一个视图可以对应一个或多个基本表

        3.视图的创建和使用

                create view ... as...
                create view <视图名>[<列名>]as <子查询> [with check option]

        4.更新视图 

            1.利用sql更新视图
                alter view .. as ...
                alter view<视图名>[<列名>] as <子查询>[with check option];
            2.例子

                更新“学生1_V”视图,增加“籍贯”列

                ALTER VIEW 学生1_V  
                AS  
                SELECT 学号, 姓名, 性别, 出生年月, 籍贯 
                FROM 学生

        5.删除视图

                DROP  VIEW  ┄

七、SQL语言   结构化查询语言

        

                SQL是(关系型 )数据库语言的标准,只要掌握了SQL,在这类数据库中是通用的。

        1.T—SQL语言的组成

                数据定义语言 DDL

                        定义关系数据库的模式、外模式、内模式

                数据操纵语言 DML

                        数据查询、数据维护

                数据控制语言 DCL

                        对基本表和视图的授权,完整性规则描述和事务控制语句

                系统存储过程

                其他的语言元素(批处理,控制流语句,注释)

        2.特点

        1.高度的综合        2.非过程化        3.采用面向集合的操作方式

        4.一种语法结构多种使用方式        5.语言结构简介

功能描述 命令动词
数据操纵 select、inserrt、update、delete
数据定义 create、alter、drop
数据控制 grant、revoke

       


    数据操纵命令动词

数据库技术及应用_第3张图片

        数据定义命令动词

数据库技术及应用_第4张图片


八、SQL语句

        1.利用SQL创建和修改数据

                1.1 数值型

integer,INT:长整数

smallint:短整数

real:取决于机器精度的浮点数

double:取决于机器精度的双精度浮点数

numeric(p,q):定点数,由p位数字组成,包括符号、小数点、小数点后有q位数

                1.2 字符型

(1)Char(n): 长度为n的定长字符串,n是字符的个数; 

(2)Varchar(n): 具有最大长度为n的变长字符串; 

(3)Text/Memo: 长度可根据数据多少而定; 

(4)Binary(n): 长度为n的定长二进制位串; 

(5)VarBinary (n): 具有最大长度为n的变长二进制位。 

                1.3 日期、时间型

        (1)Date:日期数据类型; 

(2)Time:时间数据类型; 

(3)DateTime:日期时间数据类型。 

                1.4 逻辑型

                (1)boolean:逻辑数据

                1.5 货币型

                (1)smallmoney:货币数据类型

                (2)money

                1.6 OLE型

                (1)general:通用型数据

        2.约束

                用来限制用户输入数据的规则或条件。

       数据库技术及应用_第5张图片


        利用SQL语句设置

        (1)语法格式

        ①创建表时:<约束类型><列名>    

        ②修改表时:  添加约束:ADD CONSTRAINT  <约束名> <约束 类型><列名>  

                            删除约束:DROP CONSTRAINT <约束名> 


删除列要加关键字column
alter table Student drop column 列名
alter table语句默认添加的是列,删除的则是约束
alter table Student drop 约束名,这样是正确的

    (2)约束名的命名规则推荐采用:约束类型_约束列,且一般用英文名称。  

①主键(Primary Key)约束:   如PK_StudentId  

②默认(Default Key)约束:如DF_Sex  

③检查(Check Key)约束:如CK_Age  

④唯一(Unique Key)约束:   如UQ_CardId  

⑤外键(Foreign Key)约束:   如FK_DepartmentId 

 数据库技术及应用_第6张图片


九、数据查询

        1.语法框架

        select字段列表...from数据源...where检索条件...group by对结果分组表达式...having参与分组条件...order by对结果排序表达式...

         2.无条件查,简单查询

        ① 查看各个学院的全部信息

            select 学院编号,学院名称,院长姓名,电话,地址 from 学院

        ② 检索制定列,查看每个系多少班级, 系主任是谁        

            select 系名称,班级个数,系主任

            from 系

        3.运算符

         类型

            算术运算符:+ - * / %

            赋值运算符:=

            比较运算符:>    >=    <    <=    =    <>

            逻辑运算符:AND、OR、NOT

            连接运算符:+

         优先级

            ()>算术>比较> 逻辑>连接>赋值

         聚合函数

            1.SUM:返回表达式值的总和

            2.AVG:返回表达式值的平均值

            3.COUNT:返回记录集中的计数

            4.MAX:返回表达式中的最大值

            5.MIN:最小值

     数据库技术及应用_第7张图片

        4.有条件的查询

数据库技术及应用_第8张图片


5.sql查询结果的排序和分组

        排序的关键字:order by

        分组的关键字:group by

        从大到小 升序:ASC            从小到大 降序:DESC            

       数据库技术及应用_第9张图片


6.在排序结果中添加新列

        1.在结果中添加新列的语法格式

            select<表达式>AS<新列名>

     数据库技术及应用_第10张图片

7.对查询结果分组计算

        group by <表达式>having<表达式>

       如需使用控制条件,则使用having;having 必须与 group by 联合使用,不能单独使用

     数据库技术及应用_第11张图片


十、连接查询

        同时涉及多个表的查询,参与连接的表可以有多个,但连接操作在两个表直接进行

            1.sql连接的类型

            内连接: inner join
               如果两个表的相关字段满足连接条件,就从这两个表中提取数据并合成新记录
                1.等值连接:使用等号运算符比较被连接列的列值
                2.非等值连接:使用>,>=,<,<=,! <,<>进行比较运算的
                3.自然连接:等值连接的特殊情形,是去掉重复列的等值连接

数据库技术及应用_第12张图片


      外连接
        左外连接 left outer join
        限制连接关键字右端的表数据必须满足连接条件,不管左端数据是否满足条件,均输出
数据库技术及应用_第13张图片
        右外连接 right outer join
数据库技术及应用_第14张图片

        全外连接 full outer join

        左右两端表中的记录都输出,如没能找到匹配的元组,使用null代替

数据库技术及应用_第15张图片

         交叉连接 cross join

        不带where子句,它返回被连接到的两个表的所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数

            查询学生表和选课表两个关系模式的乘积

             select * from 学生 cross join 成绩

数据库技术及应用_第16张图片


十一、嵌套查询

        一个查询语句中完整的包含另一个查询语句。由里到外,先执行最内层,依次由里到外

        1.谓词:用来描述或判定客体性质的词   5大于3,大于

        2.SQL常用谓词,谓词前面是where

            distinct、top

            in、not in

            比较运算符和between

            exists

            like        

            any或all 

        例子1    查看与0001班级人数相等的班级名称,班长姓名

数据库技术及应用_第17张图片


        例子2 查看两门成绩

数据库技术及应用_第18张图片

        带有any 或 all 的子查询

        1.any:任意一个值

        2.all:所有值需配合使用比较运算符

                >any:大于子查询结果中的某个值

                >all:大于子查询结果中的所有值

 数据库技术及应用_第19张图片


十二、存储过程与触发器

        1.存储过程

            系统存储过程sp_、本地存储过程、临时存储过程、远程存储、扩展存储xp_

        2.触发器

            insert触发器、update触发器、delect触发器

        3.使用sql语句创建存储过程

            create    proc(edure可省略)         [ ;Number ] 
            [ { @parameter Data_type }
           [ VARYING ] [ = Default ] [ OUTPUT ] ] [ ,...n ]
           [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }] 
            [ FORREPLICATION ] 
            AS sql_statements
        create proc 女学生
        as select 姓名,性别
        from	学生
        where 性别 = '女'
            参数怎么用?
            VARYING 指定作为输出参数支持的结果集(由存储过程动态构 造,内容可以变化)。仅适用于游标参数。 
            Default 参数的默认值。如果定义了默认值,不必指定该参数 的值即可执行过程。默认值必须是常量或 NULL。     
           OUTPUT 表明参数是返回参数。该选项的值可以返回给 EXEC[UTE]。使用 OUTPUT 参数可将信息返回给调用 过程。
            RECOMPILE 表明 SQL Server 不会缓存该过程的计划,该过程将在 运行时重新编译。 
        ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 CREATE PROCEDURE 语句文本的条目。使用 ENCRYPTION 可 防止将过程作为 SQL Server 复制的一部分发布。 
            FORREPLICATION 使用 FOR REPLICATION 选项创建的存储过程可用作 存储过程筛选,且只能在复制过程中执行。本选项不能 和 WITH RECOMPILE 选项一起使用。

        

        4.三种形式的存储过程

            不带参数的存储过程
--创建一个用户存储过程(优秀学生)
create proc 优秀学生
as select 学生.学号,学生.姓名,课程.课程编号,成绩.成绩
from	学生 inner join 成绩 on 学生.学号 = 成绩.学号
		    inner join  课程 on 成绩.课程编号 = 课程.课程编号
where 成绩.成绩>90;
            带参数的存储过程
--创建一个用户存储过程(插入学院)
 CREATE PROCEDURE插入学院 
 @Param1char(1), @Param2char(4), 
 @Param3char(6), @Param4char(13), 
 @Param5char(5) 
 AS 
 BEGIN 
 INSERT INTO 学院(学院编号,学院名称,院长姓名,电话,地址) 
 VALUES(@Param1,@Param2,@Param3,@Param4,@Param5) 
 END
            begin。。。end   中间部分要么一起执行,要么一起不执行

            带输出参数的存储过程:

创建存储过程add_proc1,它的功能是计算两个参数之和,并将结果使用输出参数返回
CREATE PROCEDURE add_proc1 
@num1 INT = 0, 
@num2 INT = 0, 
@num3 INT OUTPUT 
AS 
SET @num3 = @num1 + @num

        5、存储过程的执行、修改、删除

            1.执行

            不带参数存储过程的执行
                exec【ute省略】 优秀学生

            带输入参数存储过程的执行
                 EXEC 插入学院  'Y','会计','米米','13531295228','B-320'
         数据库技术及应用_第20张图片
            3.带输出参数的存储过程的执行
数据库技术及应用_第21张图片

             declare @num3 as int
             exec add_proc1  @num3 output
             print @num3

            输出结果为0,没有定义参数值,则取之前定义的0

            

            2.修改

            ALTER proc 优秀学生


            3.删除

            drop procedure 优秀学生


6.触发器

            1.使用sql语句创建触发器

            create trigger <触发器名>

        创建一个触发器(学生性别),用以约束学生表中性别字段值(只可能是“男”或“女”),保证数据的正确性

            其中,begin和end中间的内容要么全部执行要么全部不执行

        create trigger 学生性别 on 学生
		for insert,update
		as
		if exists ( select * from 学生
					where 性别 not in('男','女'))
					begin
						RAISERROR('请输入合法的性别!',16,1) 
	        			        ROLLBACK TRANSACTION
					end
            2.使用已经创建的触发器

            insert into 学生 values ('','','','','')

            3.修改触发器
        ALTER TRIGGER <触发器名> ON { <表名>| <视图名>} 
        ALTER TRIGGER Trigger_学生 ON 学生 
        FOR UPDATE 
        AS 
	    IF UPDATE(姓名) 
        BEGIN 
	    RAISERROR('您不能修改表中学生的姓名!',16,1) 
	    ROLLBACK TRANSACTION 
        END
            4.删除触发器
        DROP TRIGGER Trigger_学生


十三、数据库安全管理

            安全级别,由里到外
            DBMS级、网络级、操作系统级os、用户级、环境级




VB暂时还没看
2018年6月12日 17点28分45秒









你可能感兴趣的:(数据库技术及应用)