zoukankan      html  css  js  c++  java
  • SQL Server 复习

    SQL主要分为DDL和DML两类:create table \drop table、ALTER TABLE等属于DDL,select insert等属于DML;

    sqlsERVERZH中两种常用的主键类型,int\标识列(又称自动增长列)uniqueidentifier,用标识列的字段在insert的时候不用指定主键值;Sqlserver中生成GUID的函数:newid().net中:GUID.NewGuid(),返回GUID类型;

    delete:删除数据,drop table把整个表直接删除

    数据检索:

    检索需要的列,select 列值进行计算:select age+100 from person

    列别名:select id as '编号',name as '姓名',age as '年龄' from person

    还可以检索不与任何表关联的数据:select 1+1;select newid() select getdate()

    聚合函数:对查询的结果进行统计;

    数据排序:asc descselect * from person order by age asc,id desc这里面有一个先后顺序,先按照年龄进行升序,如果年龄中有相同的则按照id进行降序排列order by子句要放到where之后:可以解释为对结果集进行排序

    通配符过滤:使用like单字符通配符半角下划线_,多字符通配符半角百分号%

    空值处理:在数据库中一个列如果没有指定值那么值就为null,这个和C#中的null室友区别的,查询列值为null时使用is:空值处理函数isnull('被判断的值','如果被判断的值为空返回第二个参数')
    多值匹配:使用in :select * from person where id in (1,2,3)between and :select * from person where id between 2 and 4

    数据分组:先按照字段进行分组,然后处理各组的数据,出现在select中的字段名必须是聚合函数或者出现在group by 中的字段;

    聚合函数中的字段可以是其他列的字段;select count(*)as '姓名相同的人数' ,name  as'姓名',max(age)as '改组中的最大年龄' from person group by name 

    having语句:在where中不能使用聚合函数,必须使用HAVING,Having要位于group by 之后,起到对组进行过滤的作用;能出现在having中的字段要和在select中能用的的字段一样,即对组内的数据进行过滤

    限制结果集的行数:select top 或者SQl server 2005后增加的row_number()函数

    去掉重复数据:

    distinct是针对整个行的而不是针对某个字段:select distinct name ,age from personu

    联合结果集union 

    把两个执行结果整合到一起;select  id,name from person2 union select id ,name from person上下两行的列数,字段的数据类型一致select  0,name  from person2union select id ,name from personunion

    默认将重复数据合并掉,如果不需要去掉重复数据使用

    union all 

    select  0,name,age  from person2union allselect id ,name,age from person数据报表实例select 'person2中的最小年龄',min(age) from person2union allselect 'person中的最大年龄',max(age) from personunion allselect 'person中的最小年龄',min(age) from person
    数字函数

    abs() ceiling() floor() round()

    字符串函数:

    len() lower() ltrim() rtrim() substring('',strarposition,length) 

    日期函数:

    getdate()  dateadd(depart,number,date)计算增加以后的日期,参数date为待计算的日期,参数number为增量,参数depart为计量单位如day ,year...datediff(depart,statrdate,enddate)datepart(depart,date);返回一个日期的特定部分;获取每年入职的人数case函数用法:

    可用于修改表的输出样式:

    单值判断,

    相当于switch cas

    ecase expression

    when value1 then returnvalue

    when value1 then returnvalue

    else defaultreturnvalue

     end

    实现if else,

    此时case后没有表达式:

    select * ,

    (case 

    when age>30 then '大龄青年'

    when age=30 

    then '30'

    else '小屁孩'

    end)

    as '客户类型'

    from person

    索引:

    只在经常检索的字段上创建索引,即使创建了索引也有可能全表扫描:比如:like,函数,

    类型转换

    连接查询join

    子查询:将一个查询语句作为一个结果集给其他语句使用;就像使用普通的表一样,

  • 相关阅读:
    Web API系列(三)统一异常处理
    Web API系列(二)接口安全和参数校验
    Web API系列(一)设计经验与总结
    文件并发(日志处理)--队列--Redis+Log4Net
    Jquery手机下拉刷新,下拉加载数据
    nginx 几个参数
    op cache config
    历史问题回顾
    第三方服务的使用
    nginx+php-fpm json_encode 到client pages 截断
  • 原文地址:https://www.cnblogs.com/LittleFeiHu/p/1924222.html
Copyright © 2011-2022 走看看