网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

sqlServer

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务
1.SQL由什么文件和什么文件组成?
    答:SQL由数据文件和日志文件组成
    2.SQL的数据文件分哪两类?扩展名分别是什么?分别可以有多少个?
    答:SQL的数据文件分主数据文件和二级数据文件。
    主数据文件有且只有一个,二级数据文件0-N个
    扩展名:主数据文件:MDF
    二级数据文件:NDF
    3.SQL文件组和文件的关系?
    答:文件存放在文件组中,一个文件只能属于一个文件组;
    一个文件组可以有多个文件。
    4.用代码创建多个数据文件的数据库?
    答:CREATEDATABASEDatabaseName
    primaryON
    (
    name=逻辑名,
    filename=物理名,扩展名是mdf
    size=初始大小,
    maxsize=最大值,
    filegrowth=增长
    ),多个文件组之间用逗号分隔
    filegroup文件组名
    (
    name=逻辑名,
    filename=物理名,扩展名是ndf
    size=初始大小,
    maxsize=最大值,
    filegrowth=增长
    )
    logON
    (
    name=逻辑名,
    filename=物理名,扩展名是ldf
    size=初始大小,
    maxsize=最大值,
    filegrowth=增长
    )
    5.用代码创建表?
    CREATETABLETABLE_NAME创建表的表名
    (
    [ID]intIDENTITY(1,1)PRIMARYKEY,设置ID为自增长的主键
    [NAME]varchar(20)NOTNULL,设置名字不为空
    [AGE]tinyintCHECK([AGE]<120)设置年龄小于120
    )
    6.用代码实现修改数据库,添加文件组?
    ALTERDATABASEDATABASENAME要修改的数据库名
    ADDFILEGROUPFILEGROUPNAME要添加的文件组名
    7.用代码实现修改文件,文件组?
    答:
    修改文件示例
    ALTERDATABASEDATABASENAME
    modifyfile
    (
    [name]='原逻辑名',
    [NEWNAME]='新逻辑名',
    [FILENAME]='新文件名',
    [SIZE]='文件大小',
    [MAXSIZE]='文件的最大值',
    [FILEGROWTH]='文件增长值或增长百分比'
    )
    修改文件组
    ALTERDATABASEDemo_20091230NEW
    MODIFYFILEGROUPfilegroup2name=Newfilegroup_name
    8.用代码修改表实现添加列、修改列、删除列?
    添加列示例代码
    ALTERTABLEStudent
    ADD[S_Number]Varchar(20)
    删除列例代码
    ALTERTABLEStudent
    DROPCOLUMN[S_Number]
    修改列例代码
    ALTERTABLEStudent
    ALTERCOLUMN[S_Name]varchar(8)
    修改列名通过系统存储过程
    SP_RENAME'Student.S_Name','S_NAME_NEW'
    9.用代码实现查看表、数据库的信息?
    答:查看表:sp_help表名
    查看数据库:sp_helpDB数据库名
    示例代码:
    查看表:sp_helpclass
    查看表:sp_helpdbDemo_20091230NEW
    10.重命名数据库和表的SQL语句?
    重命名表的SQL语句(调用存储过程)
    SP_RENAMEclass,classNew不添加引号
    SP_RENAME'class','classNew'添加引号
    重命名表的SQL语句(ALTERDATABASE)
    ALTERDATABASEDemo_20091230NEW
    Modifyname=Demo_20091230
    重命名数据库的SQL语句
    SP_RENAMEDBDemo_20091230NEW,Demo_20091230不添加引号
    SP_RENAMEDB'Demo_20091230','Demo_20091230NEW'添加引号
    11.什么是数据库的完整性?
    答:确保数据库的一致性和精确性,
    可以用约束和触发器来实现。
    12.数据库完整性的分类?
    答:实体完整性:规定表的每一行在表中是唯一的实体。(主键)
    域完整性:是指表中列满足特定的数据类型和约束。
    引用完整性:两个表的主键和外键的关键字一致。
    自定义完整性:用户自己定义的数据类型的约束。
    13.约束分为哪两个级别,它和完整性的关系?
    答:约束分表级别和列级别,可以相互转换,只是写法不同。
    创建联合主键的时候一定要用表级约束
    PRIMARYKEY约束(实现实体完整性)
    UNIQUEKEY约束(实现域完整性)
    NOTNULL约束(实现域完整性)
    CHECK约束(实现域完整性)
    FOREIGNKEY约束(实现引用完整性)
    自定义数据类型(实现自定义完整性)
    其中PRIMARYKEY、UNIQUEKEY、FOREIGNKEY
    可以新建表级别和列级别约束。
    14.用代码创建NOTNULL约束?
    答:直接在创建表的时候添加。
    代码示例:
    CREATETABLEStudent
    (
    [ID]intNOTNULL
    )
    15.用代码创建primarykey约束(两种方式)?
    答:primarykey约束可以用列级和表级两种方式创建。
    创建联合主键的时候,必须用表级的方式创建。
    示例代码(列级)
    CREATETABLEStudent
    (
    [ID]intPRIMARYKEY,
    [NAME]varchar(20)
    )
    示例代码(表级)
    CREATETABLEStudent
    (
    [ID]int,
    [NAME]varchar(20)
    CONSTRAINTPK_STUDENTPRIMARYKEY([ID],[NAME])
    )16.用代码创建foreignkey约束(两种方式)?
    答:foreignkey约束可以用列级和表级两种方式创建。
    示例代码(列级)
    CREATETABLEStudent
    (
    [ID]intPRIMARYKEY,
    [C_NAME]varchar(20)REFERENCESCLASS([C_NAME])学生表中的课程名引用课程表中的课程名
    )
    示例代码(表级)
    CREATETABLEStudent
    (
    [ID]intPRIMARYKEY,
    [C_NAME]varchar(20),
    CONSTRAINTFK_C_NAMEFOREIGNKEY([C_NAME])
    REFERENCESCLASS([C_NAME])学生表中的课程名引用课程表中的课程名
    )
    17.用代码创建uniquekey约束(两种方式)?
    答:uniquekey约束可以用列级和表级两种方式创建。
    在创建约束的列上添加唯一约束。
    示例代码(列级)
    CREATETABLEStudent
    (
    [ID]intPRIMARYKEY,
    [C_NAME]varchar(20)REFERENCESCLASS([C_NAME]),学生表中的课程名引用课程表中的课程名
    [S_NUM]varchar(20)UNIQUE必须唯一
    )
    示例代码(表级)
    CREATETABLEStudent
    (
    [ID]intPRIMARYKEY,
    [C_NAME]varchar(20)REFERENCESCLASS([C_NAME]),学生表中的课程名引用课程表中的课程名
    [S_NUM]varchar(20),
    CONSTRAINTUN_S_NUMUNIQUE([S_NUM])必须唯一
    )
    18.用代码创建check约束(两种方式)?
    答:check约束可以用列级和表级两种方式创建。
    
    示例代码(列级)
    CREATETABLEStudent
    (
    [ID]intPRIMARYKEY,
    [C_NAME]varchar(20)REFERENCESCLASS([C_NAME]),学生表中的课程名引用课程表中的课程名
    [S_NUM]varchar(20)UNIQUE,必须唯一
    [S_AGE]tinyintCHECK([S_AGE]<60)年龄必须小于60岁
    )
    示例代码(表级)
    CREATETABLEStudent
    (
    [ID]intPRIMARYKEY,
    [C_NAME]varchar(20)REFERENCESCLASS([C_NAME]),学生表中的课程名引用课程表中的课程名
    [S_NUM]varchar(20),
    [S_AGE]tinyint,
    CONSTRAINTCK_S_AGECHECK([S_AGE]<60)必须唯一
    )
    19.用代码实现修改、删除约束?
    答:修改约束:只有NOTNULL能通过修改列的方式修改约束。
    删除约束:DROPCONSTRAINT关键字,后面跟约束名称。
    示例代码(通过修改列的方式修改NOTNULL约束。):
    ALTERTABLEclass
    ALTERCOLUMN[NAME]varchar(20)NOTNULL
    删除代码:
    DROPCONSTRAINTCK_S_AGE删除唯一约束
    20.用代码实现查看约束的信息?
    答:查看约束SP_HELPCONSTRAINT约束名称
    代码示例:
    SP_HELPCONSTRAINTCK_S_AGE查看唯一约束
    21.SQL有哪些数据类型?
    答:
    日期类型:DATETIME、SMALLDATETIME
    整数类型:BIGINT、INT、SMALLINT、TINYINT
    浮点型:DOUBLE、FLOAT、DECIMAL、REAL、NUMERIC
    货币类型:MONEY、SMALLMONEY
    字符类型:CHAR、VARCHAR、NCHAR、NVARCHAR
    二进制数据类型:BINARY、VARBINARY、IMAGE
    全局唯一标识:UNIQUEIDENTIFIER
    大容量数据类型:TEXT、NTEXT、IMAGE
    22.SQL语句分类(DDL、DQL、DML、DCL)?
    答:数据定义语言:DDL(DataDefinitionLanguage)创建、删除、修改数据库对象
    如:表、视图、模式、触发器、存储过程等。
    数据查询语言:DQL(DataQueryLanguage)用户检索数据库的。
    数据操纵语言:DML(DataManipulationLanguage)用于添加、修改、删除存储在
    数据库对象中的数据。
    数据控制语言:DCL(DataControlLanguage)控制访问数据库权限的。
    数据定义语言:CREATE、DROP、ALTER
    数据查询语言:SELECT
    数据操纵语言:INSERT、UPDATE、DELETE
    数据控制语言:GRANT(授权)、DENY(拒绝)、REVOKE(移除)
    23.关键字identity是什么意思?
    答:关键字identity表示自动编号,自增长。
    24.uniqueidentifier是什么意思?如何生成?
    答:uniqueidentifier表示全球唯一标识。用SELECTNEWID()生成
    代码示例:
    SELECTNEWID()AS全球唯一标识
    25.默认值创建?绑定默认值?取消绑定默认值?答:创建默认值有两种:
    a)创建表的时候附带创建
    b)使用CREATEDEFAULT关键字
    区别:后再独立于表存在,前者必须要有表。
    绑定默认值:使用sp_bindefault默认值名,表名.列名。
    注意:只有使用CREATEDEFAULT关键字才需要绑定。
    取消绑定默认值:使用sp_unbindefault默认值名,表名.列名。
    注意:只有使用CREATEDEFAULT关键字才需要绑定。
    代码示例:创建表的时候附带创建
    CREATETABLECLASS
    (
    [ID]intPRIMARYKEY,
    [NAME]varchar(20)DEFAULT('徐念')
    )
    代码示例:使用CREATEDEFAULT关键字创建
    CREATEDEFAULTDF_NAME
    AS'徐念'
    代码示例:绑定默认值到CLASS表的NAME列上
    sp_bindefaultDF_NAME,'CLASS.NAME'
    代码示例:取消绑定默认值到CLASS表的NAME列上
    sp_unbindefaultDF_NAME,'CLASS.NAME'
    26.规则创建?绑定规则?取消绑定规则?
    答:创建规则用CREATERULE关键字
    绑定规则用SP_BINDRULE系统存储过程
    取消绑定规则SP_UNBINDRULE系统存储过程
    代码示例:使用CREATEDEFAULT关键字创建
    CREATERULERU_NAME
    AS@NAME='徐念'
    代码示例:绑定规则到CLASS表的NAME列上
    SP_BINDRULERU_NAME,'CLASS.NAME'
    代码示例:取消绑定规则到CLASS表的NAME列上
    SP_UNBINDRULERU_NAME,'CLASS.NAME'
    27.如何创建自定义类型?
    答:创建自定义类型:用系统存储过程:SP_ADDTYPE
    代码示例:创建一个身份证的数据类型(18为字符)且不允许为空
    SP_ADDTYPEIdCard,'varchar(18)','NOTNULL'
    28.Select查询执行顺序?
    答:1.执行FROM字句,根据FROM字句后面的一个或多个表创建工作表。
    如果是多个表,将对表进行交叉连接。
    如果只有一个表,就直接作为工作表。
    2.如果有WHERE字句,根据WHERE字句搜索满足条件的行。
    3.如果有GROUPBY字句,会对第二步产生的结果集进行分组汇总。
    4.如果有HAVING字句,会对第三步产生的结果集进行组筛选。
    5.如果有DISTINCT、TOP关键字,将在第四步的基础上进行过滤,去掉重复的行。
    6.如果有ORDERBY字句,会在第五步的基础上进行排序。
    7.显示查询结果。
    29.数据库中的表关系有哪几种?分别是什么?
    答:分四种(一对一、一对多、多对一、多对多)
    多对多:必须要分表,分解成两个多对一
    举例:如学生和课程是多对多关系,新增一个学生选修课程表。
    学生和学生选修课程表是一对多关系
    课程和学生选修课程表是一对多关系
    30.级联删除、更新的关键字是什么?并写出代码?
    答:级联删除关键字:ONDELETECASCADE
    级联更新关键字:ONUPDATECASCADE
    代码示例如下:
    修改表添加级联删除、级联更新外键约束
    ALTERTABLEStudentClass
    ADDCONSTRAINTjlDeleteFOREIGNKEY(Fk_S_ID)
    REFERENCESStudent(S_ID)
    ONDELETECASCADE
    ONUPDATECASCADE
    31.表的连接有哪几种?它们的含义分别是什么?
    答:共五种。
    INNERJOIN:内连接(以两个表中匹配的记录为准)
    LEFTJOIN/LEFTOUTERJOIN:(以左边的表中有的记录为准)
    RIGHTJOIN/RIGHTOUTERJOIN:(以右边的表中有的记录为准)
    FULLJOIN/FULLOUTERJOIN:(以两边的表只要有一个表有的记录即可)
    CROSSJOIN:(两个表的记录的笛卡尔积)
    32.消除重复行的关键字是什么?
    答:DISTINCT(放在SELECT关键字后面)
    33.分组时既能显示明细记录又能显示汇总值的关键字是什么?
    请写一个示例代码?
    答:关键字:COMPUTE\COMPUTEBY
    SELECTS_GROUP,S_AGEAS'平均年龄'
    FROMStudent
    WHERES_GROUP='二组'
    ORDERBYS_GROUP
    COMPUTEAVG(S_AGE)BYS_GROUP
    34.SQL中的通配符有几种?每种的含义是什么?
    答:
    '_'表示一个任意字符;
    '%'表示0-N个任意字符;
    '[ABC]'表示A或B或C中的一个任意字符,常与'%'连用;
    '[^ABC]'表示不是A且B且C中的一个任意字符,常与'%'连用;
    35.Rollup和CUBE的相同点和异同点是什么?
    答:都是对分组(GROUP)中的汇总结果集的扩展。
    CUBE的扩展要比Rollup多。
    只根据'组'分组
    SELECTS_Group,AVG(S_age)FROMStudent
    GROUPBYS_Group
    SELECTS_Group,AVG(S_age)FROMStudent
    GROUPBYS_GroupWITHROLLUP
    SELECTS_Group,AVG(S_age)FROMStudent
    GROUPBYS_GroupWITHCUBE
    根据'组'和''分组
    SELECTS_Group,S_Name,AVG(S_age)FROMStudent
    GROUPBYS_Group,S_Name
    SELECTS_Group,S_Name,AVG(S_age)FROMStudent
    GROUPBYS_Group,S_NameWITHROLLUP
    SELECTS_Group,S_Name,AVG(S_age)FROMStudent
    GROUPBYS_Group,S_NameWITHCUBE
    36.子查询的种类?它们的区别是什么?
    答:子查询分标准子查询(嵌套子查询)和相关子查询
    区别:标准子查询(嵌套子查询)子查询只执行一次;
    相关子查询:子查询执行0-N次;示例:
    查找年龄在23岁以内的学生的信息(用子查询的方式)
    标准子查询
    SELECT*FROMstudent
    WHERES_NAMEIN
    (SELECTS_NAMEFROMstudent
    WHEREstudent.S_age<23)
    
    查找学生信息并统计班级每个学生与班级平均年龄的差值
    相关子查询
    SELECT*,
    (SELECTAVG(S_age)FROMstudent)AS'班级平均年龄',
    S_age-(SELECTAVG(S_age)FROMstudent)AS'差值'
    FROMstudent
    37.子查询的意义和写子查询的注意事项?
    答:子查询的意义:简化复杂的查询,
    将一个复杂的查询逻辑上分解成几个简单的查询。
    子查询的注意事项:
    1.带有小括号
    2.可以在很多地方使用
    a)使用别名时;
    b)使用IN或NOTIN时;
    c)使用UPDATE、INSERT、DELETE语句时;
    e)使用比较运算符时;
    f)使用ANY、SOME、ALL时;
    g)使用EXIST或NOTEXIST时;
    h)使用表达式的地方。
    38.关键字SOME、ALL的含义?请写出代码示例?
    答:SOME、ALL都是和比较运算符(>、>=、<、<=、!=、<>、=)联用,
    用于比较SOME、ALL字查询所返回的值。
    示例:查找年长(年龄在平均年龄之上)的学生的信息
    SELECT*
    FROMu_student
    WHERE[AGE]>ALL(SELECTAVG(ISNULL([AGE],0))FROMu_student)
    39.关键字IN的含义?请写出代码示例?
    答:关键字IN表示在...里
    示例:查找等于张三或李四的学生的记录
    SELECT*
    FROMu_student
    WHERE[NAME]in('张三','李四')
    40.视图分为哪三类?请写出代码示例?
    答:单表视图:数据只来源于一个表。
    多表视图:数据只来源于多个表。
    嵌套视图:数据只来源于视图。
    示例:嵌套视图
    创建学生信息视图(单表视图)
    CREATEVIEWV_StudentInfo
    AS
    SELECT*FROMu_studentus
    创建学生信息视图(嵌套视图)
    CREATEVIEWV_StudentNameInfo
    AS
    SELECT[NAME]FROMV_StudentInfo
    41.视图的优缺点是什么?
    答:视图优点:
    1.简化查询操作
    2.隐蔽敏感数据,提高安全性
    3.定制数据
    4.数据的查询和存储分离
    视图缺点:
    1.性能较低
    2.更新不变:SELECT语句中使用了HAVING、GROUPBY、TOP、DISTINCT、
    计算列、聚合函数关键字后就不能更新
    42.索引的作用是什么?索引分为哪两类?它们的区别是什么?请写出代码示例?
    答:索引的作用是用来优化查询,提高查询速度的。
    索引分为聚集索引(簇索引)或非聚集索引(非簇索引)
    区别:1.聚集索引的页级页存放的是实际的数据而
    非聚集索引得页级页存放的是索引信息,这些索引信息存放在索引页中。
    2.非聚集索引可以建立在数据堆上也可以建立在聚集索引上。
    3.唯一索引属于非聚集索引,但比非聚集索引多了一个UNIQUE(唯一)约束。
    创建索引的关键字CREATEINDEX
    示例:在u_STUDENT表的[NAME]列上创建聚集索引
    CREATECLUSTEREDINDEXCLU_INDEX
    ONu_STUDENT([NAME])
    示例:在u_STUDENT表的[NAME]列上创建非聚集索引
    CREATENONCLUSTEREDINDEXCLU_INDEX
    ONu_STUDENT([NAME])
    示例:在u_STUDENT表的[NAME]列上创建唯一聚集索引
    CREATEUNIQUEINDEXCLU_INDEX
    ONu_STUDENT([NAME])
    43.查看表的索引的SQL语句是什么?请写出代码示例?
    答:查看表的索引的SQL语句是SP_HELPINDEX表名
    代码示例
    SP_HELPINDEXClass
    44.重新整理索引的SQL语句是什么?请写出代码示例?
    答:重新整理索引的SQL语句是DBCCINDEXDEFRAG(数据库名称,表名,索引名)
    DBCC是一个数据库工具集
    代码示例
    DBCCINDEXDEFRAG(Demo_20091230NEW,Class,PK__Class__49C3F6B7)
    45.SQL的盘区分为哪两种,它们的区别是什么?
    答:SQL的盘区分:统一扩展盘区和混合扩展盘区。
    统一扩展盘区:只存放一种类型数据页。
    混合扩展盘区:存放二种或两种以上的数据页。
    46.SQL的数据页一共有几种?分别是什么?
    答:SQL的数据页一共有八种。数据页、索引页、文本\图像页、可用空间页、
    全局分配映射表、辅助全局分配映射表、索引分配映射表、
    大容量差异映射表\大容量差异更改映射表。
    数据页:存放真实的数据。
    索引页:存放索引数据,如非聚集索引的页级页。
    文本\图像页:存放大容量数据类型,如Image、text、ntext。
    可用空间页:数据库中数据页的使用情况,0表示没有使用,1表示使用。
    47.E-R(Entity-Relationship)模型的三要素是什么?
    答:E-R(Entity-Relationship)模型的三要素是:实体、关系、属性。实体:真实存在的事物。(客户为了完成自己的业务目标需要用到的人或事物)
    关系:实体间的关系:有一对一、一对多、多对一、多对多(需要分表)
    属性:实体的特征,可映射成数据库中的列。
    48.数据库设计的过程分为哪几个步骤?
    答:数据库的设计过程大致可分为4个步骤:
    a)需求分析:调查和分析用户的业务活动和数据的使用情况,
    弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,
    确定用户对数据库系统的使用要求和各种约束条件;
    b)概念设计:用户要描述的现实世界的概念数据模型;
    c)逻辑设计:主要工作是将现实世界的概念数据模型设计成数据库;
    d)物理设计:确定数据库的存储结构。
    49.关键字UNION/UNIONALL的含义?请写出代码示例?
    答:关键字UNION/UNIONALL表示连接两个表的内容进行查询。
    示例代码:连接查询出‘语文’、‘数学’的课程信息
    SELECT*FROMClass
    WHEREClass_Name='语文'
    UNIONALL
    SELECT*FROMClass
    WHEREClass_Name='数学'
    50.关键字EXISTS的含义?请写出代码示例?
    答:关键字EXISTS用来表示子查询中是否存在满足条件的记录。
    如果存在返回TRUE,否则返回FALSE。
    示例代码:查找‘数学’课的课程信息
    SELECT*FROMClassa
    WHEREEXISTS(SELECT*FROMClassb
    WHEREb.Class_Name='数学'ANDa.ID=b.ID)
    
    示例代码:判断CLASS表是否在,存在则删除
    IFEXISTS(SELECTname
    FROMsysobjects
    WHEREname='Class'
    ANDtype='U')
    DROPTABLEClass
    GO
    51.数据库三范式是哪三范式?
    答:1NF:属性不可再分。
    2NF:在1NF的基础上消除部分依赖(适用于联合主键)。
    3NF:在2NF的基础上消除传递依赖。
    52.用PowerDesigner生成数据库的步骤?
    答:1.创建概念数据模型:
    定义:只有关系,没有外键的模型,是在数据库设计的前期创建的。
    PowerDesigner操作步骤:File-》New-》ConceptualDataModel
    2.检查概念数据模型:CheckModel
    PowerDesigner操作步骤:Tools-》CheckModel
    3.生成物理数据模型:由概念数据模型转换而来,是真实的数据模型。
    PowerDesigner操作步骤:Tools-》GeneratePhysicalDataModel
    4.用企业管理器创建新的空数据库
    5.创建SQL连接:
    PowerDesigner操作步骤:DataBase-》Connection
    6.生成SQL数据库:
    PowerDesigner操作步骤:DataBase-》GenerateDataBase
    53.全局变量和局部变量的区别是什么?
    答:全局变量是系统预先定义的。
    局部变量是用户自定义的。
    54.定义局部变量的关键字是什么?请写出示例代码?
    答:定义局部变量的关键字DECLARE
    示例代码:定义一个整型的局部变量。
    DECLARE@TempASint
    55.给变量赋值有哪些方法?请写出示例代码?
    答:给变量赋值有2种,分别用SET关键字和SELECT关键字。
    示例代码:用SET关键字给变量赋值
    SET@Temp=15
    示例代码:用SELECT关键字给变量赋值(查询赋值)
    SELECT@Temp=AGEFROMStudent
    WHERES_Name='张三'
    56.数据类型转换的函数有哪些?请写出示例代码?
    答:CAST(字段AS数据类型)和CONVERT(数据类型,字段)
    示例代码:使用CAST将12转换成'12'再与‘张三’相加
    SELECT'张三'+CAST(12ASvarchar(2))AS数据类型转换
    示例代码:使用CONVERT将12转换成'12'再与‘张三’相加
    SELECT'张三'+CONVERT(varchar(2),12)AS数据类型转换
    57.全局变量@@RowCount、@@IDENTITY、@@Error的定义是什么?请写出示例代码?
    答:@@RowCount定义:返回受上一语句影响的行数。
    @@IDENTITY定义:返回最后插入的自增长值(一定要包含自增长列)
    @@ERROR定义:返回最后执行的Transact-SQL语句的错误代码。
    示例代码:@@RowCount
    SELECT*FROMStudentClasssc查询StudentClass表
    SELECT@@RowCountAS上一行语句影响的条数显示StudentClass表的记录数
    示例代码:@@IDENTITY
    先决条件:操作的表中一定要含有自增长列,
    否则@@IDENTITY全局变量一直显示为NULL
    INSERTINTOStudentClass往StudentClass中插入记录
    VALUES(1357,1)
    SELECT@@IDENTITYAS最后的自增长ID号
    示例代码:@@ERROR
    priny1编写一行错误的SQL语句
    SELECT@@ERRORAS最后一行SQL语句的错误编号查询最后一行SQL语句的错误编号
    58.SQL中表示循环的关键字有哪些?请写出示例代码?
    答:SQL中表示循环的关键字有:WHILE关键字
    示例代码:
    DECLARE@COUNTASint定义一个计数器
    SET@COUNT=1初始化计数器
    WHILE@COUNT<4循环打印循环变量
    BEGIN
    PRINT@COUNT
    SET@COUNT=@COUNT+1
    END
    59.关键字break与关键字Continue的区别是什么?请写出示例代码?
    答:关键字break:结束全部循环
    关键字Continue:跳过本次循环,进入下一次循环
    示例代码:
    DECLARE@COUNTASint定义一个计数器
    SET@COUNT=1初始化计数器
    WHILE@COUNT<4循环打印循环变量
    BEGIN
    IF@COUNT%2=0跳过偶数循环
    BEGIN
    SET@COUNT=@COUNT+1退出之前要加1
    CONTINUE跳过本次循环,进入下一次循环
    END
    PRINT@COUNT
    SET@COUNT=@COUNT+1
    END
    示例代码:
    DECLARE@COUNTASint定义一个计数器
    SET@COUNT=1初始化计数器
    WHILE@COUNT<4循环打印循环变量
    BEGIN
    PRINT@COUNT
    SET@COUNT=@COUNT+1
    IF@COUNT>2当计数器大于2的时候结束循环
    BEGIN
    BREAK退出循环
    END
    END
    60.函数按照返回值分为几类?如何调用?请写出示例代码?
    答:函数按照返回值分为三类:
    a)标量函数:返回的是SQL数据类型不包括大容量数据类型(Image、text、ntext)。
    b)内联表值函数:返回的是SQL的数据表,类似于SQL参数化视图。
    c)多声明表值函数:返回的是预先定义好的SQL的数据表。
    创建标量函数:
    判断函数是否存在,存在则删除
    IFEXISTS(SELECT*
    FROMsysobjects
    WHEREname='Fn_BL_GetStudentNameByStudentID')
    DROPFUNCTIONFn_BL_GetStudentNameByStudentID
    GO
    CREATEFUNCTIONFn_BL_GetStudentNameByStudentID(@StudentIDint)
    RETURNSVARCHAR(20)函数返回值是SQL数据类型
    AS函数开始的标志
    BEGIN函数体
    DECLARE@NAMEASvarchar(20)定义一个变量
    SELECT@NAME=[S_NAME]FROMStudents给变量赋值
    WHEREs.S_ID=@StudentID
    RETURN@NAME返回
    END
    调用标量函数:
    SELECTdbo.Fn_BL_GetStudentNameByStudentID(1357)AS学生
    创建内联表值函数:
    判断函数是否存在,存在则删除
    IFEXISTS(SELECT*
    FROMsysobjects
    WHEREname='Fn_NL_GetStudentIntoByStudentID')
    DROPFUNCTIONFn_NL_GetStudentIntoByStudentID
    GO
    CREATEFUNCTIONFn_NL_GetStudentIntoByStudentID(@StudentIDint)
    RETURNSTABLE
    AS
    RETURNSELECT*FROMStudentsWHEREs.S_ID=@StudentID
    调用内联表值函数:
    SELECT*FROMdbo.Fn_NL_GetStudentIntoByStudentID(1357)
    创建多声明表值函数:
    判断函数是否存在,存在则删除
    IFEXISTS(SELECT*
    FROMsysobjects
    WHEREname='Fn_DSM_GetStudentIntoByStudentID')
    DROPFUNCTIONFn_DSM_GetStudentIntoByStudentID
    GO
    CREATEFUNCTIONFn_DSM_GetStudentIntoByStudentID(@StudentIDint)
    RETURNS@TempTableTABLE([Name]varchar(20),
    [GROUP]varchar(20))
    AS
    BEGIN
    INSERT@TempTable
    SELECT[S_NAME],[S_GROUP]FROMStudentsWHEREs.S_ID=@StudentID
    RETURN
    END
    调用多声明表值函数:
    SELECT*FROMdbo.Fn_DSM_GetStudentIntoByStudentID(1357)
    61.标量函数、内联表值函数、多声明表值函数创建语法的区别和相同点?
    答:相同点:
    1.都要使用CREATEFUNCTION关键字
    2.返回关键字都是RETURNS关键字
    3.都要使用AS关键字作为函数体开始的标识
    不同点:
    1.返回值类型不同。
    2.调用方式不同。
    62.查看函数内容的脚本关键字是什么?
    答:SP_HELPTEXT函数名
    代码示例:
    SP_HELPTEXTFn_DSM_GetStudentIntoByStudentID
    63.创建存储过程的关键字是什么?请写出示例代码?
    答:创建存储过程的关键字是:CreateProc
    扩展存储过程示例
    DECLARE@filenamevarchar(20),@messagevarchar(20)
    EXECxp_sscanf'sync-b-fauthors10.tmp-rrandom','sync-b-f%s-r%s',
    @filenameOUTPUT,@messageOUTPUT
    SELECT@filename,@message
    -系统存储过程示例
    Sp_Helptextxp_sscanf
    -用户存储过程示例
    IFExists(Select*fromsysobjects
    wherename='UP_GetStuNameByID'
    )
    dropprocUP_GetStuNameByID
    GO
    CreateProcUP_GetStuNameByID(@IDint)
    as
    select*fromStudent
    whereS_ID=@ID
    dropprocUP_GetStuNameByID
    64.存储过程和函数的区别是什么?
    答:函数与存储过程的相同点:1.预先编译
    2.分为物理与临时的
    3.都可以提高SQL脚本安全性
    区别:1.函数必须又返回值,而存储过程可以没有返回值
    2.函数的返回值只有一个,存储过程的返回值可以有多个且类型可以不一样
    65.什么是存储过程?存储过程的优点是什么?
    答:存储过程StoredProcedure:是一组为了完成特定功能的SQL语句集经编译后存储在数据库中用户通过指定存储过程的名字并给出参数如果该存储过程带有参数来执行它
    存储过程的优点:
    1.实现组件化编程
    2.提高执行效率
    3.减少网络流量
    4.提高安全性
    存储过程特点:
    1.预先编译(速度快)
    2.安全性高
    3.兼容性好(便于跨用)
    4.可以重复使用
    5.移植性差(缺点)
    6.调用与声明参数必须一一匹配
    66.存储过程分为几类?
    答:存储过程分类:
    1.xp_扩展存储过程(系统自带,也可自己编写)
    2.SP_系统存储过程(系统自带)
    3.UP_用户存储过程
    A.物理
    B.临时(局部:#、全部:##)
    67.存储过程加密和重新编译的关键字是什么?
    答:存储过程的加密:
    Withencryption(加密)
    Sp_decrypt(解密)
    存储过程重新编译:
    sp_recompile
    示例
    CreateProcUP_GetStudent
    Withencryption
    as
    select*fromStudent
    DropProcUP_GetStudent删除
    测试存储过程
    Sp_HelpTextUP_GetStudent
    68.查看存储过程、重命名存储过程的脚本是什么?
    答:查看存储过程:sp_helptext
    重命名存储过程:sp_rename原存储过程名,新存储过程名
    示例
    sp_RenameUP_GetStudent,UP_GetStudentIfo
    69.什么是触发器?触发器的分类是什么?写出示例代码?
    答:触发器trigger:
    1.是特殊的存储过程(自己触发),
    它在表的数据发生变化时起作用,
    可以维护数据的完整性
    2.触发器是建立在表之上的,
    而约束可以建立在表上与列上,
    他们都是维护数据的完整性,都是数据库的对象
    3.触发器不能接受参数
    Trigger种类:
    1.After:在……之后触发(有insert、Delete、update)
    2.Insteadof:用……来替换insert、update、Delete
    70.创建触发器的关键字是什么?写出示例代码?
    答:CreateTriggerStudentSeven
    示例:
    ifexists(select*
    fromsysobjects
    wherename='tr_stuinsert'
    )
    droptriggertr_stuinsert
    go
    createtriggertr_stuinsert
    onstudent在student表上
    forinsert创建insert触发器
    as
    declare@s_namevarchar(20)
    select@s_name=s_namefrominserted
    if@s_name='dnf'
    begin
    updatestudent
    sets_name='阿什顿'
    wheres_name='dnf'
    end
    elseif@s_name='adf'
    begin
    updatestudent
    sets_name='阿萨德'
    wheres_name='adf'
    END
    71.删除触发器的语句是什么?写出示例代码?
    答:DROPTRIGGERStudentSeven
    DROPTRIGGERStudentSeven
    72.修改触发器的语句是什么?写出示例代码?
    答:AlterTrigger
    示例
    altertriggertr_stuinsert
    onstudent在student表上
    forinsert创建insert触发器
    as
    declare@s_namevarchar(20)
    select@s_name=s_namefrominserted
    if@s_name='dnf'
    begin
    updatestudent
    sets_name='阿什顿'
    wheres_name='dnf'
    end
    elseif@s_name='adf'
    begin
    updatestudent
    sets_name='阿萨德'
    wheres_name='adf'
    end
    73.查看触发器的语句是什么?写出示例代码?
    答:sp_helptexttr_stuinsert查看触发器的文本
    查看触发器的文本
    sp_helptexttr_stuinsert
    查看表上对象的信息
    sp_dependsstudent
    74.写出在修改指定列以后触发的触发器的示例代码?
    (两种方式)
    第一种方式:UPDATE(列名1)ANDUPDATE(列名2)
    来判断列1和列2是否都修改
    第二种方式:COLUMNS_UPDATED()&;列掩码来判断列是否修改。
    示例:第一种方式:
    判断触发器是否存在
    IFEXISTS(SELECTname
    FROMsysobjects
    WHEREname='tr_UpdateAgeToName'
    ANDtype='TR')
    DROPTRIGGERtr_UpdateAgeToName
    GO
    创建触发器在StudentSeven1表上
    CREATETRIGGERtr_UpdateAgeToName创建触发器
    ONStudentSeven1在StudentSeven1表上
    FORUPDATE为更新操作
    AS作为(开始标志)
    IF(UPDATE([AGE]))如果[AGE]列被更新
    BEGINBEGIN。。。END
    UPDATEStudentSeven1
    SETNAME='被修改'
    在INSERTED测试表中查找被更新记录的
    WHERE[NAME]in(SELECT[NAME]FROMINSERTED)
    END
    测试更新数据
    查看原始数据
    SELECT*FROMStudentSeven1
    修改年龄
    UPDATEStudentSeven1
    SETAGE=25
    WHERE[ID]=4
    修改
    UPDATEStudentSeven1
    SETS_NUM='TB0902645'
    WHERE[ID]=5
    示例:第二种方式:
    判断ID、S_NUM、AGE是否全部被更新它的代码是1101(13)
    创建触发器在StudentSeven2表上
    CREATETRIGGERtr_UpdateAgeToName2创建触发器
    ONStudentSeven2在StudentSeven2表上
    FORUPDATE为更新操作
    AS
    IF(COLUMNS_UPDATED()&;13)=13
    BEGIN
    UPDATEStudentSeven2
    SETNAME='被修改'
    在INSERTED测试表中查找被更新记录的
    WHERE[NAME]in(SELECT[NAME]FROMINSERTED)
    END
    查看原始数据
    SELECT*FROMStudentSeven2
    WHEREid=4
    更新除了以外的所有的信息
    UPDATEStudentSeven2
    SET
    NAME='好啊',
    AGE=31
    WHERE[ID]=4
    UPDATEStudentSeven2
    SETID=555,
    NAME='你好啊'
    WHERE[ID]=6
    75.什么是嵌套触发器、递归触发器?
    嵌套触发器:当一个触发器执行时能够触发
    另一个触发器,就称之为嵌套触发器。
    递归触发器:分间接递归和直接递归。
    间接递归:表A的触发器出发表B的触发器,
    表B的触发器又触发表A的触发器。
    直接递归:表A的触发器触发表A的触发器。
    在默认的情况下SQL禁止直接递归。
    通常我们禁止使用递归触发器。
    76.创建游标的关键字?请写出代码示例?
    创建游标的关键字:
    DECLARE游标名称游标类型CURSOR
    
    示例:定义一个游标
    DECLAREcur_StudentSCROLLCURSOR
    FOR
    SELECT*FROMStudent
    77.使用游标有哪几个步骤?分别是什么?
    使用游标有五个步骤:
    a)定义游标:DECLARE游标名称游标类型CURSOR
    b)打开游标OPEN游标名称
    c)检索游标FETCH检索方式FROM游标名称INTO变量
    d)关闭游标CLOSE游标名称
    e)释放游标DEALLOCATE游标名称
    
    SCROLL类型游标的检索方式有:
    NEXT:向后检索
    PRIOR:向前检索
    FIRST:返回第一行
    LAST:返回最后一行
    ABSOLUTEn:绝对定位到第N行
    (正数从上往下数,负从下往上数)
    RELATIVEn:相对定位到第N行
    (正数从上往下数,负从下往上数)
    示例:使用游标
    第一步:定义一个游标
    DECLAREcur_StudentSCROLLCURSOR
    FOR
    SELECTs_IdFROMStudent
    第二步:打开游标
    OPENcur_Student
    第三步:检索游标(向下检索)
    DECLARE@tempIDASint
    FETCHNEXTFROMcur_Student
    INTO@tempID
    PRINT@tempID
    第四步:关闭游标
    CLOSEcur_Student
    第五步:释放游标
    DEALLOCATEcur_Student
    78.全局变量@@CURSOR_ROWS、@@FETCH_STATUS的含义是什么?举例说明?
    @@CURSOR_ROWS:用于显示最后执行游标记录集的行数。
    @@FETCH_STATUS:用于返回游标是否获取成功的。
    79.事务的四大特性分别是什么?
    原子性:事务作为一个工作单元,
    其中所有的SQL操作要么成功要么失败。
    一致性:事务执行或撤销以后,
    其中所有的SQL操作状态一致。
    持久性:事务一旦提交,所做的修改就保存下来。
    隔离性:多个事务同时进行的时候,相互之间没有干扰。
    
    80.开始事务、回滚事务、提交事务的关键字是什么?举例说明?
    开始事务:BEGINTRANSACTION
    回滚事务:ROLLBACKTRANSACTION
    提交事务:COMMITTRANSACTION
    
    select*FROMStudent
    示例:向Student表中添加数据
    BEGINTRANSACTION
    INSERTINTOStudent
    VALUES('张三','第一组',35)
    SAVETRANSACTIONsave1设置保存点
    INSERTINTOStudent
    VALUES('李四','第二组',45)
    ROLLBACKTRANSACTIONsave1回滚事务到保存点1
    INSERTINTOStudent
    VALUES('王五','第二组',55)
    COMMITTRANSACTION提交事务
    81.事务的隔离级别有哪些?
    事务的隔离级别有4种:
    READUNCOMMITTED:允许未提交数据的读取。
    READCOMMITTED:不允许未提交数据的读取。
    REPEATABLEREAD:实现可重复数据的读取。
    SERIALIZABLE:可串行化。
    其中四个级别安全性逐一递增。
    示例:设置事务的隔离级别为READUNCOMMITTED
    SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTED
    82.SQL登陆方式有哪两种?它们的区别是什么?
    SQL登陆方式有:仅WINDOWS集成身份验证
    WINDOWS集成身份验证和SQL数据库身份验证
    83.SQL授权和拒绝的关键字是什么?
    SQL授权和拒绝属于T-SQL中的DCL(数据控制语言)
    SQL授权关键字GRANT
    SQL拒绝关键字DENY
    示例:授权Student表的SELECT、INSERT权限给Userd用户
    GRANTSELECT,INSERT授予SELECT、INSERT权限
    ONStudent在Student表上的
    TOUserd给Userd用户
    示例:拒绝Student表的SELECT、INSERT权限给Userd用户
    DENYSELECT,INSERT拒绝SELECT、INSERT权限
    ONStudent在Student表上的
    TOUserd给Userd用户
    
  • 上一篇资讯: SQLServer2000JDBC驱动(1)
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师