編寫背景:
深圳下了一周的雨,天陰沉陰沉的,好想曬曬陽光,心情快被發(fā)霉了。這周運(yùn)氣很好,bugzilla和TestLink安裝很順利,mysql數(shù)據(jù)庫的備份和恢復(fù)、bugzilla和testlink升級順利。
在這好心情的日子里,讓實習(xí)生把做測試時,經(jīng)常要用sql命令進(jìn)行一些數(shù)據(jù)檢查測試的都集中整理放上來,那天要用直接上來看就行了,分享給大家,特別是剛做測試的新手。
一、mysql數(shù)據(jù)庫日常操作。
1.啟動mysql:/etc/init.d/mysql start (前面為mysql的安裝路徑)
2.重啟mysql: /etc/init.d/mysql restart (前面為mysql的安裝路徑)
3.關(guān)閉mysql: /etc/init.d/mysql stop(前面為mysql的安裝路徑)
4.連接本機(jī)上的mysql:
mysql -u 用戶名 –p (按回車,再輸入密碼)
例:mysql –u root –p
5.退出mysql:exit
6.修改mysql密碼:
(1)mysqladmin -u用戶名 -p舊密碼 password 新密碼
例:mysqladmin –u root –p 123456 password 654321
(2)進(jìn)入mysql命令行SET PASSWORD FOR 用戶名@主機(jī)=PASSWORD("root");
例:set password for root@localhost=password(“123456”);
(3)修改自己的密碼:
set password=password(“123456”);
7.增加新用戶:
grant 操作 on 數(shù)據(jù)庫.* to 用戶名@登錄主機(jī) identified by "密碼"
例:grant select on yingyu to qiu@localhost indentify by “123456”;
8.建庫:
create database 庫名;
例:create database yingyu;
9.顯示數(shù)據(jù)庫列表: show databases;
10.打開數(shù)據(jù)庫:
use 數(shù)據(jù)庫;
例:use yingyu;
11.刪庫:
drop database 庫名;
例:drop database yingyu;
12.顯示庫中的數(shù)據(jù)表:
show tables;
13.顯示數(shù)據(jù)表的結(jié)構(gòu):
describe 表名;
例:describe student;
14.編碼的修改:
(1)改變整個mysql的編碼格式:
啟動mysql的時候,mysqld_safe命令行加入
--default-character-set=編碼格式
例:--default-character-set=UTF-8
(2)改變某個庫的編碼格式:
在mysql提示符后輸入命令:
alter database 數(shù)據(jù)庫 default character set 編碼格式;
例:alter database student default character set UTF-8;
二、sql常用命令
1.建表:
create table 表名(字段設(shè)定列表);
例:create table student
(stuid char(10) primary key,
name char(20),
grade int(3),
age int(3)
);
2.刪表:
drop table 表名;
例:drop table student;
3.將表中記錄清空:
delete from 表名;
例:delete from student;
4.顯示表中的記錄:
select * from 表名;
例:select * from student;
5.給表改名:
rename table 舊表名 to 新表名;
例:rename table student to people;
6.修改字段屬性:
(1)alter table 表名 change 字段名稱 字段名稱 字段類型 [是否允許非空];
例:alter table student change name newname char(20) null;
(2)alter table 表名稱 modify 字段名稱 字段類型 [是否允許非空];
例:alter table student modify name char(20) null;
7.修改表設(shè)置默認(rèn)字段:
(1)alter table 表名 modify 字段名稱 字段類型 default 默認(rèn)值;
例:alter table student modify name char(10) defalt 7;
(2)alter table 表名 alter 字段名稱 set default value;
例:alter table student alter name set default 7;
8.增加表的一個字段:
alter table 表名 add column 字段名稱 字段類型 (default 默認(rèn)值);
例:alter table student add column sex char(10) (default 1);
9.刪除表的一個字段
alter table 表名 drop column 字段名稱;
例:alter table student drop column name;
10.刪除表主鍵
alter table 表名 drop primary key;
例:alter table student drop primary key;
11.添加新主鍵:
alter table 表名 add primary key(字段);
例:alter table student add primary key(stuid);
12.往表里插入一行數(shù)據(jù):
insert into 表名 values(字段數(shù)據(jù)1,字段數(shù)據(jù)2,•••)
例:insert into student values(‘123’,‘qqqq’,‘80’);
13.往表里插入多行數(shù)據(jù):
insert into 表名 values(字段數(shù)據(jù)1,字段數(shù)據(jù)2,•••) ,(字段數(shù)據(jù)1,字段數(shù)據(jù)2,•••),•••;
例:insert into student values(‘123’,‘qqqq’,‘80’),(‘124’,‘yyyy’,‘90’);
14. 修改表的數(shù)據(jù):
update 表名 set 字段名=value where 范圍
例:update student set name=‘qqq1111’ where stuid=‘123’;
15.模糊查詢
select * from 表名 where 字段 like ’%value1%’;
例:select * from student where name like ‘q%’;
16.排序查詢:
select * from 表名 order by 字段名1,字段名2 [desc]
例:selec * from student order by grade;(升序)
select * from student order by grade desc;(降序)
17.左連接查詢:
select 表1.字段1,表1.字段2,表2.字段1,表2.字段2 from 表1 left (outer) join 表2 on 表1.字段=表2.字段;
例:select student.num,student.name,people.name,people.age from student left (outer) join people on student.name=people.name;
18.右連接查詢:
select 表1.字段1,表1.字段2,表2.字段1,表2.字段2 from 表1 right (outer) join 表2 on 表1.字段=表2.字段;
例:select student.num,student.name,people.name,people.age from student right (outer) join people on student.name=people.name;
19.全連接查詢(mySql不支持全連接,所以用左連接union右連接)
select 表1.*,表2.* from 表1 left (outer) join 表2 on 表1.字段=表2.字段 union select表1.*,表2.* from 表1 right (outer) join 表2 on 表1.字段=表2.字段;
例:select s.*,p.* from student s left join people p on s.name = p.name union select s.*,p.* from student s right join people p on s.name = p.name;
20.關(guān)于年份的查詢
例:查詢在1990-1993年之間出生的學(xué)生的全部信息
select * from student where year(Sbirthday)between 1990 and 1993;
查詢在1990年12月5日之前出生的學(xué)生的全部信息
select * from student where birthday < date(‘1990-12-05’);
三、備份與還原
1.備份數(shù)據(jù)庫:
mysqldump –u 用戶名 –p 數(shù)據(jù)庫名 > 保存路徑+文件名;
例:mysqldump –u root –p yingyu > /home/yingyu/yingyu.sql;
2.還原數(shù)據(jù)庫:
mysql –u 用戶名 –p 數(shù)據(jù)庫名 < 文件路徑+文件名;
例:mysql –u root –p yingyu < /home/yingyu/yingyu.sql;
3.直接將MySQL數(shù)據(jù)庫壓縮備份
mysqldump –u 用戶名 –p 數(shù)據(jù)庫名 | gzip > 保存路徑+文件名
例:mysqldump –u root –p yingyu | gzip > /home/yingyu/yingyu.sql.gz;
4.還原壓縮的Mysql數(shù)據(jù)庫
gunzip < 文件路徑+文件名 | mysql –u 用戶名 –p 數(shù)據(jù)庫名
例:gunzip < /home/yingyu/yingyu.sql.gz | mysql –u root –p yingyu;
5.備份數(shù)據(jù)庫中的某些表:
mysqldump –u 用戶名 –p 數(shù)據(jù)庫名 表名1 表名2 > 保存路徑+文件名
例:mysqldump –u root –p yingyu student > /home/yingyu/yingyu.sql;
6.備份數(shù)據(jù)庫中的某些數(shù)據(jù)庫:
mysqldump –u 用戶名 –p –B 庫1 庫2 > 保存路徑+文件名
例:mysqldump –u root –p –B yingyu1 yingyu2>/home/yingyu/yingyu.sql;
7.還原數(shù)據(jù)庫中的某些數(shù)據(jù)庫:
mysqldump –u 用戶名 –p –D 庫1 庫2 < 文件路徑 + 文件名;
例:mysqldump–u root –p–D qiuyingyu yingyu</home/yingyu/yingyu.sql;
8.還原數(shù)據(jù)庫中的某些表:
mysql –u 用戶名 –p 數(shù)據(jù)庫名 < 保存路徑+表文件名
例:mysql –u root –p yingyu < /home/yingyu/yingyu.sql;