軟件測試——sql數據庫
1.數據類型(常用)
? int : 整數
? decimal : 小數
? varchar : 字符串
? datetime : 日期時間
2.約束
primary key : 主鍵;唯一標識某一條數據,字段值不能為空,一般為id字段(int類型、無符號、自動遞增)
foreign key : 外鍵;維護表與表之間的關聯關系.
not null : 非空;該字段不允許存入空值.
unique : 唯一;該字段的值是不允許重復.
default : 默認值;不填值的情況下自動使用默認值.
3.數據庫操作
? 1)創(chuàng)建數據庫
create database dbname
? 2)刪除數據庫
drop database dbname
4.數據表操作
1) 創(chuàng)建表
create table tablename (
字段1 類型 約束
字段2 類型 約束
…
)
2)刪除表
drop table tablename
3)添加數據(增)
語法一:
添加一條完整數據(設置所有字段信息)
insert into tablename values(值1,值2,'值3',…)
? // values( )中的值必須按照字段順序依次填寫對應值,不可缺少任何字段
? //字符串類型的數據需要用單引號‘’.
? //值與值之間用逗號分隔
語法二:
給指定字段(列)設置值
insert into tablename(列1,列2,…)values(值1,值2,…)
//列名與列名之間用逗號分隔
//列名與值一一對應
語法三:
同時添加多條數據
insert into tablename(列1,列2,…)values(數據1),(數據2),(數據3)
4)刪除數據(刪)
delete from tablename where 條件
例:
刪除姓名為張三,id為6的學生數據
delete from student where name='張三',id=6
// 切記:謹慎使用delete,一旦刪除失誤,數據無法恢復,牢底坐穿(夸張了哈)就在你一念只差?。?!在公司我們可以用邏輯刪除(操作如下)
1.給表添加一個isdelete的字段,用于代表數據是否刪除, 0表示未刪除(默認為0),1表示刪除
2.需要刪除某條數據時,使用update語句將isdelete字段值改為1即可
例:
update student set isdelete=1 where id=2
3.查詢未刪除的數據時,將查詢條件設為isdelete=0
? select * from student where isdelete=0
? //返回的數據就是未做刪除處理的數據
5)修改數據(改)
語法一:
update tablename set 列1=值1,列2=值2,… where 條件
例:
將編號(id)為1的分數(score)改為99分,性別(sex)改為女
update student set score=99,sex='女' where id=1
6)查詢數據(查)
? 簡單查詢(單表查詢):
1)查詢一個表的所有數據
? select * from tablename
? // * : 表所有
2)查詢指定數據
select 列1,列2,… from tablename
例1:
查詢張三的成績
select score from student where name='張三'
例2:
查詢分數在60分以上的學生信息
select * from student where score≥60
4)比較符
>(大于)
<(小于)
≥(大于等于)
≤(小于等于)
!=(不等于)
5)邏輯運算符
and? :? 和,并且;? ? 左右兩個條件必須同時滿足
? or? : 或, 或者;? ? 左右條件滿足其一即可
? not : 非,不是,取反;放在某一個條件前,表否定
7)模糊查詢
? like : 模糊查詢關鍵字
%? : 百分號,表示任意多個字符
_? : 下劃線,表示一個任意字符
8)范圍查詢
in :非連續(xù)范圍內查詢 (查詢一個字段多個非連續(xù)(1~3)值時使用)
語法:
select * from tablename where 列名 in('值1','值2','值3')
例:
查詢出家在長沙,岳陽,武漢的學生信息
select * from student where home in('長沙','岳陽','武漢')
between and :連續(xù)范圍內查詢
語法:
select * from tablename where 列名 between 小值? and 大值
例:
查詢年齡在16~18歲的學生信息
select * from student where age between 16 and 18
//必須是從小到大,所以between 后面必須是比and后面的值小
// 查詢出的結果包含設定的最小值和最大值
// 查詢范圍以外的信息,在字段前前面加上 not即可
9)排序
order by 關鍵字
升序(從小到大,默認):
select * from tablename order by 列名 asc
// order by 默認排序為升序(從小到大)故asc可省略不寫
降序(從大到小,非默認)
select * from tablename order by 列名 desc
10)空判斷
is null : 判空
語法:
select * from tablename where 列名 is null
is not null : 判非空
語法:
select * from tablename where 列名 is not null
// 查詢是否為null時,不能用比較運算符“=”
// null 不等于 ' '
11)聚合函數
count(*): 總和 (總行數)
語法:
select count(*) from tablename
select count(列名) from tablename
// count括號中可以是“*”也可以是單個字段,多個字段不可以
// 當使用*時,一行數據所以值都為null時不計數
//count指定字段后,這一列數據中存在的null值不計入總數
// 當count()與where條件同時出現時,先統(tǒng)計的是where條件再在滿足where條件之后的數據上執(zhí)行count()
max( ) : 最大值 統(tǒng)計一列數據的最大值
語法:
select max(列名) from tablename
min( ) : 最小值? 統(tǒng)計一列數據的最小值
語法:
select min(列名) from tablename
avg( ) : 平均值 統(tǒng)計一列數據的值的平均值,例如班級平均分
語法:
select avg(列名) from tablename
sum( ) : 求和 統(tǒng)計一列數據的值的總和
select sum(列名) from tablename
//聚合函數不能在where語句中使用
// 所有聚合函數可以同時使用,在from前函數與函數之間用逗號分隔開即可
12)分組
group by
語法:
select 列1,列2,… 聚合函數… from tablename group by 列1,列2,… having 列1,列2,… 聚合函數
// group by 語句后不能接where語句,where語句后可以接groupby,where語句必須在from tablename之后,where是對原始數據的篩選,having是對group by分組之后的結果進行篩選
// 凡是遇到“每個”“各個"必定用分組
例:
查詢1班以外,數學學科的班級平均分和最高分,最低分分別是多少
select class avg(score),max(score),min(score) from student group by class having class!=1 and kemu='數學'
13)分頁查詢
語法:
select *from tablename limit 行數
14)給字段取別名
select id as 序號,name as 姓名 ,… from student
15)查詢結果去重處理
select distinct 列名1,列名2,… from tablename
16)多表查詢
1.等值連接查詢?
2.左連接查詢
3.右連接查詢