1. 程式人生 > >淺談資料庫(三)

淺談資料庫(三)

1、SQL查詢
  1、distinct : 不顯示欄位的重複值
    1、語法 :select distinct 欄位1,欄位2 from 表名;
    2、示例
      1、表中都有哪些國家
        select distinct country from sanguo;
      2、表中一共有幾個國家
        select count(distinct country) as n from sanguo;
    3、注意
      1、distinct和from之間的所有欄位值都相同才會去重
  2、查詢表記錄時可以做數學運算
    1、運算子 :+ - * / % 
    2
、示例 1、查詢時顯示所有英雄攻擊力翻倍 select id,name,gongji*2 as new from sanguo; 2、約束 1、作用 :保證資料的一致性、有效性 2、約束分類 1、預設約束(default) 插入記錄時,不給該欄位賦值,則使用預設值 sex enum("M","F","S") default "S", 2、非空約束(not null) 不允許該欄位的值為 NULL id int not null, id int not null default 0, 3
、索引 1、定義 對資料庫中表的一列或多列的值進行排序的一種結構(BTree) 2、優點 加快資料的檢索速度 3、缺點 1、當對錶中資料更新時,索引需要動態維護,降低資料的維護速度 2、索引需要佔用物理儲存空間 4、索引示例 1、開啟執行時間檢測 :mysql> set profiling=1; 2、執行查詢語句 select name from t1 where name="lucy99999"; 3、檢視執行時間 show profiles; 4、在name欄位建立索引 create index name
on t1(name); 5、再次執行查詢語句 select name from t1 where name="lucy100000"; 6、檢視執行時間 show profiles; 5、索引 1、普通索引(index) 1、使用規則 1、可設定多個欄位,欄位值無約束 2、把經常用來查詢的欄位設定為索引欄位 3、KEY標誌 :MUL 2、建立 1、建立表時 create table t1( ..., ..., index(name), index(id)); 2、已有表中 create index 索引名 on 表名(欄位名); 3、檢視索引 1、desc 表名; -->KEY標誌為 MUL 2、show index from 表名\G; 4、刪除index drop index 索引名 on 表名; 2、唯一索引(unique) 1、使用規則 1、可設定多個欄位 2、約束 :欄位值不允許重複,但可以為 NULL 3、KEY標誌 :UNI 2、建立 1、建立表時 unique(phnumber), unique(cardnumber) 2、已有表 create unique index 索引名 on 表名; 3、檢視、刪除同普通索引 刪除 :drop index 索引名 on 表名; 3、主鍵索引(primary key)&&自增長(auto_increment) 1、使用規則 1、只能有1個欄位為主鍵欄位 2、約束 :欄位值不允許重複,也不能為 NULL 3、KEY標誌 :PRI 4、通常設定記錄編號欄位 id,能夠唯一鎖定一條記錄 2、建立 1、建立表時 1id int primary key auto_increment, name varchar(20) not null )auto_increment=10000,charset=utf8,engine=InnoDB; alter table 表名 auto_increment=10000; 2id int auto_increment, name varchar(20), primary key(id) 2、已有表 alter table 表名 add primary key(id); alter table 表名 modify id int auto_increment; 3、刪除主鍵 1、先刪除自增長屬性(modify) alter table 表名 modify id int; 2、刪除主鍵 alter table 表名 drop primary key; 6、資料匯入 1、作用 :把檔案系統中內容匯入到資料庫中 2、語法格式 load data infile "檔名" into table 表名 fields terminated by "分隔符" lines terminated by "\n"; 3、將socreTable.csv匯入到資料庫中 1、在資料庫中建立對應的表 create table score( id int, name varchar(15), score float(5,2), phnumber char(11), class char(7) )character set utf8; 2、執行資料匯入 1、檢視搜尋路徑 show variables like "secure_file_priv"; ## /var/lib/mysql-files 2、拷貝檔案 sudo cp ~/scoreTable.csv /var/lib/mysql-files/ 3、執行資料匯入 load data infile "/var/lib/mysql-files/scoreTable.csv" into table score fields terminated by "," lines terminated by "\n"; 3、Mac本配置搜尋路徑: sudo -i vi my.cnf [mysqld] secure_file_priv="/usr/local/mysql/data/" 系統偏好設定 - 小海豚 - stop - start mysql>show variables like "secure_file_priv"; 7、資料匯出 1、把資料庫表的記錄到處到系統檔案裡 2、語法格式 select ... from 表名 into outfile "檔名" fileds terminated by "分隔符" lines terminated by "\n"; 3、練習 1、把MOSHOU庫下的sanguo表中,英雄的姓名、攻擊值和國家給匯出來,sanguo.csv 1、檢視搜尋路徑 show variables like "%secure%"; 2、執行資料匯出語句 select name,gongji,country from MOSHOU.sanguo into outfile "/var/lib/mysql-files/sanguo.csv" fields terminated by "," lines terminated by "\n"; Error: ... secure_file_priv ... 2、把 mysql 庫下的user表中 user、host的值匯出到系統檔案 user.txt select user,host from mysql.user into outfile "/var/lib/mysql-files/user.txt" fields terminated by " " lines terminated by "\n"; 4、檢視、更改檔案許可權 1、ls -l score.txt - rw- rw- r-- tarena tarena r(4) : 讀 所有者 所屬組 w(2) : 寫 x(1) : 可執行 rw- : 所有者許可權 rw- : 同組其他使用者檔案 r-- : 其他組的使用者許可權 2、chmod 777 score.txt chmod 740 score.txt 8、表的複製 1、語法 create table 表名 select ... from 表名 where 條件; 2、示例 1、複製MOSHOU.sanguo表,sanguo2 create table MOSHOU.sanguo2 select * from MOSHOU.sanguo; 2、複製MOSHOU.sanguo中的idname、country的記錄,sanguo3 create table MOSHOU.sanguo3 select id,name,country from MOSHOU.sanguo; 3、複製MOSHOU.sanguo中的name、country,每頁顯示2條記錄,複製第3頁的內容 create table MOSHOU.sanguo4 select name,country from sanguo limit 4,2; 3、複製表結構 create table 表名 select ... from 表名 where false; 作業: 1、把 /etc/passwd 檔案匯入到資料庫 userinfo tarena : x : 1000 : 1000 : tarena,,,: 使用者名稱 密碼 UID GID 描述 /home/tarena : /bin/bash 主目錄 登入許可權 2、在userinfo表中的第1列新增 id 欄位,主鍵、自增長、顯示寬度為3,位數不夠用0填充 001 002 003 安裝軟體 :sudo apt-get install ... 安裝模組/庫 :sudo pip3 install pymysql 安裝pip :pip-0.9.tar.gz 資料夾 :檔案->setup.py python3 setup.py install