二椰拒、操作數(shù)據(jù)庫
操作數(shù)據(jù)庫——>操作數(shù)據(jù)庫中的表——>操作數(shù)據(jù)庫中表的數(shù)據(jù)
注:所有語句都要用;結(jié)尾。
1.操作數(shù)據(jù)庫
例:創(chuàng)建數(shù)據(jù)庫westos并使用恳邀。
注:以后所有命令帶[]表示可選惊暴,帶{}表示必選。
1)創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE [IF NOT EXISTS] westos;
2)刪除數(shù)據(jù)庫
DROP DATABASE [IF EXISTS] westos;
3)使用數(shù)據(jù)庫
USE `westos`
--tab鍵的上面笼恰,如果表名或者字段名是一個特殊字符
4)查看數(shù)據(jù)庫
SHOW DATABASES --查看所有的數(shù)據(jù)庫
對比SQLyog的可視化操作:
學(xué)習(xí)思路:
①對照sqlyog可視化歷史記錄查看sql語句。
②固定的語法或關(guān)鍵字必須強行記住歇终。
2.數(shù)據(jù)庫的列類型
1)數(shù)值
①tinyint 十分小的數(shù)據(jù) 1個字符
②smallint 較小的數(shù)據(jù) 2個字節(jié)
③mediumint 中等大小的數(shù)據(jù) 3個字節(jié)
④int 標(biāo)準(zhǔn)的整數(shù) 4個字節(jié) 常用的int
⑤bigint 較大的數(shù)據(jù) 8個字節(jié)
⑥float 浮點數(shù) 4個字節(jié)
⑦double 浮點數(shù) 8個字節(jié)
⑧decimal 字符串形式的浮點數(shù) 在金融計算的時候使用
2)字符串
①char 固定大小的字符串 0-255
②varchar 可變的字符串 0-65535 常用的String
③tinytext 微型文本 2的8次方-1
④text 文本串 2的16次方-1 保存大文本
3)時間日期 對應(yīng)Java中的java.util.Date
①date 日期格式:YYYY-MM-DD
②time 時間格式:HH:mm:ss
③datetime 最常用的時間格式:YYYY-MM-DD HH:mm:ss
④timestamp 時間戳 較為常用
⑤year 年份表示
4)null:沒有值社证,未知。
注:不要使用NULL進行運算评凝,沒有意義追葡,結(jié)果仍為NULL。
3.數(shù)據(jù)庫的字段屬性
1)Unsigned:無符號的整數(shù)奕短,聲明了該列不能為負數(shù)宜肉。
2)zerofill:0填充的。不足的位數(shù)翎碑,使用0來填充谬返。
例:int(3),5——>005
3)自增:通常理解為自增日杈,自動在上一條記錄的基礎(chǔ)上+1(默認)遣铝。
通常用來設(shè)置唯一的主鍵index,必須是整數(shù)類型莉擒。
可以自定義設(shè)置主鍵自增的起始值和步長酿炸。
4)非空:假設(shè)設(shè)置為not null,如果不給它賦值就會報錯涨冀。
NULL填硕,如果不填寫值,默認就是null鹿鳖。
5)默認:設(shè)置默認的值扁眯。如果不指定該列的值,則會有默認的值栓辜。
6)拓展:每一個表都必須在以下五個字段恋拍。未來做項目用的垛孔,表示一個記錄存在意義藕甩。
①id 主鍵
②version
樂觀鎖
③is_delete 偽刪除
④gmt_create 創(chuàng)建時間
⑤gmt_update 修改時間
4.創(chuàng)建數(shù)據(jù)表
目標(biāo):創(chuàng)建一個school數(shù)據(jù)庫。
創(chuàng)建學(xué)生表(列,字段)狭莱,使用SQL語句創(chuàng)建僵娃。
學(xué)號int,登錄密碼varchar(20)腋妙,姓名默怨,性別varchar(2),出生日期(datetime)骤素,家庭住址匙睹,郵箱(email)。
CREATE TABLE IF NOT EXISTS `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學(xué)號',
`name` VARCHAR(30) 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 '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '郵箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
注意點:Ⅰ使用英文()济竹,表的名稱和字段盡量使用``括起來痕檬。
ⅡAUTO_INCREMENT 自增。
Ⅲ字符串的使用:用單引號''括起來送浊。
Ⅳ所有的語句后面加英文的,梦谜,最后一個不用加。
ⅤPRIMARY KEY主鍵袭景,一般一個表只有唯一的主鍵唁桩。
格式:
CREATE TABLE [IF NOT EXISTS] `表名` (
`字段名` 列類型 [屬性] [索引] [注釋],
······
)[表類型] [字符集設(shè)置] [注釋]
常用命令:
例:查看創(chuàng)建數(shù)據(jù)庫和表的語句并顯示。
SHOW CREATE DATABASE school --查看創(chuàng)建數(shù)據(jù)庫school的語句
SHOW CREATE TABLE student --查看student數(shù)據(jù)表的定義語句
DESC student --顯示student表的語句
5.數(shù)據(jù)庫類型
關(guān)于數(shù)據(jù)庫引擎:INNODB 默認使用耸棒、MYISAM 早些年使用的荒澡。
MYISAM | INNODB | |
---|---|---|
事務(wù)支持 | 不支持 | 支持 |
數(shù)據(jù)行鎖定 | 不支持 | 支持 |
外鍵約束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空間的大小 | 較小 | 較大,約為MYISAM的2倍 |
常規(guī)使用操作:
MYISAM:節(jié)約空間榆纽,速度較快仰猖。
INNODB:安全性高,事務(wù)的處理奈籽,多表多用戶操作饥侵。
在物理空間存在的位置:
所有的數(shù)據(jù)庫文件都存在data目錄下,一個文件就對應(yīng)一個數(shù)據(jù)庫衣屏。
本質(zhì)還是文件的存儲躏升!
MySQL引擎在物理文件上的區(qū)別:
InnoDB:在數(shù)據(jù)表中只有一個.frm文件,以及上級目錄下的ibdata1文件狼忱。
MYISAM對應(yīng)文件:
①.frm 表結(jié)構(gòu)的定義文件
②.MYD 數(shù)據(jù)文件(data)
③.MYI 索引文件(index)
設(shè)置數(shù)據(jù)庫的字符集編碼:
CHARSET=utf8
MySQL的默認編碼是Latinl膨疏,不支持中文。
不設(shè)置成utf8的話钻弄,會是mysql默認的字符集編碼佃却。
在my.ini中配置默認的編碼:
charcicter-set-server=utf8
6.修改刪除表
1)修改
例:
--修改表名:ALTER TABLE 舊表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1
--增加表的字段:ALTER TABLE 表名 ADD 字段名 列屬性
ALTER TABLE teacher1 ADD age INT(11)
--修改表的字段(重命名、修改約束)
--修改約束:ALTER TABLE 表名 字段名 列屬性
ALTER TABLE teacher1 MODIFY age VARCHAR(11)
--字段重命名:ALTER TABLE 表名 CHANGE 舊名字 新名字 [列屬性]
ALTER TABLE teacher1 CHANGE age age1 INT(1)
--刪除表的字段:ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1
2)刪除
例:
--刪除表(如果表存在再刪除):DROP TABLE [IF EXISTS] 表名
DROP TABLE IF EXISTS teacher1
注:所有的創(chuàng)建和刪除操作盡量加上判斷窘俺,以免報錯饲帅。
注意點:Ⅰ字段名使用``包裹。
Ⅱ注釋用--或/ * * /,不要用#灶泵。
Ⅲsql關(guān)鍵字大小寫不敏感育八,建議寫小寫。
Ⅳ所有的符號全部用英文赦邻。