zoukankan      html  css  js  c++  java
  • SqlServer2012——Select,分组,排序、插入

    1、select 简单语句

    --select语句
    select 12*13
    --select子句
    
    select 12*13 AS result
    --select子句,可以将结果保存在result中
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    select * From table_name
    --查询table_name所有信息
    
    select name From table_name
    --查询table_name表中name
    
    select name as 学生姓名 From table_name
    --查询table_name表中name且列名字以“学生姓名”显示
    
    select name,Gender,Address From table_name
    --查询table_name的姓名,性别,地址
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    select distinct name From table_name
    --查询table_name的姓名且去除重复信息(此例时去除重复name)

    2、设置查询条件

    select * From table_name where name='张三'
    精确查询
    
    select * From table_name where name='张三' AND Gender=''
    精确查询 需要同时满足name='张三' 和 Gender=''
    
    select * From table_name where name='张三' OR Gender=''
    精确查询 满足name='张三' 和 Gender=''任一条件就可
    
    select * From table_name where Age>18 and Age<=45
    精确查询 满足任一条件就可
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    select * From table_name where Address like '河南%'
    精确查询 %为通配符,like用于模糊查询,此语句满足以河南开头的住址
    select * From 成绩查询 where 考试编号='0802' AND (分数  between 90 and 95)
    --查询考试编号为0802且 分数位于90~95之间的分数
    
    select * From 成绩查询 where 考试编号='0802' AND (分数  % 5=0)
    --查询考试编号为0802且 分数除以5的余数为0(求余是0)
    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    select * From 成绩查询 where 考试编号='0802' AND 分数 in (85,86,87,90)
    --查询考试编号为0802且 分数是85(86或87或90)
    
    select * From 成绩查询 where 考试编号='0802' AND 分数 not in (85,86,87,90)
    --查询考试编号为0802且 分数不是85、86、87、90
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    3、排序

    select * From table_name where 考试编号=‘0801’
    order by 分数
    -->查询考试编号为0801的成绩,按分数默认(升序)排序
    
    select * From table_name where 考试编号=‘0801’
    order by 分数 ASC
    -->查询考试编号为0801的成绩,按分数  升序  排序
    
    select * From table_name where 考试编号=‘0801’
    order by 分数 DESC
    -->查询考试编号为0801的成绩,按分数默认  降序  排序
    
    select * From table_name where 考试编号=‘0801’
    order by 分数 DESC,学生编号 ASC(可不写)
    -->查询考试编号为0801的成绩,按分数默认  降序  排序,(成绩相同的)学生编号按  升序  排序

    4、使用函数

    select * From 成绩查询 where 考试编号='0801' AND 课程编号='2'
    --查询考试编号='0801' AND 课程编号='2'的成绩查询表
    
    select Max(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
    --查询考试编号='0801' AND 课程编号='2'的成绩查询表的最高分数
    
    select Min(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
    --查询考试编号='0801' AND 课程编号='2'的成绩查询表的最低分数
    
    select AVG(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
    --查询考试编号='0801' AND 课程编号='2'的成绩查询表的平均分数
    
    select SUM(分数) From 成绩查询 where 考试编号='0801' AND 课程编号='2'
    --查询考试编号='0801' AND 课程编号='2'的成绩查询表的求和
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    select top 3 分数 From 成绩查询 where 考试编号='0801' AND 课程编号='2'
    order by 分数 DESC
    --top函数:查询考试编号='0801' AND 课程编号='2'的成绩查询表的前三个数据并降序排列(前三名)

    5、分组

    select 课程编号,AVG(分数) From 成绩查询 where 考试编号='0801' Group by 课程编号
    --查询考试编号为0801且以课程编号分组的平均成绩

    注意分组的group的关键字rollup和cube

    select 课程编号,AVG(分数) From 成绩查询 where 考试编号='0801' Group by rollup(课程编号)
    --查询考试编号为0801且以课程编号分组的平均成绩,且最后有个总成绩的平均值
    
    select 课程编号,AVG(分数) From 成绩查询 where 考试编号='0801' Group by cube(课程编号)
    --查询考试编号为0801且以课程编号分组的平均成绩,且最后有个总成绩的平均值

    千万注意rollup和cube的区别

    select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
    --查询考试编号,课程编号和课程编号且以此分组的平均成绩,
    
    select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by rollup(考试编号,课程编号)
    --查询考试编号,课程编号和课程编号且以此分组的平均成绩,且以考试编号进行汇总,后面有总汇总
    
    select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by cube(考试编号,课程编号)
    --查询考试编号,课程编号和课程编号且以此分组的平均成绩,且以课程编号进行汇总,后面有总汇总

    6、Having子句

    select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
    order by 考试编号
    --查询考试编号,课程编号和课程编号且以此分组的平均成绩,
    
    select 考试编号,课程编号,AVG(分数) From 成绩查询 Group by 考试编号,课程编号
    Having AVG(分数) >=90
    order by 考试编号
    --查询考试编号,课程编号和课程编号且以此分组的平均成绩,增加having条件

    7、插入语句

    Insert,插入数据,手动指定

    Insert
    Insert into table_name VALUES('xx','xxx'......)
    --不写列,代表向表中全部的列都插入数据
    例如:
    Insert into 学生信息 VALUES('2019100101','李白',’男‘,’1999-10-21‘,'''河南郑州')
    
    Insert into table_name (column1,column2...) VALUES('xx','xxx'......)
    Insert into 学生信息 (学号,姓名,地址) VALUES('2019100101','李白''河南郑州')

    Insert......Select:向数据表中插入从其他地方获取的值

    语法:
    Insert table_name [column_list]
    select column
    From table_list
    Where search_condirions
    
    例子:
    Insert 学生信息1
    select * From 学生信息
    
    或者
    Insert 学生信息1
    select * From 学生信息 
    where 地址 like%郑州‘

    SELECT......INTO

    --语法
    Select <select_list>
    Into new_table
    From {<table_name>}
    where <search_condition>
    --这么做或新建一个表,把查询结果放到新表当中
    --例子
    select * 
    into #学生信息2
    from 学生信息 
    where 性别=''
    --新建表就是不希望查询中新建实例表 

    7、改语句:Update

    ---语法
    Update [top] {table_name|view_name}
    Set
    {column_name{expression|DEFAULT|NULL}|@variable=expression}
    where {search_condition}
    
    --例子
    Update 学生信息
    set 姓名='杜甫'
    where 学号='2019100101'
    
    Update 学生信息
    set 姓名='杜甫',出生日期='2000-8-9'
    where 学号='2019100101'

    update中使用From子句

    update 学生信息
    set s_sex=b.性别,s_address=b.家庭住址
    from 学生信息 a join stuudent b on a.s_name = b.姓名
    whhere b.性别=''

    8、删除语句:Delect

    --语法
    Delete From <table_name>
    where <search_condition>
    
    --例子:
    delete From table_name
    --或者
    delete * From table_name
    --删除所有行
    
    delete From table_name
    whhere 学号='2019-10010'
  • 相关阅读:
    Python容器(zz)
    [Violet]蒲公英 分块
    [JSOI2008]火星人 hash+splay
    [USACO08DEC]拍头Patting Heads 水题
    [国家集训队]整数的lqp拆分 数学推导 打表找规律
    [HNOI2008]水平可见直线 单调栈
    [LNOI2014]LCA 树链剖分 离线 前缀和 思维题
    [SCOI2008]着色方案 递推 记忆化搜索
    [NOI2010]海拔 平面图转对偶图 最小割
    [NOI2008]志愿者招募 网络流 建模
  • 原文地址:https://www.cnblogs.com/javier520/p/10859913.html
Copyright © 2011-2022 走看看