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