设为首页 收藏本站
查看: 553|回复: 0

[经验分享] SQL Server 经验总结(二)

[复制链接]

尚未签到

发表于 2016-10-30 09:00:40 | 显示全部楼层 |阅读模式
数据类型
----系统数据类型
系统数据类型是SQL SERVER支持的内置数据类型。


数据类型


描述


所需空间


binary


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


0到8000字节,具体取决于定义


Bit


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


1字节


Char


固定长度的非Unicode的字符数据,最大长度为0到8000字节,8,000个字符


0到8000字节,8,000个字符。具体取决于定义


Datetime


日期和时间数据,从1753年1月1日到9999年12月30日,精确到三百分之一秒,即3.33秒


8个字节。


Decimal


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


2-17字节


float


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


8字节


image


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


16字节的指针,每个
初始化列至少外加2000字节


Int


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


4个字节


Money


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


8个字节


Numeric    


decimal的同义词


2-17字节


Real


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


4个字节


Smalldatetime 


Smalldatetime  日期和时间数据,从1900年1月1日到2079年6月6日,精确到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 条件(针对select和from返回的结果进行筛选)
        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 数据库用户

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-293203-1-1.html 上篇帖子: SQL Server 索引(index) 下篇帖子: sql server 05 连接不上错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表