2019 01 22學習資料庫小記

2021-09-10 03:32:44 字數 3849 閱讀 9163

昨天的補充:

在將資料檔案匯入資料庫之前,要先將其複製到該安全路徑;

若匯入的是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()是計算當前的日期。如果當前日期的日曆年比出生日期早,則減去一年。

select name, birth, curdate(),

timestampdiff(year,birth,curdate())

as age

from pet order by name;

select name, birth, curdate(),

(year(curdate()) - year(birth))

- (right(curdate(),5)right()提取日期最右面5個字元的mm-dd(月份和日期)部分。mm-dd值的表示式部分的值一般為10;

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模式時,不能使用=!=;而應使用likenot like比較操作符。

select * from employee where name like 'b%';//找出所有名字以b開頭的資料

select * from employee where name like '%w%';//要想找出包含「w」的名字:

select * from employee where name like '_____';//要想找出正好包含5個字元的名字,使用「_」模式字元:

(2)mysql提供的模式匹配的其它型別是使用擴充套件正規表示式。

使用regexpnot regexp操作符(或rlikenot 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上使...