1. 程式人生 > 其它 >2.操作資料庫(MySql中語句不區分大小寫)

2.操作資料庫(MySql中語句不區分大小寫)

操作資料庫→操作資料庫中的表→操作資料庫中表的資料

1.操作資料庫

1.建立資料庫

CREATE DATABASE [IF NOT EXISTS] westos  --[]代表可選的,寫不寫都行

2.刪除資料庫

DROP DATABASE [IF EXISTS] hello --如果存在hello庫刪除它

3.使用資料庫

-- tab鍵的上面 `
-- 如果你的表名或者欄位名是一個特殊字元,就需要用``
USE `mybatis`

4.檢視資料庫

SHOW DATABASES --檢視所有的資料庫

學習思路:

  • 對照Navicat Premium視覺化歷史記錄,檢視sql
  • 固定的語法和關鍵字必須要強行記住

如何新建一個數據庫:

2.資料庫的列型別

--數值
tinyint   --十分小的資料,一般不會使用  1位元組
smallint  --較小的資料 2個位元組
mediumint --中等大小的資料 3個位元組
**int       --標準的整數 4個位元組 常用的**
bigint    --較大的資料 8個位元組

float     --浮點數 4個位元組
double    --浮點數 8個位元組 (精度問題!)
decimal   --字串形式的浮點數 金融計算的時候,一般使用decimal

--字串
char      --字串 固定大小的 0-255
varchar   --可變字串 0-65535 常用的變數 String
tinytext  --微型文字  2^8-1
text      --文字串    2^16-1   儲存大文字 String
--時間日期
data      --YYYY-MM-DD 日期格式
time      --HH:mm:ss   時間格式
datatime  --YYYY-MM-DD HH:mm:ss 最常用的時間格式
timestamp --時間戳:1970.1.1到現在的毫秒數  也較為常用
year      --年份表示
--null
--沒有值、未知
--注意,不要使用NULL進行運算,使用的話運算為NULL

3.資料庫的欄位屬性(重點)

Unsigned:

  • 無符號的整數
  • 聲明瞭該列不能為負數

Zerrofill:

  • 0填充
  • 不足的位數,使用0填充 eg:int(5) 5——005

自增

  • 通常理解為自增,自動在上一條記錄的基礎上+1(預設)
  • 通常用來設計唯一的主鍵,index,必須是整數型別
  • 可以自定義設定主鍵自增的起始值和步長

非空:null not null

  • 假設設定為not null 如果不給它賦值,就會報錯!
  • null 如果不填寫,預設為null

預設:

  • 設定預設的值
  • sex,預設值為男,如果不指定該列的值,則會有預設的值

拓展:理解

未來做專案會用到,表示一個記錄存在的意義!(阿里新規範)

/* 每一個表,都必須存在以下五個欄位!
id 主鍵
`version`   樂觀鎖
is_delete   偽刪除
gmt_create  建立時間
gmt_update  修改時間
*/

4.建立資料庫表(重點)

-- 目標 :建立一個school資料庫
-- 建立學生表(列,欄位) 使用sql建立
-- id int 姓名 varchar(30) 密碼,性別varchar(2) 出生日期 datetime,家庭住址,email

-- 注意點:使用英文括號(),表的名稱和欄位儘量使用``括起來
-- AUTO_INCREMENT 自增
-- 字串使用 單引號''括起來!
-- 所有的語句後面加,(英文的逗號) 最後一個欄位不用加
-- DEFAULT 預設的
-- PRIMARY KEY 主鍵,一般一個表只有一個
-- COMMENT 註釋

CREATE TABLE IF NOT EXISTS `student` (
		`id` INT ( 4 ) NOT NULL AUTO_INCREMENT COMMENT '學號',
		`name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' COMMENT '姓名',
		`pwd` VARCHAR ( 10 ) NOT NULL COMMENT '密碼',
		`sex` VARCHAR ( 2 ) NOT NULL DEFAULT '男' COMMENT '性別',
		`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
		`address` VARCHAR ( 100 ) DEFAULT NULL COMMENT '家庭住址',
		`email` VARCHAR ( 30 ) DEFAULT NULL COMMENT '電子郵箱',
	PRIMARY KEY ( `id` ) 
	) ENGINE = INNODB DEFAULT CHARSET = utf8

格式:(背會)

CREATE TABLE [IF NOT EXISTS] `表名`(
	`欄位名` 列型別 [屬性] [索引] [註釋],
	`欄位名` 列型別 [屬性] [索引] [註釋],
	······
	`欄位名` 列型別 [屬性] [索引] [註釋]
	PRIMARY KEY(`id`)  -- 主鍵
)ENGINE = INNODB DEFAULT CHARSET = utf8 -- 這裡是utf8 不要打成utf-8

常用命令

SHOW CREATE DATABASE school -- 檢視建立資料庫的語句
SHOW CREATE TABLE student  -- 檢視student資料表的定義語句
DESC student -- 顯示student表的結構

5.資料表的型別

-- 關於資料庫引擎
/*
INNODB 目前預設使用
MYISAM 早些年使用
*/

INNODB和MYISAM的對比:

常規使用操作:

  • MYISAM 節約空間,速度較快
  • INNODB 安全性高,事務的處理,多表用多使用者操作

在物理空間存在的位置

所有的資料庫檔案都存在data目錄下,一個資料夾就對應一個數據庫

本質還是檔案的儲存

MySql引擎在物理檔案上的區別

InnoDB 在資料庫表中只有一個*.frm檔案,以及上級目錄下的ibdata1檔案

MYISAM對應檔案

  • *.frm 表結構的定義檔案
  • *.MYD 資料檔案(data)
  • *.MYI 索引檔案(index)

設定資料庫表的字符集編碼

1.創庫的時候後面設定

CHARSET=utf8

不設定的話,會是mysql預設的字符集編碼~(不支援中文)

Mysql的預設編碼是Latin1,不支援中文

2.在my.ini中配置預設的編碼

character-set-server=utf8

6.修改和刪除表

修改

-- 修改表: ALTER TABLE 舊錶名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1  -- 修改表名稱

-- 增加表的欄位: ALTER TABLE 表名 ADD 欄位名 列屬性
ALTER TABLE teacher1	ADD id INT(10)

-- 修改表的欄位(1.重新命名 2.修改約束 )

-- ALTER TABLE 表名 MODIFY 欄位名 列屬性[]
ALTER TABLE teacher1 MODIFY id VARCHAR(10)  -- 修改欄位名

-- ALTER TABLE 表名 CHANGE 舊欄位名 新欄位名 列屬性[]
ALTER TABLE teacher1 CHANGE id id2 INT(10)  -- 欄位重新命名

-- 刪除表
ALTER TABLE teacher1 DROP id2

刪除

-- 刪除表(如果表存在再刪除)
-- DROP TABLE [IF EXISTS] 表名
DROP TABLE [IF EXISTS] `teacher1`

注:所有的建立和刪除操作儘量加上判斷,以免報錯

總結:

  • `` 欄位名,為了安全,使用`包裹
  • 註釋:- - , /**/
  • sql關鍵字大小寫不敏感,建議用小寫,因為大寫有時候視覺上不好認
  • 所有符合用英文