類型:關(guān)系型數(shù)據(jù)庫(kù)
聯(lián)系類型
數(shù)據(jù)的操作:
數(shù)據(jù)提群烨摇:在數(shù)據(jù)集合中提取感興趣的內(nèi)容湖苞。SELECT
數(shù)據(jù)更新:變更數(shù)據(jù)庫(kù)中的數(shù)據(jù)。INSERT打颤、DELETE、UPDATE
聯(lián)系的類型
一對(duì)一聯(lián)系(1:1)
一對(duì)多聯(lián)系(1:n)
多對(duì)多聯(lián)系(m:n)
1.[數(shù)據(jù)庫(kù)]中的多對(duì)多關(guān)聯(lián)關(guān)系一般需采用中間表的方式處理漓滔,將多對(duì)多轉(zhuǎn)化為兩個(gè)一對(duì)多编饺。
2.通過(guò)表的關(guān)系,來(lái)幫助我們?cè)鯓咏ū硐炻浚◣讖埍怼?/p>
一對(duì)一
一張表的一條記錄一定只能與另外一張表的一條記錄進(jìn)行對(duì)應(yīng)透且,反之亦然。
學(xué)生表:姓名豁鲤,性別秽誊,年齡,身高琳骡,體重锅论,籍貫,家庭住址日熬,緊急聯(lián)系人
其中姓名棍厌、性別、年齡竖席、身高耘纱,體重屬于常用數(shù)據(jù),但是籍貫毕荐、住址和聯(lián)系人為不常用數(shù)據(jù)
如果每次查詢都是查詢所有數(shù)據(jù)束析,不常用的數(shù)據(jù)就會(huì)影響效率,實(shí)際又不用
常用信息表:ID(P)憎亚,姓名员寇,性別,年齡第美,身高蝶锋,體重
不常用信息表:ID(P),籍貫什往,家庭住址扳缕,緊急聯(lián)系人
解決方案:將常用的和不常用的信息分享存儲(chǔ),分成兩張表
不常用信息表和常用信息表别威,保證不常用信息表與常用信息表能夠?qū)?yīng)上:找一個(gè)具有唯一性的
字段來(lái)共同連接兩張表躯舔。
一個(gè)常用表中的一條記錄永遠(yuǎn)只能在一張不常用表中匹配一條記錄,反之亦然省古。</pre>
一對(duì)多
一張表中有一條記錄可以對(duì)應(yīng)另外一張表中的多條記錄粥庄;但是反過(guò)來(lái),另外一張表的一條記錄
只能對(duì)應(yīng)第一張表的一條記錄豺妓,這種關(guān)系就是一對(duì)多或多對(duì)一
母親與孩子的關(guān)系:母親惜互,孩子兩個(gè)實(shí)體
母親表:ID(P),名字,年齡科侈,性別
孩子表:ID(P),名字载佳,年齡,性別
以上關(guān)系:一個(gè)媽媽可以在孩子表中找到多條記錄(也可能是一條)臀栈,但是一個(gè)孩子只能找到一個(gè)媽媽
是一種典型的一對(duì)多的關(guān)系蔫慧。
但是以上設(shè)計(jì):解決了實(shí)體的設(shè)計(jì)表問(wèn)題,但是沒(méi)有解決關(guān)系問(wèn)題权薯,孩子找不到母親姑躲,母親也找不到孩子
解決方案:在某一張表中增加一個(gè)字段,能夠找到另外一張表中的記錄:在孩子表中增加一個(gè)字段
指向母親表盟蚣,因?yàn)楹⒆颖淼挠涗浿荒芷ヅ涞揭粭l母親表的記錄黍析。
母親表:ID(P),名字,年齡屎开,性別
孩子表:ID(P),名字阐枣,年齡,性別,母親表ID(母親表主鍵)</pre>
多對(duì)多
一對(duì)表中(A)的一條記錄能夠?qū)?yīng)另外一張表(B)中的多條記錄蔼两;同時(shí)B表中的一條記錄
也能對(duì)應(yīng)A表中的多條記錄
老師和學(xué)生
老師表 T_ID(P),姓名甩鳄,性別
學(xué)生表 S_ID(P),姓名,性別
以上設(shè)計(jì)方案:實(shí)現(xiàn)了實(shí)體的設(shè)計(jì)额划,但是沒(méi)有維護(hù)實(shí)體的關(guān)系
一個(gè)老師教過(guò)多個(gè)學(xué)生妙啃,一個(gè)學(xué)生也被多個(gè)老師教過(guò)
解決方案:增加一張中間關(guān)系表
老師與學(xué)生的關(guān)系表:ID(P),T_ID,S_ID
老師表與中間表形成一對(duì)多的關(guān)系,而中間表是多表俊戳;維護(hù)了能夠唯一找到一表的關(guān)系揖赴;
同樣的學(xué)生表與中間表也是一個(gè)一對(duì)多的關(guān)系;
學(xué)生找老師:找出學(xué)生ID--->中間表尋找匹配記錄(多條)--->老師表匹配(一條)
老師找學(xué)生:找出老師ID--->中間表尋找匹配記錄(多條)--->學(xué)生表匹配(一條)</pre>
yum -y install mariadb mariadb-server yum安裝
提高安全性
mysql_secure_installation
設(shè)置數(shù)據(jù)庫(kù)管理員root口令
禁止root遠(yuǎn)程登錄
刪除anonymous用戶帳號(hào)
刪除test數(shù)據(jù)庫(kù)
mariadb版本 5.5.65-MariaDB MariaDB Server
create database yangt character set utf8mb4; 建庫(kù)時(shí)指定字符類型 ,避免出現(xiàn)亂碼
MariaDB [(none)]> create database yang; 默認(rèn)建庫(kù)
查看支持所有字符集:SHOW CHARACTER SET
MariaDB [(none)]> show create database yang;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| yang | CREATE DATABASE `yang` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> create database yangt character set utf8mb4; 指定字符編碼類型
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show create database yangt;
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| yangt | CREATE DATABASE `yangt` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
MariaDB [(none)]> show databases; 查看所有庫(kù)
+--------------------+
| Database |
+--------------------+
| information_schema |
| hellodb |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)
MariaDB [(none)]> use hellodb 進(jìn)入庫(kù)
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [hellodb]> show tables; 查看庫(kù)中所有表
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes |
| coc |
| courses |
| scores |
| students |
| teachers |
| toc |
+-------------------+
7 rows in set (0.00 sec)
union 縱向合并多表查詢
字段數(shù)一樣 字段次序數(shù)據(jù)類型相匹配;例
MariaDB [hellodb]> select stuid,name,age,gender from students union select * from teachers;
+-------+---------------+-----+--------+
| stuid | name | age | gender |
+-------+---------------+-----+--------+
| 1 | Shi Zhongyu | 22 | M |
| 2 | Shi Potian | 22 | M |
| 3 | Xie Yanke | 53 | M |
| 4 | Ding Dian | 32 | M |
| 5 | Yu Yutong | 26 | M |
| 6 | Shi Qing | 46 | M |
| 7 | Xi Ren | 19 | F |
| 8 | Lin Daiyu | 17 | F |
| 9 | Ren Yingying | 20 | F |
| 10 | Yue Lingshan | 19 | F |
| 11 | Yuan Chengzhi | 23 | M |
| 12 | Wen Qingqing | 19 | F |
| 13 | Tian Boguang | 33 | M |
| 14 | Lu Wushuang | 17 | F |
| 15 | Duan Yu | 19 | M |
| 16 | Xu Zhu | 21 | M |
| 17 | Lin Chong | 25 | M |
| 18 | Hua Rong | 23 | M |
| 19 | Xue Baochai | 18 | F |
| 20 | Diao Chan | 19 | F |
| 21 | Huang Yueying | 22 | F |
| 22 | Xiao Qiao | 20 | F |
| 23 | Ma Chao | 23 | M |
| 24 | Xu Xian | 27 | M |
| 25 | Sun Dasheng | 100 | M |
| 1 | Song Jiang | 45 | M |
| 2 | Zhang Sanfeng | 94 | M |
| 3 | Miejue Shitai | 77 | F |
| 4 | Lin Chaoying | 93 | F |
內(nèi)連接:
等值連接:讓表之間的字段以“等值”建立連接關(guān)系抑胎;
不等值連接
自然連接:去掉重復(fù)列的等值連接
自連接
左外連接:
FROM tb1 LEFT JOIN tb2 ON tb1.col=tb2.col
右外連接
FROM tb1 RIGHT JOIN tb2 ON tb1.col=tb2.col
創(chuàng)建視圖
MariaDB [hellodb]> create view view_oldstudents as select * from students where age >30;
視圖無(wú)法添加和刪除 基于原表生成
MariaDB [hellodb]> drop view view_oldstudents; 刪除
權(quán)限:
create user test@'192.168.50.%' identified by '12321'; 此網(wǎng)段可用test遠(yuǎn)程訪問(wèn)數(shù)據(jù)庫(kù)
禁用反向解析
[root@localhost etc]# vim my.cnf
[mysqld]
skip_name_resolve 禁用反向解析
skip_grant_tables 登錄密碼忽略檢測(cè)
skip-networking 僅本地登錄
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
刪除用戶
MariaDB [mysql]> select user,host,password from user;
+------+--------------+-------------------------------------------+
| user | host | password |
+------+--------------+-------------------------------------------+
| root | localhost | *A547BD3AD0B17ADE3A90D1A14559C13B22E0946A |
| root | 127.0.0.1 | *A547BD3AD0B17ADE3A90D1A14559C13B22E0946A |
| root | ::1 | *A547BD3AD0B17ADE3A90D1A14559C13B22E0946A |
| test | 192.168.50.% | *045C8A3B828B8D7674941C5D03E5961BAB546F9A |
+------+--------------+-------------------------------------------+
4 rows in set (0.00 sec)
MariaDB [mysql]> drop user 'test'@'192.168.50.%';
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> select user,host,password from user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *A547BD3AD0B17ADE3A90D1A14559C13B22E0946A |
| root | 127.0.0.1 | *A547BD3AD0B17ADE3A90D1A14559C13B22E0946A |
| root | ::1 | *A547BD3AD0B17ADE3A90D1A14559C13B22E0946A |
+------+-----------+-------------------------------------------+
3 rows in set (0.00 sec)
mysql> grant all on retl.* to test@'192.168.50.%'; 為test用戶賦予retl庫(kù)的所有權(quán)限燥滑。
權(quán)限 | 權(quán)限級(jí)別 | 權(quán)限說(shuō)明 |
---|---|---|
create | 數(shù)據(jù)庫(kù)、表或索引 | 創(chuàng)建數(shù)據(jù)庫(kù)阿逃、表或索引權(quán)限 |
drop | 數(shù)據(jù)庫(kù)或表 | 刪除數(shù)據(jù)庫(kù)或表權(quán)限 |
grant option | 數(shù)據(jù)庫(kù)突倍、表或保存的程序 | 賦予權(quán)限選項(xiàng) |
references | 數(shù)據(jù)庫(kù)或表 | 外鍵權(quán)限 |
alter | 表 | 更改表,比如添加字段盆昙、索引羽历、修改字段等 |
delete | 表 | 刪除數(shù)據(jù)權(quán)限 |
index | 表 | 索引權(quán)限 |
insert | 表 | 插入權(quán)限 |
select | 表 | 查詢權(quán)限 |
update | 表 | 更新權(quán)限 |
create view | 視圖 | 創(chuàng)建視圖權(quán)限 |
show view | 視圖 | 查看視圖權(quán)限 |
alter routine | 存儲(chǔ)過(guò)程 | 更改存儲(chǔ)過(guò)程權(quán)限 |
create routine | 存儲(chǔ)過(guò)程 | 創(chuàng)建存儲(chǔ)過(guò)程權(quán)限 |
execute | 存儲(chǔ)過(guò)程 | 執(zhí)行存儲(chǔ)過(guò)程權(quán)限 |
file | 服務(wù)器主機(jī)上的文件訪問(wèn) | 文件訪問(wèn)權(quán)限 |
create temporary tables | 服務(wù)器管理 | 創(chuàng)建臨時(shí)表權(quán)限 |
lock tables | 服務(wù)器管理 | 鎖表權(quán)限 |
create user | 服務(wù)器管理 | 創(chuàng)建用戶權(quán)限 |
proccess | 服務(wù)器管理 | 查看進(jìn)程權(quán)限 |
reload | 服務(wù)器管理 | 執(zhí)行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的權(quán)限 |
replication client | 服務(wù)器管理 | 復(fù)制權(quán)限 |
replication slave | 服務(wù)器管理 | 復(fù)制權(quán)限 |
show databases | 服務(wù)器管理 | 查看數(shù)據(jù)庫(kù)權(quán)限 |
shutdown | 服務(wù)器管理 | 關(guān)閉數(shù)據(jù)庫(kù)權(quán)限 |
super | 服務(wù)器管理 | 執(zhí)行kill線程權(quán)限 |
mysql> revoke delete on retl.* from test@'192.168.50.%'; 去除刪除權(quán)限
Query OK, 0 rows affected (0.02 sec)
mysql> show grants for test@'192.168.50.%'; 查看用戶擁有的權(quán)限
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for test@192.168.50.% |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'192.168.50.%' |
| GRANT SELECT, INSERT, UPDATE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `retl`.* TO 'test'@'192.168.50.%' |
| GRANT ALL PRIVILEGES ON `mysql`.`db_erp_new` TO 'test'@'192.168.50.%' |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
優(yōu)化