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

此處我沒有做資料表的外來鍵,因為後面的練習需要刪除資料,需要新增資料,所以就簡單的練習下