??所謂的數(shù)據(jù)的完整性就是,數(shù)據(jù)的準(zhǔn)確性和可靠性??梢酝ㄟ^添加完整性約束來提高數(shù)據(jù)的完整性:
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),蔚縣企業(yè)網(wǎng)站建設(shè),蔚縣品牌網(wǎng)站建設(shè),網(wǎng)站定制,蔚縣網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,蔚縣網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
主鍵約束
?要求:要求主鍵列數(shù)唯一,并且不能為空,主鍵可以包含表的一列或多列(可以是一個列成為主鍵,也可以是幾個列組合成為主鍵)。盡量不要選擇業(yè)務(wù)數(shù)據(jù)為主鍵。
? 作用:主鍵是唯一能確定一行數(shù)據(jù)的字段。
創(chuàng)建主鍵的三種方式:
#例1:
#創(chuàng)建字段的時候添加約束
create table stu(
id int primary key ,
sname varchar(20));
#例2:
#最后添加約束
create table stu(
id int ,
sname varchar(20),
primary key(id));
#例3
#表已經(jīng)創(chuàng)建,然后添加約束
create table stu(
id int ,
sname varchar(20));
alter table stu add constraint ky_id primary key(id);
ps:如果想加入主鍵自增,只需要在primary key 后面加入:auto_increment
刪除主鍵約束:
#刪除主鍵約束,首先要刪除他的主鍵自增,然后在刪除:
alter table stu modify id int //刪除主鍵自增
alter table stu drop primary key; //刪除主鍵約束
唯一約束
?要求:要求該列唯一,允許為一個空。
#例:
alter table stu add constraint unique(sname)
刪除唯一約束
#在刪除唯一約束時,首先需要刪除索引,因為在創(chuàng)建唯一約束時默認(rèn)會創(chuàng)建一個索引
alter table stu drop index sname
alter table stu drop index 唯一約束名
非空約束
?要求:某類內(nèi)容不允許為空
?語法:name varchar(50) not null
默認(rèn)值
?要求:當(dāng)字段沒有給固定的值得時候,自動賦初值。
?語法:name varchar(50) default ‘zs’;
外鍵約束
?要求:一個表中的某個字段必須與另一張表中的某個字段相等,如果不相等,或者另一張表沒有這個值,則存儲失敗。
?語法:foreign key(表的字段) references 外表名(字段)
#例:添加外鍵約束
alter table table1 add constraint foreign key(需要設(shè)為外鍵的字段) references table2(父表的關(guān)聯(lián)字段)
CREATE TABLE `t_book` (
`bid` int(10) NOT NULL,
`bname` varchar(50) NOT NULL,
`price` double DEFAULT NULL,
`author` varchar(50) DEFAULT NULL,
`authorid` int(10) DEFAULT NULL,
PRIMARY KEY (`bid`),
UNIQUE KEY `author` (`author`)
) ;
??描述:在數(shù)據(jù)庫中用來加速對表的查詢,通過使用快速路徑訪問的方法,快速定位數(shù)據(jù),減少了磁盤的IO。
?類型:B-Tree索引、位圖索引、哈希索引。在不同的存儲引擎中對索引的存儲策略不同:
?? - Myisam引擎:葉子節(jié)點中保存記錄的地址
?? - Innodb引擎:葉子節(jié)點中直接保存相應(yīng)的數(shù)據(jù)。(B+樹索引)
? 索引的優(yōu)點:建立索引可以加快查詢的速度,而降低增、刪、改的效率。
? 索引的創(chuàng)建:索引的創(chuàng)建分為兩種:自動創(chuàng)建和手動創(chuàng)建:
? ? - 自動創(chuàng)建:當(dāng)在表中定義了一個主鍵,或者唯一約束時,數(shù)據(jù)庫會自動的創(chuàng)建一個對應(yīng)的唯一索引。
? ? - 手動創(chuàng)建:
#普通索引
create index index_name on t_name(field)
#唯一索引
create unique index index_name on t_name(field)
#復(fù)合索引
create index index_name on t_name(field1,field2)
?? 索引的使用條件:當(dāng)通過設(shè)置索引的字段作為過濾條件時查詢的語句,才會用到索引。
? 索引的效率:
在查詢時使用:explain select * from emp where ename='scott'; explain關(guān)鍵字用于查看索引的效率:
關(guān)于type的級別:
? 使用索引的注意點:
?? - 索引與表是分開保存的,會占用大量的磁盤空間
?? - 索引改善了檢索數(shù)據(jù)的性能,但是降低了增、刪、改數(shù)據(jù)的性能。
?? - 限制索引中索引數(shù)目。索引越多,數(shù)據(jù)庫的工作量越大
?? - 索引用于數(shù)據(jù)過濾和數(shù)據(jù)排序(表的數(shù)據(jù)量比較大,經(jīng)常使用某些字段做排序和查詢,建立索引)
?? 介紹:視圖是從若干個表和其他視圖中構(gòu)造出來的虛表,并非是以物理文件保存數(shù)據(jù),在執(zhí)行過程中動態(tài)從基表中獲取數(shù)據(jù),以表為底層。
#例:創(chuàng)建視圖
create view v_viem as select * from emp1 where deptno =20;
#修改視圖:
update v_viem set deptno=10;
#查詢視圖
select * from v_viem;
注意:視圖一般不建議進(jìn)行刪除、修改操作,因為他會影響到基表。以上的案例表示:如果修改了創(chuàng)建視圖的條件字段,但是視圖在查詢時還按照原有的條件查詢,會導(dǎo)致查詢的數(shù)據(jù)不準(zhǔn)確。
# 控制視圖 不能修改字段:
CREATE
OR REPLACE VIEW v_emp AS SELECT
*
FROM
emp
WHERE
deptno = 20 WITH CHECK OPTION;
注意:使用上面的方式,創(chuàng)建視圖,如果想對視圖的條件字段進(jìn)行修改,就會出現(xiàn):
1369 - CHECK OPTION failed 'db1807.v_emp',錯誤。
?? 對視圖的操作
#查詢視圖
select * from v_emp;
#在視圖中插入數(shù)據(jù)
insert into v_emp(field1,field2,field3) values(value1,value2,value3)
#重建視圖
create or REPLACE view t_view as select * from emp where sal >2000
#銷毀視圖
drop view view_name
?? 視圖的優(yōu)點:
?? - 安全性:bao保密敏感字段
?? - 提高查詢效率
?? - 定制化SQL:可以將多張表中經(jīng)常被使用的數(shù)據(jù)放置在視圖中,快速查詢。
??本來以為這部分不重要,不,應(yīng)該說不會是自己去操作MySQL的DCL,因為公司都有自己的數(shù)據(jù)庫管理員,咱們使用MySQL都會有特殊的權(quán)限限制,能通過特定的用戶,但是經(jīng)過幾次的安裝集群后發(fā)現(xiàn),最初hadoop平臺搭建的時候,這個MySQL的授權(quán)操作還得自己來,每次都會因為hive初始化元數(shù)據(jù)庫、Azkaban組件安裝糾結(jié)半天。得嘞,自己總結(jié)下吧,以免下次在糾結(jié)。
語法:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
CREATE USER 'hadoop'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'hive'@'192.168.1.101' IDENDIFIED BY '123456';
CREATE USER 'hadoop'@'%' IDENTIFIED BY '123456';
CREATE USER 'hive'@'%' IDENTIFIED BY '';
CREATE USER 'azkaban'@'%';
創(chuàng)建用戶成功后,就可以通過這個用戶登錄:
$mysql -hmysql_host -uhadoop -p123456
刪除用戶:
DROP USER 'username'@'host';
? 只有擁有特定權(quán)限的用戶才能執(zhí)行特定的操作。
語法:
GRANT privileges ON dbname.tableanme TO 'username'@'host';
GRANT SELECT, INSERT ON test.user TO 'hadoop'@'%';
GRANT ALL ON *.* TO 'hadoop'@'%';
GRANT ALL ON maindataplus.* TO 'hadoop'@'%';
授權(quán)之后一般都會刷新該操作:
mysql>flush privileges;
撤銷授權(quán):
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
其中的內(nèi)容與授權(quán)操作類似。
命令:
SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果修改當(dāng)前用戶的密碼則:
SET PASSWORD = PASSWORD("newpassword");
舉例:
SET PASSWORD FOR 'hadoop'@'%' = PASSWORD("123456");
網(wǎng)站欄目:MySQL的進(jìn)階部分
網(wǎng)站網(wǎng)址:http://aaarwkj.com/article18/gppdgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、動態(tài)網(wǎng)站、商城網(wǎng)站、品牌網(wǎng)站建設(shè)、軟件開發(fā)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)