数据库(六)之数据查询和管理

查询语句:

  简单的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)

 

posted @ 2018-03-19 10:56  去伪存真  阅读(369)  评论(0编辑  收藏  举报