昨天的補充:
在將資料檔案匯入資料庫之前,要先將其複製到該安全路徑;
若匯入的是sql檔案,則用語句 source *.sql;
1、匯出資料(該路徑下不能有同名檔案)
select 列1,列2,列3 into outfile '路徑名' from 表名;
select name,age,dep into outflie into '/var/lib/mysql-files/out.txt' from employee;
2、備份
mysqldump -u root 資料庫名 > 備份檔案名;
mysqldump -u root 資料庫名 表名 > 備份檔案名;
3、恢復
mysql -u root 空資料庫 < 備份的sql檔案;
例:mysql -u root test < bak.sql;
4、mysql裡的提示符(抄的)
mysql>
準備好接受新命令
->
等待多行命令的下一行
'>
等待以單引號開始的字串
">
等待以雙引號開始的字串
`>
等待以反斜點開始的識別符
/*>
等待以 /* 開始的注釋語句
5、sql語句中的關鍵字是不區分大小寫的,但是建議全部用大寫(?);
6、建立乙個表
create table emlpoyee (e_id int(5),e_name varchar(20),age int(3));
7、插入新資料
insert into employee values ('01100','diane','34');
8、查詢資料
select * from pet where species = 'dog' and *** = 'f';
select name, species, birth from pet where species = 'dog' or species = 'cat';
select name, birth from pet order by birth desc;
select name, species, birth from pet order by species, birth desc;
預設排序是公升序,也就是最小的值排在第一。要想以降序排序,在你正在排序的列名旁邊增加desc
(降序 )關鍵字
注意desc關鍵字僅適用於在它前面的列名(birth);不影響species列的排序順序。
9、使用函式timestampdiff()可以
計算當前日期的年和出生日期之間的差也可以按照直接使用語句(year(curdate())-year(birth))
計算,其中函式curdate()
是計算當前的日期。如果當前日期的日曆年比出生日期早,則減去一年。
(2)mysql提供的模式匹配的其它型別是使用擴充套件正規表示式。select name, birth, curdate(),
提取日期最右面5個字元的timestampdiff(year,birth,curdate())
as age
from pet order by name;
select name, birth, curdate(),
(year(curdate()) - year(birth))
- (right(curdate(),5)right()
mm-dd
(月份和日期)部分。mm-dd
值的表示式部分的值一般為1
或0;
mysql提供幾個日期方面的提取函式,例如
year()
、month()
和dayofmonth()
。10、關於null值
*不能使用算術比較操作符例如
=
、<
或!=等。
*只能使用 1 is null 或者 1 is not null ,結果是1或者0;
*執行
order by
語句排序時,如果執行order by ... asc
,則null
值出現在最前面,若執行order by ... desc
,則null
值出現在最後面。有的字段是 not null約束,可以在該列內插入
0
或空字串,因為它們實際是not null
。11、模式匹配
(1)sql模式匹配允許你使用「_」匹配任何單個字元,而「%」匹配任意數目字元(包括零字元)。
注意使用sql模式時,不能使用
=
或!=
;而應使用like
或not like
比較操作符。
select * from employee where name like 'b%';//找出所有名字以b開頭的資料
select * from employee where name like '%w%';//要想找出包含「w」的名字:
select * from employee where name like '_____';//要想找出正好包含5個字元的名字,使用「_」模式字元:
使用regexp
和not regexp
操作符(或rlike
和not rlike
,它們是同義詞)。
擴充套件正規表示式的一些字元是:
*regexp
模式與被測試值的任何地方匹配,模式就匹配(這不同於like
模式匹配,只有與整個值匹配,模式才匹配)。
*為了定位乙個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用「^」或在模式的結尾用「$」。
*要實現強制查詢小寫 則在'^b'前面加上binary,
*為了找出包含正好5個字元的名字,使用「^」和「$」匹配名字的開始和結尾,和5個「.」例項在兩者之間:
*可以使用「」重複n次操作符,重寫前面的查詢:
select * from pet where name regexp '^b';//名字以b或b開頭的資料
select * from pet where name regexp binary '^b';//名字以b開頭的資料
select * from pet where name regexp 'fy$';//名字以fy結尾的資料
select * from pet where name regexp '^.....$';//查詢只有5個字元的名字
select * from pet where name regexp '^.$';
select * from pet where name regexp 'w';//查詢名字包含w的資料
12、計算行數
select count(*) from employee;//有多少職員
select dep,count(*) from employee group by dep;//每個部門有多少人
select species, ***, count(*) from pet group by species, ***;//按種類和性別組合分類的動物數量
資料庫索引小記
資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。索引的實現通常使用b樹及其變種b 樹。b tree中一次檢索最多需要h 1次i o 根節點常駐記憶體 漸進複雜度為o h o logdn 一般實際應用中,出度d是非常大的數字,通常超過100,因此h非常小 通常不超...
資料庫效能優化學習小記
看了 構建高效能web站點 的資料庫效能優化,來寫一下學習筆記 索引類似於書籍目錄裡的章節 建立合適的索引是我們自己的事情 組合索引即先查詢哪一章再查詢哪一節,不至於找到某一章之後進行掃瞄,浪費時間 組合索引的 在應該使用全表掃瞄的時候使用了索引掃瞄,將導致時間的大量浪費 使用慢查詢分析工具,找出用...
django 之資料庫小記
django admin.py startproject learn models 新建乙個專案 cd learn models 進入到該項目的資料夾django 預設使用的sqllite,如果要在專案中使用mysql,需要安裝新的模組,比如mysqlclient,或者pymysql,貌似mac上使...