日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

數(shù)據(jù)庫

 印度阿三17 2019-03-10
1 .數(shù)據(jù)庫的優(yōu)勢:
1.程序的穩(wěn)定性:任意一臺服務(wù)所在的機器崩潰了都不會影響數(shù)據(jù)的和另外的服務(wù)
2.數(shù)據(jù)一致性: 所有的數(shù)據(jù)都存儲在一起,所有的程序操作的數(shù)據(jù)都是統(tǒng)一的
3.并發(fā):數(shù)據(jù)庫可以良好的支持并發(fā)
4.效率;使用數(shù)據(jù)對數(shù)據(jù)的進行增刪改查的效率要高出我們自己處理文件很多

2 .數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)管理系統(tǒng),數(shù)據(jù)庫,表與記錄的關(guān)系:
記錄: 1 朱哥 123456789 22 (多個字段組成的一條記錄,即文件的一行內(nèi)容)
表: 即文件
數(shù)據(jù)庫: database(文件夾)
數(shù)據(jù)庫管理系統(tǒng) : mysql (是一個軟件)
數(shù)據(jù)庫服務(wù)器: 相當于一臺電腦
總結(jié):
數(shù)據(jù)庫服務(wù)器:運行數(shù)據(jù)庫管理軟件的機器
數(shù)據(jù)庫管理軟件: 管理數(shù)據(jù)庫
數(shù)據(jù)庫:即文件夾,用來組織文件/表
表:文件,用來存放多行記錄/數(shù)據(jù)
3 .數(shù)據(jù)庫的分類:關(guān)系型數(shù)據(jù)庫 和非關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫:需要表結(jié)構(gòu)
mysql ,oracle ,SQL server, db2
非關(guān)系型數(shù)據(jù)庫:不需要表結(jié)構(gòu)
redis ,mongodb,memcache
4 . mysql
mysql是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在wed應(yīng)用方面是最好的RDBMS應(yīng)用軟件
體積小,速度快,成本低,開放源碼,一般適合中小型網(wǎng)站的開發(fā)

5 .sql語句
關(guān)于用戶,權(quán)限,遠程登錄
select user(); 查看當前用戶
exit 退出 也可以用quit or \q
mysql -uroot -p 使用管理員賬戶登錄
set password = password('root') 給當前數(shù)據(jù)庫設(shè)置密碼

create user '用戶名'@'ip地址' identified by '密碼'
創(chuàng)建用戶和密碼 必須要包含ip地址
create user '用戶'@'ip地址'
指定某個機器可以連上
create 'user'@'ip'%'
所有的機器都可以連接
show grants for '用戶名'%'ip地址';
查看某個用戶的權(quán)限
mysql -u用戶名 -p密碼 -hIP地址
遠程登陸

grant all on *.* to '用戶名'@'ip地址' 給賬號授權(quán)
flush privileges; 刷新使授權(quán)立即生效
grant all on 數(shù)據(jù)庫.表名 '用戶名'@'ip地址' identified by '123'
創(chuàng)建賬號 并給其授權(quán)
enum(選擇1,選擇2):必須二選一
set(選擇1,選擇2,選擇3):多選

關(guān)于操作庫的:
増:create database 庫名 charset utf8;
查:show databases;
改:alter database 庫名 charset utf8;
刪: drop database 庫名;

關(guān)于操作文件(表)的:
先切換到庫中:use 庫名;
増: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中的存儲引擎
innodb myisam memory blackhole
innodb :支持事務(wù),行級鎖,外鍵
mysisam:支持表級鎖
memory: 內(nèi)存級別的存儲引擎
具有緩存的作用
不能完成數(shù)據(jù)的持久化存儲,mysql server重啟后會失效(起到緩存的作用)
blackhole:黑洞 所有的數(shù)據(jù)都會寫入,但是都不會記錄到表中
事務(wù):多個sql語句組成的一個完整的事件,要么一起成功,要么一起失敗
行級鎖:能夠支持更多的修改數(shù)據(jù)的并發(fā)操作 當要修改的行數(shù)非常多的時候,效率也會受到影響
外鍵:在本表中有一個字段 關(guān)聯(lián)外表中的另一個字段
表級鎖:不能支持并發(fā)的修改同一張表的數(shù)據(jù) 不需要加很多細粒度的鎖來浪費時間

