1、建立資料庫
CREATE DATABASE [IF NOT EXISTS] westos;
2、刪除資料庫
DROP DATABASE [IF EXISTS] westos;
3、使用資料庫
-- tab鍵的上面,如果你的表名或者欄位是一個特殊字元,就需要帶``
USER `school`
4、檢視資料庫
show DATABASE -- 檢視資料庫
資料庫的資料型別
數值型
- tinyint 十分小的資料 1個位元組
- smallint 較小的資料 2個位元組
- mediumint 中等大小的資料 3個位元組
- **int ** 標準的整數 4個位元組 <常用的>
- bigint 較大的資料 8個位元組
- float 浮點數 4個位元組
- double 浮點數 8個位元組
- decimal 字串型別的浮點數 金融計算的時候一般使用
字串型別
- char 字串固定大小的 0~255
- varchar 可變字串 0~65535 <常用的 String>
- tinytext 微型文字 2^8-1
- text 文字串 2^16-1
時間日期
- data YYYY-MM-DD,日期
- time HH :mm:ss 時間格式
- **datatime YYYY-MM-DD HH :mm:ss 最常用的時間格式 **
- timestamp 時間戳 1970.1.1 到現在的毫秒數!
- year 年份表示
null
- 沒有值 ,未知
- 注意 不要使用NUll進行運算,結果為NULL
資料庫的欄位屬性(重點)
Unsigned:
- 無符號的整數
- 聲明瞭該列不能為負數
zerofill:
- 0填充的
- 不足的位數,使用0來填充 ----int (3) 5 --> 005
自增
- 自動在上一條記錄上加 1
- 通常用來設計主鍵的index ,必須是整數型別
- 可以是自定義的設計主鍵自增的起始值和步長
非空NULL / NOT NULL
- 指定該列是否為空或者不為空,違反時會報錯
SQL語句常見資料庫表
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) not null AUTO_INCREMENT COMMENT '學號',
`name` varchar(30) not null default '匿名' comment'姓名',
`pwd` varchar(20) not null default '123456' COMMENT '密碼',
`sex` varchar(2) not null default '男'COMMENT '性別',
`birthday` datatime dafault NULL COMMENT '出生日期',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
注意
- 使用英文的(),表的名稱和欄位儘量使用``括起來
- AUTO_INCREMENT 自增
- 字串使用單引號括起來
- 所有的語句後面加 ,英文的最後的一個欄位不用加
- 主鍵一般一個表只有一個
格式
CREATE TABLE [IF NOT EXISTS] `表名`(
`欄位名` 列型別 [屬性][索引][註釋],
`欄位名` 列型別 [屬性][索引][註釋],
......
`欄位名` 列型別 [屬性][索引][註釋]
PRIMARY KEY (`欄位名`)
)[表型別][字串設定][註釋]
-- 字串設定 default charset=utf8
- 檢視資料庫表的定義語句 show create table student
- DESC student --顯示錶的結構
資料庫引擎
預設使用 INNODB
早些年使用 MYISAM
MYISAM | INNODB | |
---|---|---|
事務支援 | 不支援 | 支援 |
資料行鎖定 | 不支援 | 支援 |
外來鍵約束 | 不支援 | 支援 |
全文索引 | 支援 | 不支援 |
表空間的大小 | 較小 | 較大,約2倍 |
常規使用操作:
- MYISAM 節約空間,速度較快
- INNODB 安全性高,事務的處理,多表多使用者操作
所有的資料庫檔案都存在在 data目錄下一個資料夾就對應一個數據庫
本質還是檔案的儲存!!
MYSQL引擎在物理上的區別:
- INNODB 在資料庫表中 只有一個 .frm檔案,以及上級目下的 lbdata1檔案
- MYISAM對應的檔案
- *.frm 表結構的定義檔案
- *.MYD 資料檔案(data)
- *.MYI 索引檔案 (index)
設定資料庫表的字符集編碼
CHARSET=utf8
不設定會出現問題,就會變成預設的字符集編碼----(不支援中文)
預設的是 Latin1,不支援中文
-- 可以在my.ini中配置預設的編碼
character-set-server=utf8
-- 建議不要自己去配置,為了程式碼可以在更多電腦中執行,每次建立表時在後面自己配置
+++
建立資料庫的例項
CREATE DATABASE stu_info -- 建立了一個數據庫名為:stu_info
-- 資料庫下的表的例項
-- student學生資訊表
create table if not exists `student`(
`sno` char(9) comment '學號',
`sname` char(20) unique comment '姓名',
`sex`char(2) not null comment '性別',
`sage`smallint not null comment '年齡',
`sdept` char(20 ) not null comment '專業',
primary key(`sno`)
)engine=innodb default charset=utf8
-- 課程資訊表格
create table if not exists `Course`(
`cno` char(9) not null comment '課程號',
`cname` char(40) not null comment '課程名',
`cpno` char(4) not null comment '先修課',
`credit` smallint not null comment '課程學分',
primary key (`cno`)
)engine=innodb default charset=utf8
此處我沒有做資料表的外來鍵,因為後面的練習需要刪除資料,需要新增資料,所以就簡單的練習下