zoukankan      html  css  js  c++  java
  • 数据库(六)之数据查询和管理

    查询语句:

      简单的select语句

    select [all|distinct] select_list
        [into new_table]
        from table_source
        [where search_conditions]
        [group by group_by_expression]
        [having search_conditions]
        [order by order_expression [asc | desc]]

      例子:

    select * from 学生信息
        
        select 姓名, 性别, 家庭住址 from 学生信息
        
        select 12 * 14
        
        select 12 * 14 as 计算结果
        
        select 姓名 as 学生姓名, 性别 from 学生信息
        
        select 民族 from 学生信息
        
        select distinct 民族 from 学生信息

      设置查询条件

    select * from 学生信息 where 姓名 = '张苗苗'
        
        select * from 学生信息 where 民族 = '汉族' and 性别 = ''
    
        select * from 学生信息 where 民族 = '汉族' or 性别 = ''
        
        select * from 学生信息 where 民族 = '汉族' or 性别 = ''
        
        select * from 学生信息 where 民族 = '汉族' and 性别 = '' and 家庭住址 = '河南商丘'
        
        select * from 学生信息 where 家庭住址 like '河南%'

    排序:

    select * 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '1'
        order by 分数 asc
        
        select *
        from 成绩信息
        where 考试编号 = '0801' and 课程编号 = '1'
        order by 分数 desc
        
        select * 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '1'
        order by 分数 desc, 学生编号
        
        select * 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '1'
        order by 分数 desc,学生编号 desc

     使用函数

    select *
        from 成绩信息
        where 考试编号 = '0801' and 课程编号 = '2'
        
        select MAX(分数) 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '2'
        
        select MIN(分数) 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '2'
        
        select avg(分数) 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '2'
        
        select sum(分数) 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '2'
        
        select top 3 分数 
        from 成绩信息 
        where 考试编号 = '0801' and 课程编号 = '2'
        order by 分数 desc

    分组

    select 课程编号,avg(分数) 
        from 成绩信息 
        where 考试编号 = '0801' 
        group by 课程编号
        
        select 课程编号,avg(分数)
        from 成绩信息
        where 考试编号 = '0801'
        group by rollup (课程编号)
        
        select 课程编号,avg(分数)
        from 成绩信息
        where 考试编号 = '0801'
        group by cube (课程编号)
        
        select 考试编号,课程编号,avg(分数)
        from 成绩信息
        group by rollup (考试编号,课程编号)
        
        对不同考试的考试编号分别求平均分,然后总的平均分
        
        select 考试编号,课程编号,avg(分数)
        from 成绩信息
        group by cube (考试编号,课程编号)
        
        --对不同课程求平均分,对不同考试求平均分,最后求总的平均分。

    having 子句

    select 考试编号,课程编号,avg(分数) 
        from 成绩信息 
        group by 考试编号,课程编号
        having avg(分数) >= 90
        order by 考试编号

    插入数据:

      insert 语法:

    insert 语法:
        insert [into] table_or_view [(column_list)] 
        values data_values
    • table_or_view 用于指定向表中添加数据的表或视图名称。
    • column_list 用于指定该数据表的列名,可以指定一列或多列,所有这些列都必须放在圆括号()内。如果要指定多个列时,各列必须用逗号隔开。如果指定了列名,那么在目标数据表中所有未被指定的列必须支持空值或默认值。
    • data_values 用于指定向数据表中插入的数据值。这些值也必须放在圆括号内,如果指定的值为多个时,这些值之间也必须用逗号隔开。如果指定了列名,那么该数据必须与各列一一对应。如果没有列名,该数据必须与数据表中各列的顺序一一对应。
    insert into 学生信息
        values('2111123456','李明','','1996-1-29','汉族','20180314')
        
        insert into 学生信息(学号,姓名,性别,家庭住址)
        values('201803115', '李雷', '', '湖北武汉')

      insert ... select 语句语法:

    --将一个表得内容插入另一个表
        insert table_name[column_list]
        select column_list
        from table_list
        where search_conditions

       例子:

    insert 学生信息1
            select * from 学生信息
            
            insert 学生信息1
            select * from 学生信息 where 家庭住址 like '武汉%'

    select ... into语句:

    select <select_list>    
        into new_table
        from {<table_source>[,...n]}
        where <search_condition>

      例子: 

    select *
            into #student
            from 学生信息
            where 性别 = ''
            
            select * from #student

    修改数据

      update语句语法:

    update [top] {table_name | view_name}
            set
            {column_name = {expression | default | null}@varible = expression}[...,n]
            where {search_conditions}

      例子:

    select * from 学生信息1
            update 学生信息 set 姓名 = '李俊' 
            where 学号 = '20181112'
        
            select * from 学生信息1
            update 学生信息 set 姓名 = '李军',出生日期 = '1996-12-10'
            where 学号 = '20181113' 

      在update语句使用from子句:

    select * from studentInfo
            update studentInfo set s_sex = b.性别, s_address = b.家庭住址, s_id = b.学号
            from studentInfo a join 学生信息 b on a.s_name = b.姓名
            where b.性别 = ''

    删除数据

      delete语句语法:

    delete from <table_name>
            [where <search condition>]

      top关键字和top表达式:

    [
            top (expression) [percent]
            [with ties]
            ]

      例子:

    select top 10 * from 成绩信息
            
            select top 10 percent * from 成绩信息
            
            declare @i int
            set @i = 20
            select top (@i) percent * from 成绩信息
            
            declare @i int
            set @i = 20
            select top (@i) 成绩信息 order by 分数
            
            declare @i int
            set @i = 6
            select top (@i) with ties * from 成绩信息 order by 分数

    compute子句:对已经查询出得结果产生一个合计

      语法格式:

        [
            compute
            { {avg|count|max|min|stdev|stdevp|var|varp|sum}
            (expression)}[,...n]
            [by expression [,...n]]
            ]

       例子:

    select * from 成绩信息 where 课程编号 = 2
            compute sum(分数),avg(分数), max(分数), min(分数)
        
            select * from 成绩信息 where 课程编号 = 2 order by 考试编号
            compute sum(分数), avg(分数), max(分数), min(分数) by 考试编号

    在where子句使用运算符

    select * from 成绩信息 where 考试编号 = '0802' and 课程编号 = 1
            
            select * from 成绩信息 where 考试编号 = '0802' and (分数 between 80 and 90)
            
            select * from 成绩信息 where 考试编号 = '0802' and (分数 % 5 = 0)
            
            select * from 成绩信息 where 考试编号 = '0802' and 分数 in (85, 90, 87, 86)
            
            select * from 成绩信息 where 考试编号 = '0802' and 分数 not in (85, 90, 87, 86)
  • 相关阅读:
    一起谈.NET技术,验证.NET强命称的思路和实例 狼人:
    一起谈.NET技术,基于SQL Server 2008 Service Broker构建企业级消息系统 狼人:
    一起谈.NET技术,一句代码实现批量数据绑定[下篇] 狼人:
    一起谈.NET技术,晚绑定场景下对象属性赋值和取值可以不需要PropertyInfo 狼人:
    一起谈.NET技术,Silverlight 2.5D RPG游戏技巧与特效处理:(六)流光追影 狼人:
    一起谈.NET技术,ASP.NET下用URLRewriter重写二级域名 狼人:
    这样覆写Object类的toString方法对吗
    【Cocos2DX 】初窥门径(7)无限地图滚动
    poj2975——Caesar密码
    [置顶] poi最简单易学解析xls代码
  • 原文地址:https://www.cnblogs.com/ZGreMount/p/8600339.html
Copyright © 2011-2022 走看看