標籤:uniq date col 注意 樣本 sel add 許可權 分享
ParisGabriel 每天堅持手寫 一天一篇 決定堅持幾年 為了夢想為了信仰 開局一張圖 今天接著昨天的說 索引有4種: 普通 索引 :index 唯一索引:unique 主鍵索引:primary key 外鍵索引:foreign key索引查詢命令: show index from 表名\G; Non_Unique:1 :index Non_Unique:0 :unique 外鍵索引(foreign key): 定義:讓當前欄位的值在另一個表的範圍內選擇 文法: foreign key(參考欄位名) references 主表(被參考欄位名) on delete 級聯動作 on update 級聯動作 使用規則: 主表、從表欄位資料類型要一致 主表被參考欄位一般是:主鍵 刪除外鍵: alter table 表名 drop foreign key 外鍵名; 外鍵名查詢:show create table 表名; 級聯動作: cascade 級聯刪除、更新(只限於參考欄位) restrict(預設) 從表有相關記錄,不允許主表操作 set NULL 主表刪除、更新,從表關聯記錄欄位值為NULL 已有表添加外鍵: alter table 表名 add foreign key(參考欄位)reference主表(被參考欄位) on delete ... on update ...表的複製 複製表: create table 表名 select... from where 表名; 表結構: create table 表名 select * from 表名 where false; 注意: 複製表的時候不會把原表的 鍵(key)屬性複製過來 SQL 查詢(進階) 巢狀查詢(子查詢): 定義:把內層查詢結果作為外層的查詢條件 文法格式: select ...from 表名 where 條件(select...);多表查詢: 兩種方式 1. select 欄位名列表 from 表名列表;(笛卡爾積) select * from t1,t2 select t1.name,t2.name from t1,t2; 2. select t1.name,t2.name from t1,t2 where 條件連結查詢: 1.內連結 select 欄位名 from 表1 inner join 表2 on 條件 inner join 表3 on 條件...; 2.外連結 1.左連結 以左表為主顯示查詢結果 select 欄位名 from 表1 left join 表2 on 條件 left join 表3 on 條件...; 2.右連結 以右表為主顯示查詢結果select 欄位名 from 表1 right join 表2 on 條件right join 表3 on 條件...;資料備份: mysqldump 在Linux終端操作 完全備份: mysqldump -u使用者 -p源庫名 > ~/xxx.sql --all-databases 備份所有庫 庫名 備份單個庫 -B 庫1 庫2.. 備份多個庫 庫名 表1 表2... 備份指定庫指定表資料恢複: 恢複單個庫 mysql -uroot -p < 目標庫名 xxx.sql 從所有庫備份中恢複某一個庫(-one-database) mysql -uroot -p --one-database 目標庫名 < xxx.sql 注意: 1.恢複庫時如果恢複到原庫會將表中的資料覆蓋,新增表不會刪除 2.資料恢複時如果恢複的庫不存在,則必須先建立空庫MySQL的賬戶管理: 1.開啟mysql的遠端連線 sudo -i cd /etc/mysql/mysql.conf.d/ subl mysql.cnf #bind-address = 127.0.0.1 注釋掉 /etc/init.d/mysql restart 2.添加授權使用者 用root使用者登入mysql mysql -uroot -p123456 授權: grant 授權列表 on 庫.表 to “使用者名稱“@”%” identified by “密碼” with grant option 許可權列表: all privileges、select、insert 庫.表: *.* 所有庫所有表樣本: 1、添加授權使用者tiger,密碼123,對所有庫的所有表有所有許可權 grant all privileges on *.* to "tiger"@"%" identified by "123" with grant option;
綜合性練習:
綜述:兩張表,一張顧客資訊表customers,一張訂單表orders
1、建立一張顧客資訊表customers,欄位要求如下:
c_id 類型為整型,設定為主鍵,並設定為自增長屬性
c_name 字元類型,變長,寬度為20
c_age 微小整型,取值範圍為0~255(無符號)
c_sex 枚舉類型,要求只能在(‘M‘,‘F‘)中選擇一個值
c_city 字元類型,變長,寬度為20
c_salary 浮點類型,要求整數部分最大為10位,小數部分為2位
在表中任意插入3條記錄,c_name為"Zhangsan","Lisi","Wangwu", c_city盡量寫"Beijing","Shanghai" ......
insert into customers values
(1,"Zhangsan",25,"M","Beijing",8000),
(2,"Lisi",30,"F","Shanghai",10000),
(3,"Wangwu",27,"M","Shenzhen",3000);
2、建立一張訂單表orders,欄位要求如下:
o_id 整型
o_name 字元類型,變長,寬度為30
o_price 浮點類型,整數最大為10位,小數部分為2位
設定此表中的o_id欄位為customers表中c_id欄位的外鍵,更新刪除同步
在表中任意插入5條記錄(注意外鍵限制)
o_name分別為"iphone","ipad","iwatch","mate9","r11",其他資訊自己定
insert into orders values
(1,"iphone",5288),
(1,"ipad",3299),
(3,"mate9",3688),
(2,"iwatch",2222),
(2,"r11",4400);
3、返回customers表中,工資大於4000元,或者年齡小於29歲,滿足這樣條件的前2條記錄
4、把customers表中,年齡大於等於25歲,並且地址是北京或者上海,這樣的人的工資上調15%
5、把customers表中,城市為北京的顧客,按照工資降序排列,並且只返回結果中的第一條記錄
6、選擇工資c_salary最少的顧客的資訊
7、找到工資大於5000的顧客都買過哪些產品的記錄明細
8、刪除外鍵限制
9、刪除customers主鍵限制
1、刪除自增長屬性
2、刪除主鍵限制
Python全棧 MySQL 資料庫 (SQL查詢、備份、恢複、授權)