SQL Server 经验总结(二)

数据类型

----系统数据类型

系统数据类型是SQL SERVER支持的内置数据类型。

数据类型

描述

所需空间

binary

固定长度的二进制数据,最大长度为8000字节

08000字节,具体取决于定义

Bit

整型数据,值为10(真或假)

1字节

Char

固定长度的非Unicode的字符数据,最大长度为08000字节,8000个字符

08000字节,8000个字符。具体取决于定义

Datetime

日期和时间数据,从175311日到99991230日,精确到三百分之一秒,即3.33

8个字节。

Decimal

带定点精度和小数位数的十进制数字类型

2-17字节

float

浮点精度数据类型,从-1.79E+3081.73+308.

8字节

image

可变长度的二进制数据,最大长度为2^31-1字节

16字节的指针,每个

初始化列至少外加2000字节

Int

整数数据,从-2^31-12^31-1

4个字节

Money

货币数据类型,从-2^632^63-1,精确到每个货币单位的万分之一

8个字节

Numeric    

decimal的同义词

2-17字节

Real

浮点精度数字数据,从-3.40E+383.40E+38

4个字节

Smalldatetime 

Smalldatetime  日期和时间数据,从190011日到207966日,精确到1分钟

4个字节

Smallint

整数数据,从2^15到达^15-1

2个字节

Text

(文本)可变长度的非Unicode数据,最大长度为2^31-1个字符

16字节的指针,每个

初始化列至少外加2000字节

Timestamp

整个数据库范围内的唯一数字

8个字节

Tinyint

整数数据,从0 255

1个字节

Uniqueidentifier

存储作为全局唯一标识符(GUID)的16字节的二进制值。GUID是确保唯一性的二进制数字

16字节

Nvarchar

可变长度的Unicode数据,最大长度为4000个字符

存储大小是输入数据

 

----用户数据类型

添加用户数据类型:

sp_addType 自定义数据类型名,基本数据类型,’not null’

    删除用户数据类型:

        sp_dropType自定义数据类型名

   

规则:被绑定在一列或一个用户定义数据类型上的一个数据库对象,它指定了该列可以输入的数据

       创建规则:create rule 规则名 as @rID like ‘指定输入样式

       删除规则:drop rule 规则名

 

综合实例:现在我要创建一个类型,这种类型用来输入特殊的ID,比如 ‘TT-AC01’,只能以TT-开头,后接两个字母和两个个数字,不输入的话,则默认添入’TT-AA11’

       --创建规则,规则名为r_id,@rr为变量,代表以后输入的值

              create rule r_id as @rr like ‘TT-[A-Z][A-Z][0-9][0-9]’

       --创建默认,默认名为 dData

              create default dData as ‘TT-AA11’

       --添加用户自定义类型,类型名为inID

              sp_addType inID,varchar(7),not null

       --将规则和默认绑定到数据类型上

              sp_bindrule r_id,inID

              sp_bindefault dData,inID

       现在就完成了,我们可以直接用inID这种数据类型,只能输入’TT-VC24’这种格式,默认输入为’TT-AA11’

 

-----------------------------------------------------------------------------

 

数据插入、更新、删除

        ----插入数据

(1)  插入所有字段

insert into 表名 values(1,值2…)

(2)  插入个别字段(插入的值要和列的类型相对应)

insert into 表名(1,列2…) values(1,值2…)

(3)  表对表的插入

insert 表名(1,列2…)

select 1,列2…

from 源表名

 

        ----更新数据

    update 表名 set 1=值,列2=..

    where 条件

 

        ----删除数据

    delete from 表名

    where 条件

    (truncate table 表名,删除整个表的数据,速度更快)

 

-----------------------------------------------------------------------------

数据查询

    (返回的结果是一个临时表)

    完整的查询语句:

        select |表达式

        from 表名

        where 条件(针对selectfrom返回的结果进行筛选)

        group by (针对where子句的输出结果分组)

        having 条件(针对分组汇总后的结果进行筛选)

        order by ,…(进行排序)

   

    聚合函数:sum(求和)

           avg(求平均值)

           count(记数)

           max(求最大值)

           min(求最小值)

    (聚合函数忽略null值。如果加入distinct的话,只进行一次重复值的运算)

    ---------------------------------

    distinct(独特的)只返回不重复的值

         Date between  '2009-01-26'  and  '2009-02-06'  范围的查询

 

    如:select distinct name

        from student

        查询结果只返回不重复的值

    ---------------------------------

    order by 用来排序,Asc代表升序,Desc代表降序

    如:有个成绩表,我先按学生的ID升序排序,再按Score(分数)降序排序

        select *

        from tbExam

        order by u_ID asc,Score desc

    ---------------------------------

    使用常量:

    如:有学生表字段name,sex,age,我要连接在一起显示出来

    select ‘姓名:’+name+’ 性别:’+sex+’ 年龄:’+cast(age as varchar)

    from tbStudent

    注:”+”号左右两边的数据类型必须相等

cast是把age数字型转换成了varchar文本型

注:类型转换 1)convert(类型,内容,格式)  2)cast(内容 as 类型)

---------------------------------

    给列命别名:

(1)  select 别名=列名 from

(2)  select 列名 as 别名 from

    查询,列是没有名字的,我们可以给列命别名

    select ‘姓名:’+name+’ 性别:’+sex+’ 年龄:’+cast(age as varchar)

               as ‘学生信息

    from tbStudent

    ---------------------------------

    Top关键字对返回的数据的数量进行控制

    如:学生表有10条数据,我要返回5条,可以采用下面两种方法

(1)  select top 5 *

from tbStudent

(2)  select top 50 percent

from tbStudent

注:percent是百分比的意思,代表我只返回百分之50的数据

    ---------------------------------

    联接:

                    联接

                     |

        ----------------------------------------------------

        |                     |                            |

         内联接             外联接                      内联接

                     |

                 -------------------------------

                 |            |                |

              左外部联接    右外部联接     完全外部联接

 

1. 内联接,只返回左右两表相匹配的记录

select *

from A inner join B

on 条件

   

2.  外联接

左外部联接,返回左表中所有的记录,但仅返回右表中相匹配的记录

select *

from A left join B

on 条件

 

右外部联接,返回右表中所有的记录,但仅返回左表中相匹配的记录

select *

from A right join B

on 条件

 

完全外部联接,返回左右表中所有的记录

select *

from A full join B

on 条件

 

3.  内联接,表自身与自己进行查询

 

-----------------------------------------------------------------------------

数据库安全模型

 

         数据库3层安全模型

第一层:登录到SQLServer系统,即需要登录帐户

SQL Server服务器

数据库A

数据库B

数据库C

1

2

1

2

1

2

第二层:访问某个数据库,需要成为该数据库的用户

第三层:访问数据库中的表,需要数据库管理员DBA给自己授权,如添、修、删、查等权限

        

登录验证两种方式:

--SQL身份验证:适合非Windows平台的用户或Internet用户,需要帐户和密码

--Windows身份验证:适合于Windows平台用户,不需要提供密码,和Windows集成验证

 

1.  创建登录

         Windows登录:

            授权:sp_grantlogin ‘windows域名\域帐户

            撤销:sp_revokelogin ‘windows域名\域帐户

         SQL登录帐户:

            添加:sp_addlogin ‘登录名’,’密码

            删除:sp_droplogin ‘登录名

2.  创建数据库用户

         sp_grantdbaccess ‘登录帐户’,’数据库用户

3.  向数据库用户授权

         授权:grant 权限 [on ] to 数据库用户

         撤销:revoke 权限 [on ] to 数据库用户

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值