1.2數(shù)據(jù)庫(kù)的基礎(chǔ)操作
1.2.1操作數(shù)據(jù)庫(kù)
-
創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE [IF NOT EXISTS] HAHA;
-
刪除數(shù)據(jù)庫(kù)
DROP DATABASE [IF EXISTS] HAHA;
-
使用數(shù)據(jù)庫(kù)
USE `HAHA`
-
查看數(shù)據(jù)庫(kù)
SHOW DATABASE --查看所有的數(shù)據(jù)庫(kù)
-
學(xué)習(xí)思路
- 對(duì)照sqlyog里的歷史記錄來(lái)學(xué)習(xí)sql語(yǔ)句
- 固定語(yǔ)法和關(guān)鍵字必須強(qiáng)行記住
1.2.2數(shù)據(jù)庫(kù)的列類(lèi)型
數(shù)值
tinyint 十分小的數(shù)據(jù) 1個(gè)字節(jié)
smallint 較小的數(shù)據(jù) 2個(gè)字節(jié)
mediumint 中等大小的數(shù)據(jù) 3個(gè)字節(jié)
int 標(biāo)準(zhǔn)的整數(shù) 4個(gè)字節(jié)
bigint 較大的數(shù)據(jù) 8個(gè)字節(jié)
float 浮點(diǎn)數(shù) 4個(gè)字節(jié)
double 浮點(diǎn)數(shù) 8個(gè)字節(jié) (精度問(wèn)題?。?/p>
decimal 字符串形式的浮點(diǎn)數(shù) 金融計(jì)算的時(shí)候,一般使用decimal
字符串
char 字符串固定大小的 0-255
varchar 可變字符串 0-65535 常用變量 類(lèi)似與java中的String
tinytext 微型文本 2^8-1
text 文本串 2^ 16-1 保存大文本
時(shí)間日期
date YYYY-MM-DD 日期格式
time HH:mm:ss 時(shí)間格式
datetime YYYY-MM-DD HH:mm:ss 最常用的時(shí)間格式
timestamp 時(shí)間戳,1970.1.1到現(xiàn)在的毫秒數(shù)!也較為常用!
year 年份表示
null
沒(méi)有值,表示未知
注意,不要使用null進(jìn)行計(jì)算,結(jié)果會(huì)為null
1.2.3數(shù)據(jù)庫(kù)的字段屬性(重點(diǎn))
Unsigned:
- 無(wú)符號(hào)整數(shù)
- 聲明了該列不能聲明為負(fù)數(shù)
zerofill:
- 0填充的
- 不足的位數(shù),使用0來(lái)填充,int (3) , 5-----005
自增
- 通常理解為自增,自動(dòng)在上一條記錄的基礎(chǔ)上+1(默認(rèn))
- 通常用來(lái)設(shè)計(jì)唯一的主鍵 index ,必須是整數(shù)類(lèi)型
- 可以自定義設(shè)計(jì)主鍵自增的起始值和步長(zhǎng)
非空 not null 和 null
- 設(shè)置為not null 如果不賦值就會(huì)報(bào)錯(cuò)
- 不填寫(xiě)值,默認(rèn)為null
拓展:了解就好
/*
每一個(gè)表都必須存在以下五個(gè)字段,未來(lái)做項(xiàng)目用的,表示一個(gè)記錄存在的意義
id 主鍵
version 樂(lè)觀鎖
is_delete 偽刪除
gmt_create 創(chuàng)建時(shí)間
gmt_update 修改時(shí)間
*/
1.2.4數(shù)據(jù)庫(kù)創(chuàng)建表
-- 學(xué)號(hào)int 登錄密碼varchar(20) 姓名 ,性別varchar(2),出生日期(datatime),家庭住址,email
-- 注意點(diǎn),使用英文(),表的名稱(chēng)和字段盡量用``括起來(lái)
-- auto_increment 自增
-- 字符串使用單引號(hào)括起來(lái)
-- 所有語(yǔ)句后面加, (英文的),最后一個(gè)不用加
-- primary key 主鍵 ,一般一個(gè)表只有一個(gè)唯一的主鍵!
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學(xué)號(hào)',
`name` VARCHAR(100) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密碼',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性別',
`birthday` DATETIME DEFAULT NULL COMMENT '生日',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
格式
CREAT TABLE [IF NOT EXISTS] `表名`(
'字段名' 列類(lèi)型 [屬性] [索引] [注釋],
'字段名' 列類(lèi)型 [屬性] [索引] [注釋],
....
'字段名' 列類(lèi)型 [屬性] [索引] [注釋]
)[表類(lèi)型][字符集設(shè)置][注釋]
常用語(yǔ)句
SHOW CREATE DATABASE school --查看創(chuàng)建的數(shù)據(jù)庫(kù)語(yǔ)句
SHOW CREATE TABLE student -- 查看創(chuàng)建的數(shù)據(jù)庫(kù)表定義
DESC student --查看表結(jié)構(gòu)
INNODB(現(xiàn)在默認(rèn)使用)和MYISAM(以前常用)區(qū)別
|
MYISAM |
INNODB |
事務(wù)支持 |
不支持 |
支持 |
數(shù)據(jù)行鎖定 |
不支持 |
支持 |
外鍵約束 |
不支持 |
支持 |
全文搜索 |
支持 |
不支持 |
表空間的大小 |
較小 |
較大,約2倍 |
常規(guī)使用操作:
- INNODB 安全性高,事務(wù)的處理,多表多用戶(hù)操作
- MYISAM 節(jié)約空間,速度較快
在物理空間存在的位置
所有數(shù)據(jù)庫(kù)文件都存在 data目錄下
本質(zhì)還是文件存儲(chǔ)
MYSQL引擎在物理文件上的區(qū)別
- innoDB在數(shù)據(jù)庫(kù)表中只有一個(gè)*.frm文件,以及上級(jí)目錄下的ibdata1文件
- MYISAM對(duì)應(yīng)文件
- *.frm 表結(jié)構(gòu)的定義文件
- *.MYD 數(shù)據(jù)文件(data)
- *.MYI 索引文件(index)
設(shè)置數(shù)據(jù)庫(kù)表字符集編碼
CHARSET=UTF8
不設(shè)置的話,會(huì)是mysql的默認(rèn)字符集編碼不支持中文
mysql 的默認(rèn)編碼是Latin1,不支持中文
1.2.5修改表和刪除表
修改表
--修改表名 : ALTER table 舊表名 REBANE AS 新表名
ALTER TABLE teacher RENAME AS teacher1
-- 增加表的字段 : ALTER TABLE 表名 ADD 字段名 列屬性
AALTER TABLE teacher1 ADD age INT(11)
-- 修改表的字段 (重命名 ,修改約束?。?-- ALTER TABLE 表名 MODIFY 字段名 列屬性 []
ALTER TABLE teacher MODIFY age VARCHAR(11) --修改約束
--ALTER TABLE 表名 CHANGE 舊名字 新名字 列屬性[]
ALTER TABLE teacher1 CHANGE age age1 INT(1) -- 字段重命名
-- 刪除表的字段: ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1
刪除表
-- 刪除表(如果存在再刪除)
DROP TABLE IF EXISTS teacher1
所有創(chuàng)建和刪除操作,盡量加上判斷,以免報(bào)錯(cuò)
注意點(diǎn):
- ``字段名用這個(gè)包裹
- 注釋 -- /**/
- sql關(guān)鍵字大小寫(xiě)不敏感,建議大家寫(xiě)小寫(xiě)
- 所有符號(hào)都用英文
|