21天,搞定軟件測試從業者需要掌握的SQL

  • 2020 年 3 月 26 日
  • 筆記

學習一門新技能,最難的是不知道到底要學啥;沒法聚焦精力,鎖定目標,把這門技能掌握;

比如,SQL,如果是從零開始,把所有SQL相關的語句都學一遍,可能得幾年,而且95%的同學會堅持不下去,直接放棄 ;

想想當年大學,那麼厚厚的一門SQL書籍(後台回復 MYSQL 看電子書),看完 + 練習實操,每個1 – 2年,是搞不定的 ;

作為職場人,學一門技能是用來解決日常工作問題的,沒必要從頭到尾把這塊知識弄透,沒那麼多時間 ;

基於此,老徐根據自己的經驗,把軟件測試從業者需要掌握的SQL知識,整理如下;大家跟着這個順序,從頭到尾執行即可 ;

如果不知道測試從業者需要掌握哪些數據庫知識,見前幾天的文章:-> 軟件測試從業者,需掌握的數據庫體系知識

開始之前的,前置準備事項:

1、在自己電腦上安裝一個mysql數據庫,文章見 -> 軟件測試從業者必備 之 MYSQL從零到入坑 。

2、找一個mysql客戶端鏈接工具:初學者,推薦 Navicat

OK ,如上準備完成後,接下來就是實操了 。

註:關於SQL的注釋

–:表示單行注釋

/*…*/:用於多行(塊)注釋

>說明:如下SQL,基於MYSQL

作者:IDO老徐 ,博客http://isTester.com

1.創建數據庫:

create DATABASE istester

2.刪除數據庫:

drop DATABASE istester

3.創建新表:

1)創建istester和idoxu表

CREATE  TABLE  istester (  id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,  uname  VARCHAR(20)  NOT NULL ,  sex  VARCHAR(4)  ,  birth  YEAR,  department  VARCHAR(20) ,  address  VARCHAR(50) ,  idoxu VARCHAR(20)  );  CREATE  TABLE  idoxu (  id  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  AUTO_INCREMENT ,  stu_id  INT(10)  NOT NULL ,  c_name  VARCHAR(20) ,  istester VARCHAR(50) ,  grade  INT(10)  );

2)根據已有的表創建新表(複製表)

create table istester2 like istester ;    create table idoxu2 as select * from idoxu where 2=1;    create table idoxu2 as select id,stu_id,istester from idoxu where 1<>1;  

4.刪除表:

drop table istester2    drop table idoxu,idoxu2,istester,istester99

5.增加表字段:

Alter table istester add column istester6 VARCHAR(20)  NOT NULL

6.主鍵

-- 添加主鍵:  Alter table istester add primary key(idoxu)    -- 刪除主鍵:  Alter table istester drop primary key(idoxu)  

7.幾個簡單的基本入門sql語句

插入:

insert into istester(id,uname,idoxu) values(1,"idoxu",2020);  insert into istester(id,uname,idoxu) values(2,"idoxu2",2020);      insert into idoxu(id,stu_id,c_name,grade) values(4,11,"idoxu",90),(5,12,"lin",100),(6,33,"6ido",20);      insert into istester(id,sex,idoxu) values(11,1,2020),(12,2,2020),(13,2,2020),(14,1,2020);

選擇:

select * from istester  select * from istester where id = 1

刪除:

delete from istester where id = 1

更新:

update istester set uname="idoxu666" where id = 12

查找:

select * from istester where uname like '%idoxu%'

排序:

select * from istester order by id desc

總數:

select count(id) as totalcount from istester

求和:

select sum(grade) from idoxu

平均:

select avg(id) as avgvalue from istester

最大:

select max(id) as "maxvalue" from istester

最小:

select min(id) as "minvalue" from istester

8.模糊查找(like)

select * from istester where uname like "%ido%" order by id desc limit 10;    select * from istester t where t.uname like "ido%" order by id desc limit 10;    select * from istester.idoxu s where s.stu_id like "%2%";  

9.拷貝表數據(從其他表)

INSERT into istester2 SELECT * FROM istester;    INSERT INTO idoxu(id,stu_id,grade) SELECT id,id,idoxu FROM istester;

10.修改表名

-- ALTER TABLE 舊錶名 RENAME TO 新表名 ;  ALTER TABLE idoxu3 RENAME TO idoxu6  

11.修改表字段名

-- ALTER  TABLE 表名 CHANGE 舊字段名 新字段名 新數據類型;  alter  table istester CHANGE uname aname varchar(60);  

14.跨數據庫之間表的拷貝

CREATE TABLE istester10 LIKE istester.idoxu;  

15.查詢between的使用

select * from idoxu where grade between 1 and 30;  select id,stu_id,c_name,grade from idoxu where grade not between 1 and 30;  

16.查詢 in 的使用

select id,stu_id,c_name,grade from idoxu where grade in (10,20,90);    select id,stu_id,c_name,grade from idoxu where grade not in (10,20,90);  

作者:IDO老徐 ,博客http://isTester.com

17.子查詢

select id,stu_id,c_name,grade from idoxu where id in (select id from istester);  

18.多表(左鏈接、右鏈接、內鏈接)

-- 左鏈接  select i.id,i.stu_id,i.c_name,i.grade from idoxu i LEFT join istester t ON i.id = t.id;    -- 右鏈接  select i.id,i.stu_id,i.c_name,i.grade from idoxu i RIGHT join istester t ON i.id = t.id;    -- 內鏈接  select i.id,i.stu_id,i.c_name,i.grade from idoxu i inner join istester t ON i.id = t.id;  

19.

select * from (Select id,stu_id,c_name,grade FROM idoxu ) d where d.id > 10  

20.四表聯查

select i.id,i.stu_id,i.c_name,i.grade from idoxu i LEFT join istester t ON i.id = t.id right join istester2 c on i.id=c.id inner join idoxu2 d on i.id=d.id where 1=1;

21.

select d.* from (select d.id,d.stu_id,d.c_name,d.grade from idoxu d order by grade desc limit 10) i,idoxu d where i.id = d.id order by stu_id desc limit 10;  

22.選擇從10到15的記錄

select * from (select * from idoxu order by id asc limit 15) i order by id desc limit 5

23.創建視圖

create view istester_view as select id,stu_id,c_name,grade from idoxu where id in (select id from istester);

24.刪除視圖

drop view istester_view

註:先列這些,後續再弄一個V2.0

還記得的之前的Linux體系嗎(那篇文章,跟着實操,可以搞定軟測從業者需要的Linux命令) ?