查看當前默認的存儲引擎:
show variables like 'default_storage_engine'
查看當前數(shù)據(jù)庫支持的存儲引擎:
show engines \G;

7. 表操作
表相當于文件,表中的一條記錄就相當于文件的一行內(nèi)容,不同的是一條記錄有對應(yīng)的標題,稱為表的字段
查看表結(jié)構(gòu)
desc 表名;
查看標的詳細信息(編碼和存儲引擎)
show create table 表名 \G;

8 . 基礎(chǔ)數(shù)據(jù)類型
整數(shù) int
整型的長度約束 實際上沒有效果
小數(shù) float
float(n,m) 這個數(shù)據(jù)的總長度n,小數(shù)位m
時間格式
now()
year
data
time
datetime 允許為空,沒有默認值,能夠在標識的時間范圍大
timestamp 不允許為空 默認值是當前時間,能夠表示的時間范圍小,超出范圍后表示為
0000-00-00 00:00:00
若同一個表中有兩個該字段,只有第一個字段會被表示為當前默認當前時間
字符串格式
char 定長 存儲相對浪費空間,存儲速度快,不管存儲什么樣的數(shù)據(jù)都會把數(shù)據(jù)的空格在顯示的時候去掉
varchar 變長 相對節(jié)省空間.存儲效率相對慢

9 . 完整性約束
not null :非空約束 指定某列不能為空
unique:唯一約束 指定某列或者幾列的組合不能重復(fù)
primary key:主鍵,指定該列的值可以唯一的標識該列數(shù)據(jù)
foreign key:外鍵,指定該行記錄從屬主表中的一條記錄,主要用于參照完整性
default:默認值
指定unique的幾種方式:
create table t1(id int unique);
create table t1(id int,unique(id));
not null 和 unique連用相當于設(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.在每個字段后設(shè)置 primary key
2.在所有字段后設(shè)置primary key(字段1,字段2)
auto_increament:約束字段自動增長 被約束的字段必須同時被key約束

foreikey:外鍵
設(shè)置外鍵的前提,必須是innodb存儲引擎,且被關(guān)聯(lián)的字段必須是唯一的
一張表只能有一個主鍵,所有的其它非空 唯一都不會成為主鍵還是維持他原來的約束

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可以進行四則運算
select 字段*12 from 表;
可以給字段重新命名
select 字段 as 新字段名 from 表;
格式化函數(shù):concat concat_ws()
concat('自己想拼的內(nèi)容','字段','其他內(nèi)容) #相當于python中的format
concat_ws('_',字段1,字段2) #等同于python中的join
條件判斷:
case
when 條件1 then 字段的操作
when 條件2 then 字段的操作
else 字段的操作
end
where 條件
對表中的數(shù)據(jù)進行一個數(shù)據(jù)篩選
對一個值進行判斷
= < > != >= <=
對一個范圍的判斷
between 小的值 and 大的值
in (值1,值2,值3)
模糊匹配: like 'a%' 'a_'
%是通配符 匹配任意長度的任意內(nèi)容
'a_'匹配以a開頭的字符 _代表一個任意字符
多個條件的拼接
邏輯運算符
and 兩個條件必須都要成立
or 其中一個條件成立即可
not 非
group by分組
select 字段名 from 表 where 條件 group by 字段名
group by 聚合函數(shù)
聚合函數(shù)算出來的結(jié)果 只是代表分組的一組的結(jié)果
order by 排序 默認升序 后加上desc就是降序
linit(n,m)從n開始到到去m個值


select distinct 要篩選的字段 from 表
where 條件
group by 分組
having 過濾
order by 排序
limit 取從m開始的前n個
12. 多表查詢
連表查詢
表的笛卡爾積
內(nèi)連接(inner join) :只有兩張表中條件互相匹配的項才能被顯示出來
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

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多