• SQL笔记


    根据李天生SQL Server 2008视频教程学习所得

    ——————————————————————————————————————————————————————————————————————————————

    一、SQL Server讲解

    1、标识种子和标识自增量:

             标识种子:从多少开始增加

             标识自增量:每次增加多少

    2、T-SQL语句

      创建数据库:create  database 仓库1

      删除(一个或者多个)数据库:drop  database  仓库1,仓库2

      更改数据库名称:exec  sp_renamedb  仓库1,仓库2

    3、关键字:一个表中在一列中绝对不会相同的字段

    4、外部关键字:字段在本表中不是关键字,在其它表中是关键字

    5、主键:一列,它的值能唯一区分表中每一行

      主键可以使用多个列,所有主键应该满足以下条件:

      满足以下条件:

        * 任意两行都不具有相同的主键值

        * 每个行都必须具有一个主键值(主键列不允许NULL值)

    二、T-SQL语句详解

    1、 创建数据库:

      

      name         数据库名

      filename   文件所在名

      size            数据库文件初始化大小

      maxsize    最大文件大小

      filegrowth         增长率

    2、创建表

      

      建表设置主键,标识种子和标示量identity(1,1),初始自增AUTO_INCREMENT=100

         create  table  user(id  int  identity(1,1)  primary  key  auto_ increment);

    3、修改表名称

        exec sp_rename "techer","教师表"

    4、增加表字段

        alert from techer add Email VARCHAR(60) default ‘123@qq.com’

    5、修改表字段

        alert from techer

        alert column A varchar(50)

    6、删除表字段

        drop column A

    7、更改表字段记录值

        update techer set A=100,B=100,C=100,D=100 where A=1

    8、删除表记录

        delete  from  techer  where  A=100

    9、新增表字段记录

        insert  into  techer(A,B,C,D)  values(100,100,100,100)

    10、使用IN关键字(表示字段值在指定集范围内的)

        select  *  from  techer  where  A  in(0,1,100)

    11、where子句检索是否为NULL值的列(IS  NULL空值检查

        select name from HR_APPLYPLAN where orgId IS NULL;

        select name from HR_APPLYPLAN where orgId IS NOT NULL;

    12、where子句使用BETWEEN操作符检索(可能漏掉开始结束时间的数据)

        select * from techer where createDate BETWEEN '2017-6-16' and '2017-6-23';

        select * from techer where A NOT BETWEEN 20 and 100;

    13、distinct关键字指示消除重复值,返回一列中不同的值——(放在列前面)

        

        select distinct state from HR_APPLYPLAN;

    14、嵌套查询

                  select  *  from  techer  where  A>=(select  A  from  techer  where  B=100)

    15、 多表嵌套查询

                  select  *  from  techer  where  A  in(select  A  from  techer  where  B=100)

    16、排序检索的数据

        * 子句控制检索数据的排序——(Order  By)

          select name from HR_APPLYPLAN order by createDate;

        * Order  By增加ALL关键字,分组会使用所有行的值,即使规定不能显示

        * 子句控制检索数据按两个列排序

          Select  name  from  APPLYPLAN  order by  createDate,createUser;

        * 子句控制检索数据按升序(asc)/降序(desc)排序

          select * from HR_APPLYPLAN order by createDate desc;

          select * from HR_APPLYPLAN order by createDate asc;

          /

                   * 子句检索对多个列进行排序,则都需要指定关键字

          select * from HR_APPLYPLAN order by createDate desc,name desc;

        * 检索字段让其为中文名称显示

          select personnel_No as 序号,personnel_name as 姓名 from rsgl_personnel_BaseInfo

          

        * 检索前n行用top关键字:

          select top 5 * from HR_APPLYPLAN;

                  * 检索前百分之n数据用percent关键字

          select top 10 percent * from HR_APPLYPLAN;

        * 使用完全限定表名列名的方式检索数据库

          select HR_APPLYPLAN.name from wxtDb.dbo.HR_APPLYPLAN;

             17、统计函数

                 COUNT函数——只统计有内容的

                      统计所有记录行数

                      select  COUNT(*)  as  行数  from  techer;

                      统计单独一列记录行数

                      select  COUNT(name)  as  行数  from  techer;

                 SUM函数——统计总和

                      select  SUM(工资)  as  工资  from  techer;

                 AVG函数——统计列平均值

                      select  AVG(年龄)  as  年龄  from  techer;

                 MAX函数——求列最大值

                      select  MAX(工资)  as  最高工资  from  techer;

                 MIN函数——求列最小值

                      select  MIN(工资)  as  最低工资  from  techer;

             18、函数的综合运用(compute  by)——排序的字段中要和分组的字段相同

                      select  *  from  techer  order  by  名称,年龄  compute  max(工资), min(工资), sum(工资), age(工资)  by  年龄;

          

             19、分组汇总(group  by)——通过某字段分组(having为分组设定条件)

                      select  姓名,MAX(工资)  as  最高工资  from  techer  group  by  姓名  having  SUM(工资)>5000;

             20、谓词查询( exists )——exists判断有一个符合条件集合即可查询

                      select  *  as  最高工资  from  techer  where  not  exists(select  *  from  techer  where  A=100);

             21、谓词查询( any )——any集合中任意一个值

                      select  *  as  最高工资  from  techer  where  工资>any(select  *  from  techer  where  A=100);

                      谓词查询( all )——all集合中所有值

                      select  *  as  最高工资  from  techer  where  工资>all(select  *  from  techer  where  A=100);

             22、检索表扩展

        1、过滤数据

                           * where子句操作符说明

          

        2、数据过滤

                           * 组合多个where子句检索(以多个AND子句或OR子句的方式)

                               select name from HR_APPLYPLAN where id>5 AND state=1;

            

                           * where子句组合使用OR子句,表示数据库匹配任一条件

                               select id,name,state from HR_APPLYPLAN where id<5 OR state=1;

            

                           * where子句组合AND和OR子句,会优先选择AND子句,需要使用”()”分组

                               优先级排序:not  》 and  》  or

                               select * from HR_APPLYPLAN where (id>10 OR id<5) AND state='0';

            

                           * where子句NOT操作符——(否定后面的所有条件

                               select * from HR_APPLYPLAN where id NOT IN(5 ,7, 10);

            

    3、通配符过滤

                           * LIKE操作符

            百分号(%)通配符:(‘%’匹配不了以NULL做列值的行)

                                        ‘a%’          以a起头的列值

                                        ‘%a%’               列值包含a

                                        ‘%a’          以a结束的列值

                                        ‘a%b’                以a起头b结束的列值

                                        select * from HR_APPLYPLAN where name like '%%';

            下划线(_)通配符:与’%’的作用一样,但是只能匹配单个字符而不是多个,所以可以使用多个下划线

              select * from HR_APPLYPLAN where name like '第_年';

               

                               当值中存在百分号%或下划线_,使用escape运算符

                                   select * from HR_APPLYPLAN where name like '%/%%' escape '/';

              select * from HR_APPLYPLAN where name like '%*%%' escape '*';

                               以上SQL语句使用escape关键字指定字符解释通配符

              

                           * 正则表达式

                               进行OR匹配(类似OR操作符)

    23、查询出的记录结果存储到另一个表中

                      select * into 教师表 from techer where name='于'

    24、集合

                      ①、原字段基础上更新表记录

                              update  教师表  set  姓名='教师表'+姓名

                      ②、集合并运算(union)

                              select * from 教师表 union select * from techer

                      ③、集合交运算(interset)

                              select * from 教师表 interset select * from techer

             25、连接查询

                      ①、普通连接查询

            select * from student,techer where student.NO=techer.A

            select * from student,techer where NO=A

            

                      ②、超连接查询

                              1、内连接

            select * from student inner join techer on student.NO=techer.A

            

                              2、左连接——保证左边表中所有记录都显示,不管是否满足后面条件

            select * from student left join techer on student.NO=techer.A

            

                              3、右连接——保证右边表中所有记录都显示,不管是否满足后面条件

            select * from student right join techer on student.NO=techer.A

            

            4、全连接——左右两个表不管是否满足条件,都显示出来

            select * from student full join techer on student.NO=techer.A

    三、约束

    四、T-SQL编程

    ①、数据类型

             1、整数数据类型(Bigint)(Int)(Smallint)(Tinyint)

             2、浮点数据类型(real)(Float)(Decimal)(Numreic)

             3、二进制数据类型(Binary)(Varbinary)(Uniqueidentifier)

                      *       二进制大型对象(binary large object)——异常巨大的数据对象

             4、逻辑数据类型(true)(false)

             5、文本数据类型(Text)(Ntext)

             6、图形数据类型(Image)

             7、字符型数据类型(char)(nchar)(varchar)(nvarchar)

             8、日期时间数据类型(DateTime)(SmallDateTime)

             9、货币数据类型(Money)(SmallMoney)

             10、自定义数据类型(SYSNAME)

             11、可变数据与表数据类型(SQL-VARIANT)(TABLE)

    ②、局部变量

             局部变量使用'@'声明

             1、声明:使用declare

             2、赋值:

                      Set:为单一变量赋值

            DECLARE @A int,@B CHAR(60),@C CHAR(60)

                      Select:同时为多个变量赋值

            SET @A=100

            SELECT @B='于',@C='文杰'

             3、输出:

                      Print:输出一个变量

                      Select:同时输出多个变量

            print @A

            SELECT @B,@C

             ③、全局变量

                      全局变量使用'@@'引用

             ④、注释

                      多行注释:/*  abcde  */

           单行注释:--

             ⑤、程序块(就是'{}'):

           Bigin … End

             ⑥、判断语句(使用and连接多条件):

           IF  @A>=80 and @B<=90

           ELSE

        case判断语句(直接使用返回值赋值给变量):

           set @C=

           case   when @A>=80 and @B<=90 then '良好'

            when @A>=90 and @B<=100 then '优秀'

            else '不及格'

           end

        while判断语句(输出80以内所有整数):——整数与字符串之间连接用','

          while @A<=80

          bigin

            set @B=@B+@A

            set @A=@A+1

          end

          select '80以内所有整数:',@B

        循环退出语句:

          breakcontinue

             ⑦、goto语句:跳转到指定标签,执行语句

          goto AAA

            print ''

            if @A<80 goto AAA

    五、函数

    1、三角函数:SIN(浮点数)、COS(浮点数)、TAN(浮点数)、COT(浮点数)

    2、反三角函数:ASIN(浮点数)、ACOS(浮点数)、ATAN(浮点数)

    3、角度弧度转换函数:角度转弧度:DEGREES  ——  弧度转角度:RADIANS

    4、幂函数:EXP(浮点数)、LOG(浮点数)、LOG10(浮点数)、SQRT(浮点数)

    5、取近似值函数:CELLING(数字)、FLOOR(数字)、ROUND(数字,整型)

    6、符号函数:ABS(数字)、SIGN(数字)

    7、随机函数(0~1之间的一个浮点数):RAND()

    8、圆周率函数:PI()

    9、字符串函数:

      字符转ASCII码值:ASCII()

      ASCII码值转字符:CHAR()

      字符串全转换成大写:UPPER()

      字符串全转换成小写:LOWER()

      数字转换成字符:str(数字,转换后长度,保留小数位)

    10、字符串长度函数:LEN()

      去除字符串空格函数:去除头部:ltrim()   ——   去除尾部:rtrim()

      截取字符串函数:

        从左到右:LEFT(字符串,字符个数)

        从右到左:RIGHT(字符串,字符个数)

        指定截取:SUBSTRING(字符串,开始位置,字符个数)

      重复字符函数:REPLICATE(字符串,重复次数)

      反向函数:REVERSE(字符串)

      替换函数:REPLACE(字符串,替换前字符,替换后字符)

      指定替换函数:STUFF(字符串,开始位置,结束位置,替换字符串)

      加空格函数:space(空格数)

      数字类型转换函数:   cast(转换变量  as  转换数据类型)

                convert(转换数据类型,转换变量)

    11、日期函数:

      系统时间:GETDATE()

      年月日:year(GETDATE())、month()、day()

      提取日期部分:

        DATENAME(提取部分, GETDATE())——返回值:字符型

        DATEPART(提取部分, GETDATE())——返回值:整型

      日期加减:DATEADD(DAY,数字,GETDATE())——数字正数是增加,负数减少

      日期之间的差:DATEDIFF(DAY,开始日期,结束日期)

    12、创建函数:

      create  Function  函数名(@A  int)  returns  int

           as

           begin

      return @A

      end

      调用函数: select  dbo.函数名(参数)

      修改函数: alter function  函数名()

    六、存储过程

    七、游标

    八、触发器

    九、数据库安全与备份

    十、报表

      SQL Server报表是完整的基于服务器的平台,可以创建、管理和发布报表

      使用SQL Server自带工具SQL Server Business实现数据库报表

    ——————————————————————————————————————————————————————————————————————————————

    待续。。。。。。。

  • 相关阅读:
    python
    python
    gitlab
    nodejs
    java
    ElasticSearch 安装与配置 (windows)
    shell脚本批量注释
    C获取系统中CPU核数
    linux内核内存管理
    perf: interrupt took too long (3136 > 3126), lowering kernel.perf_event_max_sample_rate to 63000
  • 原文地址:https://www.cnblogs.com/ytlds/p/8820589.html
Copyright © 2020-2023  润新知