数据库初识--从MySQL 出发
要學(xué)Web 開(kāi)發(fā),也得先對(duì)數(shù)據(jù)庫(kù)有所了解呀。數(shù)據(jù)庫(kù)分門別類,多種多樣,目前我選擇了 MySQL 。
? 看了 MySQL,覺(jué)得數(shù)據(jù)庫(kù)處理也不是很難,主要就是一些對(duì)數(shù)據(jù)的處理,MySQL 主要就是一些命令的運(yùn)用。
? 看過(guò)了,怕忘了吧,得及時(shí)記錄下來(lái)。
?
? 數(shù)據(jù)庫(kù)基礎(chǔ)
? (1)數(shù)據(jù)模型--有三類
?????????? 層次模型 :用樹(shù)形結(jié)構(gòu)來(lái)表示實(shí)體及其之間的模型。
???????????網(wǎng)狀模型: 以實(shí)體型為節(jié)點(diǎn)的有向圖表示各實(shí)體及其之間聯(lián)系的模型。
?????????? 關(guān)系模型: 用二維表格表示實(shí)體及其相互關(guān)系的模型。
?
??????????? 前兩模型較不常見(jiàn),所以主要考慮 關(guān)系模型。
?
?? (2)關(guān)系數(shù)據(jù)庫(kù)
?????????? 關(guān)系是一個(gè)帶有屬性的表,這個(gè)表稱為關(guān)系表,一組表組成一 數(shù)據(jù)庫(kù)。
?????????? 表由行和列組成,其行稱為元組,列稱為屬性。
?????????? 屬性的取值范圍稱為域,行稱為記錄。
??? (3)鍵的選用
?????????? 主鍵(Primary Key)? 組合鍵 (Concatenated Key) 候選鍵 (Candidate Key) 外鍵 (Foreign Key)
????????? 這些鍵的具體區(qū)別我還是看不懂啊.....看來(lái)還要多理解理解.....
?????(4)關(guān)聯(lián)類型
??????????? 一對(duì)一??? 一對(duì)多??? 多對(duì)多??
?????(5) 最后還有 第一二三范式??? 實(shí)體/參照/域完整性? 主鍵/唯一/外鍵/默認(rèn)約束? 等等.......也不多說(shuō)了..
?
********************************************華麗分割線************************************************************
?
?
??? MySQL? 主要命令
?? (大小寫(xiě)不區(qū)分)
???? MySQL 的數(shù)值類型有:
??? ?整型: tinyint? smallint? mediumint? bigint?? ;?? 浮點(diǎn)型 : float? double? decimal? ;
?????MySQL 還有數(shù)據(jù)字段修飾符:
?????? 自動(dòng)增量設(shè)置? auto_increment?? :? create table book(id int auto_increment,name varchar(15));
??????然后插入數(shù)據(jù)? insert into book (id,name) values("1","book1"); insert into book(bame) values("book2"); 則 id 會(huì)自動(dòng)自增。
自動(dòng)補(bǔ)齊前導(dǎo) 0?? zerofill : create table book(id int(3) zerofill,name char(20)); 再插入如上..id 就會(huì)變?yōu)?001 之類的.
另外還有兩個(gè)類型: blob 和 text 通常保存較大文本,但前者可以保存二進(jìn)制文件(如圖片?)。
??????????????????????????????? 同樣也有? tinyblob? blob? mediumblob? longblob? tinytext? text mediumtext? longtext
??????????????????????????????? 還有 enum 類型和 set 類型,恕我還沒(méi)弄懂這倆貨..暫時(shí)不說(shuō)了...
??????????????????????????????? 還有那些跟時(shí)間日期相關(guān)的方法,規(guī)則也挺多,也跳過(guò)吧..
??
??????????? ??例如創(chuàng)建 books 數(shù)據(jù)庫(kù) :create database books;???
?????????????????????查看數(shù)據(jù)庫(kù)大綱信息:show databases;
???????????? 創(chuàng)建新用戶 user1并分配權(quán)限 select (他使用密碼? "passwd",密碼可選可不選) :
???????????? grant select on?*.* to user1 identified by "passwd" with grant option;
???????????? 查看用戶權(quán)限: show grants for user1;?
???????????? 撤銷用戶權(quán)限:revoke select on *.* from user1;
?????????????要選擇某數(shù)據(jù)庫(kù)(books):use books;? ----> (選擇了才能操作它里面的表)? 查看數(shù)據(jù)庫(kù)表: show tables;
??????????? 創(chuàng)建數(shù)據(jù)庫(kù)表(book) : create table book(id int,name varchar(15),price varchar(10));
??????? ???其中 前一項(xiàng)是屬性,后一項(xiàng)是對(duì)應(yīng)類型,varchar(15) 和char(15)差不多,只是后者固定了15個(gè)空間。
?????????? 為表中插入值 :insert into book values(1 book1 10,2 book2 30);
?????????? 查看某特定表(book)信息 : describe book;
????????????刪除數(shù)據(jù)庫(kù)(books): drop database books ;
?????????? 刪除表數(shù)據(jù)(book) :delete from book where id="2";? 刪除表中 id=2 的數(shù)據(jù);
?????????? 為某些值創(chuàng)建一視圖(myView),就是某種意義上的“整合”:
??? create view myView as select id,name from book;????接下來(lái) select * from myView; 就可以查看視圖(也可用 describe myView;)
???????? 刪除視圖? drop myView;
???????? 查詢語(yǔ)句+約束(where后面是約束): select * from book where name="book2";
?????????????????????????????????? (and? or 等):select * from book where name="book2" and/or id="1";
??????????????????????? (limit )? : select id from book order by id limit 3; 其中order by 可以id 方式來(lái)排序. 還可換成 limit 1,3; 代表區(qū)間1 ~ 3 ;
????????? 模糊查詢(like):與通配符“%” 和下劃線 “_"搭配使用,前者配一個(gè)或多個(gè)字符,后者只配一個(gè)字符。
??????????????????????? 如 select * from book where name like('_k%');
????????? 聯(lián)合多列(concat) :就是把某些元素聯(lián)合在一起:作為一個(gè)新的“列”?
?????????????????????????如 select id,concat(name," ",price) as info from book;?就是 把 name 和 price 聯(lián)合成 info 再與id 項(xiàng) 弄出來(lái)唄..
????????? 查詢最大值最小值? : select max(id)/min(id) as id from book;?? 計(jì)算行數(shù):??????????? select count(*) from book;?
????????? 分組查詢?(group by ): select * from book group by name ;
?????????? 更新數(shù)據(jù)(更改數(shù)據(jù)? update ): update book set name="book111" where id="2"; 就是把id=2 的name 更改了。
等等等等........................
?
除此之外,最好為數(shù)據(jù)庫(kù)創(chuàng)建索引,可以加快查詢速度。
使用 alter table :? alter table book add index/nique/rimary ?index_name;? 其中三項(xiàng)為索引類型。
使用create index: create index index_name on book;
使用create table:? create table book(index index_name);
查看(id)索引的使用:explain select id from book where name="book2";
還可以從宏觀上查看? show status like "Handler_read%";
?
表的類型....
MyISAM (默認(rèn))? HEAP(最快)?? 可直接如此定義 : create table book(id char)type = HEAP;
還有鎖定表? READ 和 WRITE???外鍵 ? 這三個(gè)還是看不大明 .....先不說(shuō)了..
還有學(xué)會(huì)創(chuàng)建臨時(shí)表? create temporary table book(id varchar(10) NOT NULL,);? ps: NOT? NULL 可以直接用, 你懂的吧....
分析表有 analyze table book; 檢查表有 check table book ; 優(yōu)化表有 optimize table book;
等等等等......
命令雖多,多打打,始終會(huì)熟悉的...
?
?
**************************************************************華麗的分割線****************************************************
?
?
?
第一篇博客就這樣寫(xiě)完了,耗時(shí)將近兩個(gè)鐘頭,而且是熬夜寫(xiě)...........精神可嘉..................
第一次寫(xiě)博文,格式什么的都不熟悉?
以后不能熬夜了.......
?
總結(jié)
以上是生活随笔為你收集整理的数据库初识--从MySQL 出发的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux/CentOS 6忘记root
- 下一篇: oracle和SQLserver数据库中