1. 程式人生 > >數據庫(六)之數據查詢和管理

數據庫(六)之數據查詢和管理

pda 所有 多列 bold 空值 函數 add having con

查詢語句:

  簡單的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)

數據庫(六)之數據查詢和管理