2.操作資料庫(MySql中語句不區分大小寫)
阿新 • • 發佈:2022-12-04
操作資料庫→操作資料庫中的表→操作資料庫中表的資料
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關鍵字大小寫不敏感,建議用小寫,因為大寫有時候視覺上不好認
- 所有符合用英文