數據庫(六)之數據查詢和管理
阿新 • • 發佈:2018-03-19
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)
數據庫(六)之數據查詢和管理