zoukankan      html  css  js  c++  java
  • 数据库学习笔记

    |------------------------------------------------------------------------------------------------------|
    |
    |
    |                         /* -- %%%%%%%%% 数据库学习笔记 %%%%%%%% --*/    
    |
    |
    |-------------------------------------------------------------------------------------------------------|
    |||||||
    |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
    ||||||||||||||||||||||||||||||||||||||||||第二章 数据创建与管理 ||||||||||||||||||||||||||||||||||||||||||||||||||||

    ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

    -- 一.查数据库信息
    EXEC
    sp_helpdb [数据库名字]
    GO

    --二.修改数据库名,数据库的更名
    EXEC
    sp_renamedb  [数据库原名]  [数据库新名]
    GO
    --三.修改数据库属性
    --1.可以右键通过属性修改数据
    --2.还可以使用T_SQL语句修改数据库

    ALERT DATABASE 数据库文件名

    {ADD FILE <filespec> [,....n] [TO FILEGROUP 组名 ]} /*增加数据库文件*/

    | ADD LOG FILE <filespec> [,...n]  /*增加事务日志文件*/
     
    | ADD FILEGROUP 组名            /*增加文件名*/


    | REMOVE FILE 数据库文件的逻辑文件名    /*删除数据文件*/

    | REMOVE FILEGROUP 组名            /*删除文件组*/

    | MODIFY FILE <filespec>             /*修改文件属性*/

    | MODIFY NAME=新数据库名称          /*数据库更名*/


    --四.例题:1.扩充文件大小 将数据库interface 的主文件interface文件的初始大小改为50MB
     
       USE Interface
       GO
       ALTER DATABASE Interface
       MODIFY FILE
       (NAME='interface',SIZE=60MB)
       GO


       --2.添加一个次数据库文件到Interface数据库中,文件的逻辑名为interdata,存储在E盘的mysql server data
       --,初始大小为10MB,最大空间不受限制,每次增加20MB

       USE Interface
       GO
       ALTER DATABASE Interface
        ADD FILE
         (NAME='interdata',FILENAME='E:mysql server datainterdata.ndf',SIZE=10MB,MAXSIZE=UNLIMITED,FILEGROWTH=20MB)
         GO

    --3.删除数据库的次数据库文件interdata.ndf
       USE Interface
       GO
       ALTER DATABASE Interface
       REMOVE FILE interdata
       GO

    --4.将数据库更名为interface
      
       USE Minterface
       GO
       ALTER DATABASE Minterface
       MODIFY NAME= interface
       GO
      
    --五.收缩数据库

    数据库收缩分两种情况:自动收缩和手动收缩.为什么要收缩呢,主要是提高对数据库的维护来说的,减少日志文件大小.
    收缩数据库就是把数据库不需要或者没有用的东西进行资源回收,简单的说就是数据库压缩,比如你数据库的很大,
    你收缩下数据库就不会有那么大了,还有一个办法就是删除数据库日志,具体代码:
    DUMP TRANSACTION [YZ] WITH NO_LOG --清空日志
    BACKUP LOG [YZ] WITH NO_LOG --截断事务日志
    DBCC SHRINKDATABASE([YZ]) --压缩数据库
    DBCC UPDATEUSAGE ([YZ]) --报告和更正 sysindexes 表的不正确内容

    exec sp_detach_db @dbname='数据库名'
    exec sp_attach_single_file_db @name='数据库名',@hysname='C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLData数据库名.mdf'

    --备份数据库
    BACKUP DATABASE testdb TO DISK='d:data estdb20070906.bak'
    --清空日志
    DUMP TRANSACTION testdb WITH NO_LOG       
    --截断事务日志  
    BACKUP LOG testdb WITH NO_LOG     
    --收缩数据库  
    DBCC SHRINKDATABASE(testdb)    --设置自动收缩
    EXEC SP_DBOPTION testdb,AUTOSHRINK,TRUE-----(还可在数据库属性--》选项里改)



    --截断日志
    USE Master
    GO
    BACKUP LOG Demo  WITH NO_LOG
    GO
    --收缩日志文件
    USE Demo
    GO
    DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
    GO


    --六.删除数据库
    --删除数据库有两种情况:一种是通过找到数据库的删除窗口,去删除数据库,这种方法比较简单,只要鼠标右键就能实现,
    --这里不再赘述.第二种是:通过T-SQL语句删除数据库
    DROP DATABASE  [数据库]
    GO

    --七.分离和附加数据库
    --分离数据库
    数据库分离是指将数据库文件从数据库服务器实例中分离出来,相当于关闭了数据库。数据库分离后,
    应用程序不能连接到该数据库,数据库文件可以被其它进程访问。通常分离数据库用于快速地将数据库
    迁移到另一个SQLSERVER实例。数据库分离后,还可以附加到SQLSERVER实例。
    附加数据库是分离数据库的反过程.

      分离和附加适用于两种情况:

      ①将数据库移动到同一服务器的不同实例
      ②将数据库从一台服务器移动到另一台服务器
    八.一些重要概念:
    表;是存储各种数据的数据库对象
    索引:是加快数据库查询速度的数据库对象
    视图:是由表派生出来的用于查看数据的数据库对象
    规则:是对数据库中表的限制,它限定的是表的列
    存储过程:是完成特定功能的T-SQL语句集合构成的数据库对象
    触发器:是特殊的存储过程,操作DDL或DML语句时自动执行的数据库对象
    |-----------------------------------------------------------------------------------------------
    |
    |         --%%%%%%%第二章 数据库的创建与管理 %%%%%%%%%--
    |-------------------------------------------------------------------------------------------------
    一.选择题:
    1.SQL server 2008 的登录账户信息保存在()数据库中.
        A.master  B.model   C.msdb   D.tempdb

    答:选A.
    2.下数据库中,不属于SQL server2008系统数据库是()
      A.master  B.tempdb   C.userdb  D.msdb

      答案:选择C
    3.在SQL server 2008的数据库文件中,()有且仅有一个,是数据库和其他数据库文件的起点.
      A.次数据库文件  B.主数据库文件  C.日志文件  D.备份文件

      答案:选择B

    4.在SQL Server 2008中,关于数据库的说法正确的是()

    A.一个数据库可以不包含事务日志文件
    B.一个数据库可以只包含一个事务日志文件和一个数据文件
    C.一个数据库可以包含多个数据文件,但只包含一个事务日志文件
    D.一个数据库可以包含多个事务日志文件,但只能包含一个数据文件

    答案:选择B
    5.数据库系统日志文件用于记录的文件为();

    A.程序运行过程  B.数据查询操作  C.程序执行结果  D.数据更新操作

    答案:选择D

    6.建立数据库的T-SQL语句是()

    A.CREATE TABLE  B.CREATE DATA  C.CREATE DATABASE  D.MODIFY TABLE
    答案:选择C

    7.修改数据库语句是()
    A.CREATE TABLE  B.CREATE  DATABASE  C.ALTER DATABASE  D.ALTER DATA


    答案:C

    8.用于存储数据库操作记录的文件为()
    A.数据文件 B.日志文件 C.文本文件  D.图像文件

    答案:日志文件


    9.主数据库的文件扩展名为()
    A.txt B.db  C.mdf  D.ldf

    答案:C


    10.能够在服务器之间移动数据库的操作()

    A.创建数据库  B.修改数据库 C.分离数据库 D.删除数据库

    答案:C

    二.1.数据库文件有__主数据文件__(.mdf)__,_次数据库文件(.ndf)_______,和 日志文件(.ldf)___________
       2.数据库文件组有两种,一种是_主文件组_______,另一种是 用户自定义文件组__________.
       3.主要数据库文件一定在_主_________文件组里
       4.删除数据库的T-SQL语句是__DROP DATABASE_数据名____

       5.创建一个名为mydata的用户数据库,其数据库文件的初始大小为12MB,无最大限制,以12%的增量增长;日志文件的初始大小为
       2MB,最大为10MB,以1MB的增量增长.
       CREATE  DATABASE mydata

       ON PRIMARY
       (NAME=mydata_data,FILENAME='D:mydata.mdf',SIZE=____12MB____,MAXSIZE=UNLIMITED,FILEGROWTH=12%   )

       LOG ON
       (NAME=mydata_log,FILENAME='D:mydata.ldf',SIZE=2MB,MAXSIZE=10MB,FILEGROWTH=1MB)
      
       三.判断题

       1.AdventureWorks 2008是SQL Server2008中的系统数据库()
       2.数据库是用来存放表和索引的逻辑实体(对)
       3.数据库的名称一旦建立就不能重命名*(错)
       4.创建数据库时,用户可以不定义主数据文件和主文件组,但是系统会自动建立主数据文件和主文件组(对)
      
       四.简答题


       1.SQL SERVER 2008系统数据库有哪些?  他们各自的作用是什么?
       答:SQL SERVER 2008系统数据库有   master,model,msdb,tempdb
       作用分别是:master 数据库记录 SQL Server 系统的所有系统级别信息;
       tempdb 数据库保存所有的临时表和临时存储过程;
       model 数据库用作在系统上创建的所有数据库的模板;
       msdb 数据库供 SQL Server 代理程序调度警报和作业以及记录操作员时使用。

       2.简述分离数据库和删除数据库的区别与使用方法.
       区别:分离数据库一般用于手动更改数据库文件和日志文件的保存路径,有的时候为了安全要把数据库文件*.mdf和日志文件*.ldf分开保存。
       可以先分离后,更改路径重新连接。 
      而你删除了数据库当然数据就没有了。
      ^_^分离后,.mdb和.log文件都在,以后你需要用的时候,还可以用附加数据库的方法加上去,分离数据库和附加数据库是一对逆操作
    删除数据库和建立数据库是逆操作.

    使用方法:选择要删除的数据库----->右键----->选择删除选项---->选中要删除的数据库,并勾选关闭连接---->确定


          分离数据库----->选中右键----->任务--->分离--->确定

    -----------------------------------------------------------------------------------
    |
    |
    |    %%%%%%%%%%%%%%%%%%%%%%%第三章 表的创建和管理 &&&&&&&&&&&&&&&&&&&&&&&&
    |
    |
    |
    ----------------------------------------------------------------------------------------
    1.使用CREATE TABLE 命令创建成绩表

    USE interface
    --创建表
    CREATE TABLE inter
    (学号  char(10) NOT NULL,
    课程编号 char(10) NOT NULL,
    成绩  tinyint NULL
    )
    GO

    2.使用ALTER TABLE命令修改

    ALTER TABLE "表名"
    {
       | ADD 列名 数据类型
       | DROP  COLUMN 列名
       | ALTER COLUMN 列名 数据类型

      }
    3.在interface数据库中用T-SQL命令修改inter表
    (1)在表inter中增加1个新列"奖学金等级"
    (2)在表inter中删除名为"奖学金等级"的列
    (3)修改表inter中已有列的属性:将名为"姓名" 的列长度由原来的8改为10;将名为"出生日期"的列的数据类型由原来的smalldatetime改为
    datetime
       

    (1)添加"奖学金等级"列
      USE interface
      GO
      ALTER TABLE inter ADD 奖学金等级 tinyint null
      (2) 删除"奖学金等级"列
      USE interface
      GO
      ALTER TABLE inter DROP COLUMN  奖学金等级
      (3)在查询窗口输入T-SQL语句
      ALTER  TABLE inter
         ALTER COLUMN  姓名 char (20)
      ALTER TABLE inter
         ALTER COLUMN 出生时间 datetime

    (3)使用sp_rename存储过程将表news 重新命名为xs
    USE xs
    GO
    EXEC sp_rename 'xs','interface'

    (4)使用命令删除表
    DROP TABLE xs

    (5)使用insert 语句插入表

    USE interface
    GO
    INSERT INTO interface
    values('2010202001','34','58',null,null)
    INSERT INTO interface(学号,课程编号,成绩)
    values('2010202002','23','65')
    INSERT INTO interface(学号,课程编号,成绩)
    values('2014202001','76','35')

    (6)修改数据
    USE interface
    GO
    UPDATE interface
    SET
    课程编号='764'
    where 学号='2010202002'

    (7)将interface数据库的infterface 表中学号为"2010202001"
    USE interface
    delete from interface
    where 学号='2010202001'

    删除所有数据

    DALETE from interface

    (8)在数据库中创建一个课程表kc

    USE interface
    GO
    CREATE TABLE kc

    (课程编号 char(10)  CONSTRAINT   PK_BH  PRIMARY KEY,
    课程名   varchar(20)  NOT null,
    学分  tinyint)

    (9)修改interface数据库中jc表,指定字段"学号"和"课程编号"的结合为表的主键

    USE interface
    GO

    ALTER TABLE jc
    ADD CONSTRAINT PK_CJ PRIMARY KEY (学号,课程编号)

    (10)在interface数据库表中为kc表中的"课程名"字段创建一个唯一约束

    USE interface
    GO
    ALTER TABLE kc
    ADD CONSTRAINT uk_km  UNIQUE 学分
    (11)在interface 数据库中kc表中的"性别"字段创建一个默认约束,默认值为'男'

    USE interface
    GO
    ALTER TABLE kc

    ADD CONSTRAINT df_xinbie
    DEFAULT '男' FOR 性别

    (12)在interface 数据库中为jc表中'课程编号'字段创建一个外键约束,从而保证输入有效的课程号(cj表中的"课程编号"参照kc表中的"课程编号")
    USE interface
    GO
    ALTER TABLE cj
    ADD CONSTRAINT FOREIGN KEY 课程编号
    KEFERENCES kc 课程编号

    (13)创建检查约束

    ALTER TABLE jc
    ADD CONSTRAINT kc_cj
    CHECK (成绩>=0 and 成绩<=100)


    SET QUOTED_IDENTIFIER ON
    GO
    是什么意思?

    语法
    SET QUOTED_IDENTIFIER { ON | OFF }

    注释
    当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须遵守所有 Transact-SQL 标识符规则。有关更多信息,请参见使用标识符。文字可以由单引号或双引号分隔。

    当 SET QUOTED_IDENTIFIER 为 ON 时,由双引号分隔的所有字符串都被解释为对象标识符。因此,加引号的标识符不必遵守 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (') 是文字字符串的一部分,则可以由两个单引号 ('') 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。

    当 SET QUOTED_IDENTIFIER 为 OFF(默认值)时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。

    当在计算列或索引视图上创建或操作索引时,SET QUOTED_IDENTIFIER 必须为 ON。如果 SET QUOTED_IDENTIFIER 为 OFF,则计算列或索引视图上带索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 语句将失败。有关计算列上的索引视图和索引所必需的 SET 选项设置的更多信息,请参见 SET 中的"使用 SET 语句时的注意事项"。



    SET ANSI_NULLS ON是什么意思?


    SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
    当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。
     
                                                                      

    --------------------------------------------------------------------------------------------
    |
    |
    |
    |$$$$$$$$$$$$$$$$$$$$$$$$$$$$第三章 表的创建和管理试题&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    |
    |
    |
    ------------------------------------------------------------------------------------------
    一.选择题
    1.创建表的语句()
    A.CREATE DATABASE  B.CREATE TABEL
    C.DELETE TABLE     D.ALTER TABLE
    答案:选择B

    2.删除表的命令()
    A.DELETE B.DROP  C.CLEAR    D.REMOVE

    答案:B
    3.在T-SQL语言中修改表的结构,使用命令()
    A.UPDATE  B.insert   C.ALTER  D.MODIFY

    答案:选择C
    4.删除表中的数据用()
    A.drop B.DELETE C.CLTER  D.REMOVE
    答案:B

    5.下面关于主键的描述正确是()

    A,标示表中唯一的实体
    B.创建唯一索引,准许为空
    C.只允许以表中第一字段建立
    D.表中允许有多个主键
    答案:选择A
    6.主键约束是非空约束和()的组合
    A.检查约束  B.唯一约束 C.空值约束 D.默认约束

    答案:选择D

    7.下面关于外键和相应的主键之间的关系,正确的是()
    A.外键并不一定要与相应的主键同名
    B.外键一定要与相应的主键同名
    C.外键一定要与相应的主键同名而且唯一
    D.外键一定要与相应的主键同名,但并不一定唯一

    答案:选择A

    二.填空题

    1.数据库中的数据和信息都在存储在__表____中
    2.在SQL server 2008中,创建表的方法有_利用SQL server管理平台创建表____和 利用查询窗口,通过命令方式创建表______
    3.在一个表中可以设置_一___个主键,可以定义___多个______个唯一约束
    4.使用T-SQL语句管理表中数据时,插入语句是__INSERT [into] 表名[(指定的列名)] values(指定列值)_______修改语句是_ALTER TABLE "表名称"_______删除语句是_DROP TABLE 表名_______

    三.判断题

    1.在同一个数据库中表名必须是唯一的,即不可有相同的表(错)
    2.使用DROP TABLE命令可以删除数据库任意表,同时可以删除所有与表相关联的对象(错)

    四.简答题

    1.简要说明空值的概念及其作用
    空值一般表示数据未知、不适用或将在以后添加数据。例如,客户的中间名首字母在客户下定单时可能不知道。
    创建表时需要确定该列的取值能否为空值。
    空值意味着没有值,并不是“空格”或数值为0。允许空值表示该列取值目前是不确定的。
    2.主键约束和唯一约束的异同点
        主键不能为空
        而唯一可以为空
        相同的就是  都不允许重复
        主键约束:有一列或列的组合,其值能唯一的标识表中的每一行。
       唯一约束:不允许数据库表在指定列上具有相同的值,但允许有空值。
       区别:一个表可以定义多个唯一约束,只能定义一个主键约束;空值得列上可以定义唯一约束,不能定义主键约束。
       2、不能,因为姓名字段可能会重复,而主键约束是不允许有重复字段出现的,所以应该将不重复的字段设为主键.
        3、当你的表有主键了同时还想让某些列的数据不重复,或不让插入、修改后的数据和原始数据相同就用唯一约束。
    3.什么是数据完整性?完整性有哪些类型?
    数据库完整性(Database Integrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。
    数据完整性是指数据的完整性和一致性.
    类型:实体完整性,域完整性,引用完整性,用户自定义完整性.参照完整性

     
     












  • 相关阅读:
    海盗分赃问题-----简化问题,分而治之
    计算机组成原理之输入输出系统
    计算机组成原理之外围设备
    计算机组成原理之总线系统
    计算机组成原理之控制器
    计算机组成原理之存储器
    计算机组成原理之运算器
    网络配置4:STP生成树协议配置
    微信内置浏览器私有接口WeixinJSBridge介绍(转)
    使用ajax和history.pushState无刷新改变页面URL(转)
  • 原文地址:https://www.cnblogs.com/ComputerVip/p/11624719.html
Copyright © 2011-2022 走看看