主要是為了時常拿出來看看,復習用
數(shù)據(jù)庫操作主要包括
1.創(chuàng)建數(shù)據(jù)庫 (CREATE DATABASE)
2.查看數(shù)據(jù)庫 (SHOW DATABASES)
3.修改數(shù)據(jù)庫 (ALTER DATABASE)
4.刪除數(shù)據(jù)庫 (DROP DATABASE)
一 創(chuàng)建數(shù)據(jù)庫?
1. CREATE DATABASE IF NOT EXISTS 數(shù)據(jù)庫名稱 DEFAULT CHARSET 默認編碼集 COLLATE 校對規(guī)則;
2、語法解釋:
IF NOT EXISTS:如果該數(shù)據(jù)庫不存在則創(chuàng)建,防止創(chuàng)建錯誤;
DEFAULT CHARSET:默認編碼集通常選擇utf8,其它編碼集不推薦,ThinkPHP也推薦默認為utf8編碼集;
COLLATE:校對規(guī)則就是默認的排序方式,這與默認編碼集相對應,如果設置了默認編碼集為utf8,這個選項可以省略,直接用默認值:utf8_general_ci。
3、實例:
任務:創(chuàng)建員工數(shù)據(jù)庫
CREATE DATABASE IF NOT EXISTS user ?DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
因為設置了默認編碼集,可以省略校對規(guī)則:COLLATE,語句可簡寫為:
CREATE DATABASE IF NOT EXISTS ?user DEFAULT CHARSET utf8;
二、查看數(shù)據(jù)庫
1、語法:
SHOW DATABASES;
2、語法解釋:
服務器上通常會有很多數(shù)據(jù)庫,因此,這里使用復數(shù)。
3、實例:
SHOW DATABASES;
三、修改數(shù)據(jù)庫
ALTER ?DATABASE ?數(shù)據(jù)庫名稱 ? 修改的項目
2、語法解釋:
數(shù)據(jù)庫創(chuàng)建成功后,可修改項主要是默認編碼集和校對規(guī)則,其它不必修改
如果原數(shù)據(jù)庫編碼集不是utf8,可用該語句修改成為utf8;
如果校對規(guī)則不是utf8-general-ci,也可用該語句進行修改。
3、實例:
任務: 將當前數(shù)據(jù)庫的默認字符編碼集改為utf8,校對規(guī)則修改為utf8-general-ci
3.1、修改編碼和核對規(guī)則:
ALTER DATABASE staff CHARACTER SET utf8 COLLATE utf8_general_ci;
3.2、查看字符編碼集
SHOW CHARACTER SET;
3.3、查看校對規(guī)則
SHOW COLLATION;
四、刪除數(shù)據(jù)庫
1. DROP DATABASE IF NOT EXISTS 數(shù)據(jù)庫名;
2、語法解釋:
刪除數(shù)據(jù)庫是一項非常危險的操作,一旦刪除無法恢復;
IF EXISTS:可以防止出現(xiàn)刪除不存在數(shù)據(jù)庫的錯誤提示;
數(shù)據(jù)庫刪除后,該庫中所有表,一并刪除不可恢復。
3、實例:
任務:刪除剛才創(chuàng)建的員工數(shù)據(jù)庫 user?
語句:DROP DATABASE IF NOT EXISTS ?user ;
數(shù)據(jù)庫表的操作:
?
創(chuàng)建數(shù)據(jù)表
1、基本語法:
CREATE TABLE IF NOT EXISTS 數(shù)據(jù)表名稱 (
字段名稱1? [AS 別名]? 字段類型? [約束條件] [DEFAULT 默認值] [COMMENT 字段注釋],
字段名稱2? [AS 別名]? 字段類型? [約束條件] [DEFAULT 默認值] [COMMENT 字段注釋],
字段名稱3? [AS 別名]? 字段類型? [約束條件] [DEFAULT 默認值] [COMMENT 字段注釋],
......
)ENGINE = 表存儲引擎? DEFAULT CHARSET = 默認編碼集? AUTO_INCREMENT = 自增主鍵起始值;
2.語法解釋:
字段名稱:不與MySQL關鍵字重名的任何有效標識符即可;
IF NOT EXISTS:意思是“如果不存在”再創(chuàng)建數(shù)據(jù)表,防止重復建表引起錯誤;
AS 別名:表中字段名均為英文單詞或縮寫,創(chuàng)建一個有意義的別名,使數(shù)據(jù)表查詢結果更加直觀、人性化;
字段類型:非常重要,本文后面有詳細介紹;
約束條件:主要是NULL(允許為空),NOT NULL(禁止為空)等,具體還要與字段類型相匹配;
DEFAULT 默認值:如某字段設置了默認值,則新增時未賦值則取默認值;
COMMENT 字段注釋:非必須,但可以使字段信息看上去再完整、直觀;
ENGINE = 表存儲引擎:
>* MyISAM:讀取快速、成熟穩(wěn)定、支持全文檢索、最常用,但不支持事務處理;
>* InnoDB:具備提交、回滾的事務處理,支持外鍵,戰(zhàn)用空間大,不支持全文檢索;
DEFAULT CHARSET 默認編碼集: 通常與數(shù)據(jù)庫采用的編碼集相同(utf8)即可;
AUTO_INCREMENT = 自增主鍵起始值:如果設置,將從該值開始自增,如設置為1001,則第一條記錄是1001,第二條是1002。如果不設置,主鍵將默認從1開始自增;
3.字段類型:
字段類型也叫列類型,主要有:數(shù)值、字符串、日期/時間三大類。
數(shù)值型:有無符號和有符號之分,直接書寫,不要加引號,長度僅影響顯示,不影響精度。
整型:又分為五類
INT : 標準整型,4字節(jié),取值范圍大約正負21億,足以應付正常開發(fā)需要;
SMALLINT:小整數(shù),2字節(jié),取值范圍大約正負3.2萬之間,無符號翻倍。
TINYINT:極小整數(shù),1字節(jié),取值-128~127,無符號:0~255。
其它:MEDIUMINT(3字節(jié)),BIGINT(8字節(jié)),不太常用。
浮點型:
FLOAT:最常用,用4字節(jié)或8字節(jié)表示,具體依平臺而定;
DOUBLE:雙精度8字節(jié);
DECIMAL:以字符串形式存儲的浮點數(shù),大小自定義,用于會計領域等。
字符串類型:
CHAR(長度): 固定寬度存儲字符串,忽略原始字符串長度;
VARCHAR(長度):可變長度字符串,根據(jù)原始字符串長度存儲;
TEXT:小型文本,不能設默認值和長度;
LONGTEXT:超大文本,同樣不可設默認值和長度;
ENUM(枚舉):在括號中集合數(shù)據(jù)中,只可以單選,無默認值;
SET(集合):集合最大64個成員,可以多選,無默認值。
日期/時間類型(不要設置長度):
DATE:3字節(jié),格式 YYYY-MM-DD,如 2016-10-20;
TIME:3字節(jié),格式 hh:mm:ss,如 12:25:35;
DATETIME:8字節(jié),格式 YYYY-MM-DD hh:mm:ss,如 2016-10-20 12:25:35;
TIMESTAMP:3字節(jié)時間戳,格式YYYYMMDDhhmmss共14位,可設置顯示長度進行截取操作,必須是偶數(shù)長度,常見6位,8位,12位;
YEAR:單字節(jié),格式 YYYY,顯示年份,如2016。
4、約束條件:
任務:創(chuàng)建員工信息表 user
user數(shù)據(jù)表結構如下:
| 序號 | 字段名 | 類型 | 寬度 | 約束 | 默認值|備注 |
| — | — | — | — | — | — |
| 1 | id | 整型 | 4位 | 無符號、不為空、自增、主鍵|無 | 編號 |
| 2 | name | 變長字符串 | 30位 | 不為空 | 無 |姓名 |
| 3 | sex | 整型 | 1位 | 不為空 | 1 |性別1男0女|
| 4 | salary |浮點型 | 共10位小數(shù)2位 |無符號、不為空 |2000 |工資|
| 5 | dept |變長字符串 | 20位 |不為空 | 開發(fā)部 |部門|
| 6 | hiredate |日期 | 默認 | 不為空 | 0000-00-00 |入職日期|
要求數(shù)據(jù)表存儲引擎為InnoDB,默認編碼:utf8,自增主鍵起始:1001。
創(chuàng)建數(shù)據(jù)表SQL語句:(實例)
CREATE TABLE IF NOT EXISTS ?user (
id INT(4) unsigned NOT NULL AUTO_INCREMENT COMMENT '編號',
name VARCHAR(30) NOT NULL? ? COMMENT '姓名',
sex TINYINT(2)? unsigned? NOT NULL? DEFAULT 1? COMMENT '性別1男0女',
salary FLOAT(10,2) NOT NULL DEFAULT 2000.00 COMMENT '工資',
dept VARCHAR(20)? NOT NULL? DEFAULT '開發(fā)部' COMMENT '部門' ,
hiredate DATE? NOT NULL? DEFAULT '0000-00-00' COMMENT '入職日期',
PRIMARY KEY (id)
)ENGINE =InnoDB ?DEFAULT CHARSET = utf8? AUTO_INCREMENT = 1001;
查看表結構:
語法:DESC 表名
總結:
數(shù)據(jù)表,是php開發(fā)中,數(shù)據(jù)庫操作的重要載體。而創(chuàng)建數(shù)據(jù)表,則是最重要的一環(huán)。一個結構良好、健壯的表結構是我們所有模型操作的基礎。