1 .數(shù)據(jù)庫(kù)的優(yōu)勢(shì): 1.程序的穩(wěn)定性:任意一臺(tái)服務(wù)所在的機(jī)器崩潰了都不會(huì)影響數(shù)據(jù)的和另外的服務(wù) 2.數(shù)據(jù)一致性: 所有的數(shù)據(jù)都存儲(chǔ)在一起,所有的程序操作的數(shù)據(jù)都是統(tǒng)一的 3.并發(fā):數(shù)據(jù)庫(kù)可以良好的支持并發(fā) 4.效率;使用數(shù)據(jù)對(duì)數(shù)據(jù)的進(jìn)行增刪改查的效率要高出我們自己處理文件很多
2 .數(shù)據(jù)庫(kù)服務(wù)器,數(shù)據(jù)管理系統(tǒng),數(shù)據(jù)庫(kù),表與記錄的關(guān)系: 記錄: 1 朱哥 123456789 22 (多個(gè)字段組成的一條記錄,即文件的一行內(nèi)容) 表: 即文件 數(shù)據(jù)庫(kù): database(文件夾) 數(shù)據(jù)庫(kù)管理系統(tǒng) : mysql (是一個(gè)軟件) 數(shù)據(jù)庫(kù)服務(wù)器: 相當(dāng)于一臺(tái)電腦 總結(jié): 數(shù)據(jù)庫(kù)服務(wù)器:運(yùn)行數(shù)據(jù)庫(kù)管理軟件的機(jī)器 數(shù)據(jù)庫(kù)管理軟件: 管理數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù):即文件夾,用來組織文件/表 表:文件,用來存放多行記錄/數(shù)據(jù) 3 .數(shù)據(jù)庫(kù)的分類:關(guān)系型數(shù)據(jù)庫(kù) 和非關(guān)系型數(shù)據(jù)庫(kù) 關(guān)系型數(shù)據(jù)庫(kù):需要表結(jié)構(gòu) mysql ,oracle ,SQL server, db2 非關(guān)系型數(shù)據(jù)庫(kù):不需要表結(jié)構(gòu) redis ,mongodb,memcache 4 . mysql mysql是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在wed應(yīng)用方面是最好的RDBMS應(yīng)用軟件 體積小,速度快,成本低,開放源碼,一般適合中小型網(wǎng)站的開發(fā)
5 .sql語(yǔ)句 關(guān)于用戶,權(quán)限,遠(yuǎn)程登錄 select user(); 查看當(dāng)前用戶 exit 退出 也可以用quit or \q mysql -uroot -p 使用管理員賬戶登錄 set password = password('root') 給當(dāng)前數(shù)據(jù)庫(kù)設(shè)置密碼
create user '用戶名'@'ip地址' identified by '密碼' 創(chuàng)建用戶和密碼 必須要包含ip地址 create user '用戶'@'ip地址' 指定某個(gè)機(jī)器可以連上 create 'user'@'ip'%' 所有的機(jī)器都可以連接 show grants for '用戶名'%'ip地址'; 查看某個(gè)用戶的權(quán)限 mysql -u用戶名 -p密碼 -hIP地址 遠(yuǎn)程登陸
grant all on *.* to '用戶名'@'ip地址' 給賬號(hào)授權(quán) flush privileges; 刷新使授權(quán)立即生效 grant all on 數(shù)據(jù)庫(kù).表名 '用戶名'@'ip地址' identified by '123' 創(chuàng)建賬號(hào) 并給其授權(quán) enum(選擇1,選擇2):必須二選一 set(選擇1,選擇2,選擇3):多選
關(guān)于操作庫(kù)的: 増:create database 庫(kù)名 charset utf8; 查:show databases; 改:alter database 庫(kù)名 charset utf8; 刪: drop database 庫(kù)名;
關(guān)于操作文件(表)的: 先切換到庫(kù)中:use 庫(kù)名; 増:create table 表名(id int,name char(15)); 查:show tables; 刪:drop table '表名'; 改:alter table '表名' modify name char(3); 修改字段的數(shù)據(jù)類型 alter table '表名' change '舊字段' '新字段' char(5); 修改字段的名字
關(guān)于文件中的內(nèi)容(記錄): 増:insert into '表名' values (1,'alex1'),(2,'alex2'),(3,'alex3') 查:select 字段 from '表名'; 改:undate 表名 set name = 'sb' where id = 2; undate 表名 set name = 'sb' where id = 2; 刪:delete from '表名' where id =1;
清空表:delete from '表名'
auto_increment 表示:自增 primary key 約束 (not null unique) 不能重復(fù) 不能為空 ;方便查找
6. mysql中的存儲(chǔ)引擎 innodb myisam memory blackhole innodb :支持事務(wù),行級(jí)鎖,外鍵 mysisam:支持表級(jí)鎖 memory: 內(nèi)存級(jí)別的存儲(chǔ)引擎 具有緩存的作用 不能完成數(shù)據(jù)的持久化存儲(chǔ),mysql server重啟后會(huì)失效(起到緩存的作用) blackhole:黑洞 所有的數(shù)據(jù)都會(huì)寫入,但是都不會(huì)記錄到表中 事務(wù):多個(gè)sql語(yǔ)句組成的一個(gè)完整的事件,要么一起成功,要么一起失敗 行級(jí)鎖:能夠支持更多的修改數(shù)據(jù)的并發(fā)操作 當(dāng)要修改的行數(shù)非常多的時(shí)候,效率也會(huì)受到影響 外鍵:在本表中有一個(gè)字段 關(guān)聯(lián)外表中的另一個(gè)字段 表級(jí)鎖:不能支持并發(fā)的修改同一張表的數(shù)據(jù) 不需要加很多細(xì)粒度的鎖來浪費(fèi)時(shí)間
查看當(dāng)前默認(rèn)的存儲(chǔ)引擎: show variables like 'default_storage_engine' 查看當(dāng)前數(shù)據(jù)庫(kù)支持的存儲(chǔ)引擎: show engines \G;
7. 表操作 表相當(dāng)于文件,表中的一條記錄就相當(dāng)于文件的一行內(nèi)容,不同的是一條記錄有對(duì)應(yīng)的標(biāo)題,稱為表的字段 查看表結(jié)構(gòu) desc 表名; 查看標(biāo)的詳細(xì)信息(編碼和存儲(chǔ)引擎) show create table 表名 \G;
8 . 基礎(chǔ)數(shù)據(jù)類型 整數(shù) int 整型的長(zhǎng)度約束 實(shí)際上沒有效果 小數(shù) float float(n,m) 這個(gè)數(shù)據(jù)的總長(zhǎng)度n,小數(shù)位m 時(shí)間格式 now() year data time datetime 允許為空,沒有默認(rèn)值,能夠在標(biāo)識(shí)的時(shí)間范圍大 timestamp 不允許為空 默認(rèn)值是當(dāng)前時(shí)間,能夠表示的時(shí)間范圍小,超出范圍后表示為 0000-00-00 00:00:00 若同一個(gè)表中有兩個(gè)該字段,只有第一個(gè)字段會(huì)被表示為當(dāng)前默認(rèn)當(dāng)前時(shí)間 字符串格式 char 定長(zhǎng) 存儲(chǔ)相對(duì)浪費(fèi)空間,存儲(chǔ)速度快,不管存儲(chǔ)什么樣的數(shù)據(jù)都會(huì)把數(shù)據(jù)的空格在顯示的時(shí)候去掉 varchar 變長(zhǎng) 相對(duì)節(jié)省空間.存儲(chǔ)效率相對(duì)慢
9 . 完整性約束 not null :非空約束 指定某列不能為空 unique:唯一約束 指定某列或者幾列的組合不能重復(fù) primary key:主鍵,指定該列的值可以唯一的標(biāo)識(shí)該列數(shù)據(jù) foreign key:外鍵,指定該行記錄從屬主表中的一條記錄,主要用于參照完整性 default:默認(rèn)值 指定unique的幾種方式: create table t1(id int unique); create table t1(id int,unique(id)); not null 和 unique連用相當(dāng)于設(shè)置主鍵 聯(lián)合唯一: create table t1(id int,name char(5),age int(3),unique(id,name) primary key:主鍵 單字段主鍵 1.not null unique 2.在某一字段后加primary key 3.在所有字段后加上primary key(字段) 4.給已經(jīng)建成的字段設(shè)置主鍵 alter table t1 modify id int primary key 多字段主鍵: 1.在每個(gè)字段后設(shè)置 primary key 2.在所有字段后設(shè)置primary key(字段1,字段2) auto_increament:約束字段自動(dòng)增長(zhǎng) 被約束的字段必須同時(shí)被key約束
foreikey:外鍵 設(shè)置外鍵的前提,必須是innodb存儲(chǔ)引擎,且被關(guān)聯(lián)的字段必須是唯一的 一張表只能有一個(gè)主鍵,所有的其它非空 唯一都不會(huì)成為主鍵還是維持他原來的約束
10. 修改表結(jié)構(gòu): 修改表名: alter table 表名 rename 新表名; 增加字段: alter table 表名 add 字段名 數(shù)據(jù)類型; 刪除字段: alter table 表名 drop 字段名; 修改字段: alter table 表名 modify 字段名 數(shù)據(jù)類型;modify 修改字段的類型和數(shù)據(jù)類型 alter table 表名 change 字段名 新的字段名 舊的數(shù)據(jù)類型 alter table 表名 change 字段名 新的字段名 新的數(shù)據(jù)類型 11. 查數(shù)據(jù) select 字段 from 表名 單表查詢: distinct關(guān)鍵字 去重 select distinct 字段名 from 表; select可以進(jìn)行四則運(yùn)算 select 字段*12 from 表; 可以給字段重新命名 select 字段 as 新字段名 from 表; 格式化函數(shù):concat concat_ws() concat('自己想拼的內(nèi)容','字段','其他內(nèi)容) #相當(dāng)于python中的format concat_ws('_',字段1,字段2) #等同于python中的join 條件判斷: case when 條件1 then 字段的操作 when 條件2 then 字段的操作 else 字段的操作 end where 條件 對(duì)表中的數(shù)據(jù)進(jìn)行一個(gè)數(shù)據(jù)篩選 對(duì)一個(gè)值進(jìn)行判斷 = < > != >= <= 對(duì)一個(gè)范圍的判斷 between 小的值 and 大的值 in (值1,值2,值3) 模糊匹配: like 'a%' 'a_' %是通配符 匹配任意長(zhǎng)度的任意內(nèi)容 'a_'匹配以a開頭的字符 _代表一個(gè)任意字符 多個(gè)條件的拼接 邏輯運(yùn)算符 and 兩個(gè)條件必須都要成立 or 其中一個(gè)條件成立即可 not 非 group by分組 select 字段名 from 表 where 條件 group by 字段名 group by 聚合函數(shù) 聚合函數(shù)算出來的結(jié)果 只是代表分組的一組的結(jié)果 order by 排序 默認(rèn)升序 后加上desc就是降序 linit(n,m)從n開始到到去m個(gè)值
select distinct 要篩選的字段 from 表 where 條件 group by 分組 having 過濾 order by 排序 limit 取從m開始的前n個(gè) 12. 多表查詢 連表查詢 表的笛卡爾積 內(nèi)連接(inner join) :只有兩張表中條件互相匹配的項(xiàng)才能被顯示出來 select 字段 from 表1 inner join 表2 on 表1的關(guān)聯(lián)鍵和表2的關(guān)聯(lián)鍵 外鏈接: 左外鏈接: select * from 表1 left join 表2 on 表1的字段 關(guān)聯(lián) 表2的字段 右外連接: select * from 表1 right join 表2 on 表1的字段 關(guān)聯(lián) 表2的字段 全外連接: select * from 表1 inner join 表2 on 表1的字段 關(guān)聯(lián) 表2的字段 13. 子查詢(效率比連表查詢低) 將條件分開逐步去分析
來源:http://www./content-2-135851.html
|