1.2資料庫的基礎操作
1.2.1操作資料庫
-
創建資料庫
CREATE DATABASE [IF NOT EXISTS] HAHA; -
洗掉資料庫
DROP DATABASE [IF EXISTS] HAHA; -
使用資料庫
USE `HAHA` -
查看資料庫
SHOW DATABASE --查看所有的資料庫 -
學習思路
- 對照sqlyog里的歷史記錄來學習sql陳述句
- 固定語法和關鍵字必須強行記住
1.2.2資料庫的列型別
數值
tinyint 十分小的資料 1個位元組
smallint 較小的資料 2個位元組
mediumint 中等大小的資料 3個位元組
int 標準的整數 4個位元組
bigint 較大的資料 8個位元組
float 浮點數 4個位元組
double 浮點數 8個位元組 (精度問題!)
decimal 字串形式的浮點數 金融計算的時候,一般使用decimal
字串
char 字串固定大小的 0-255
varchar 可變字串 0-65535 常用變數 類似與java中的String
tinytext 微型文本 2^8-1
text 文本串 2^ 16-1 保存大文本
時間日期
date YYYY-MM-DD 日期格式
time HH:mm:ss 時間格式
datetime YYYY-MM-DD HH:mm:ss 最常用的時間格式
timestamp 時間戳,1970.1.1到現在的毫秒數!也較為常用!
year 年份表示
null
沒有值,表示未知
注意,不要使用null進行計算,結果會為null
1.2.3資料庫的欄位屬性(重點)
Unsigned:
- 無符號整數
- 宣告了該列不能宣告為負數
zerofill:
- 0填充的
- 不足的位數,使用0來填充,int (3) , 5-----005
自增
- 通常理解為自增,自動在上一條記錄的基礎上+1(默認)
- 通常用來設計唯一的主鍵 index ,必須是整數型別
- 可以自定義設計主鍵自增的起始值和步長
非空 not null 和 null
- 設定為not null 如果不賦值就會報錯
- 不填寫值,默認為null
拓展:了解就好
/*
每一個表都必須存在以下五個欄位,未來做專案用的,表示一個記錄存在的意義
id 主鍵
version 樂觀鎖
is_delete 偽洗掉
gmt_create 創建時間
gmt_update 修改時間
*/
1.2.4資料庫創建表
-- 學號int 登錄密碼varchar(20) 姓名 ,性別varchar(2),出生日期(datatime),家庭住址,email
-- 注意點,使用英文(),表的名稱和欄位盡量用``括起來
-- auto_increment 自增
-- 字串使用單引號括起來
-- 所有陳述句后面加, (英文的),最后一個不用加
-- primary key 主鍵 ,一般一個表只有一個唯一的主鍵!
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '學號',
`name` VARCHAR(100) 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 '家庭住址',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
格式
CREAT TABLE [IF NOT EXISTS] `表名`(
'欄位名' 列型別 [屬性] [索引] [注釋],
'欄位名' 列型別 [屬性] [索引] [注釋],
....
'欄位名' 列型別 [屬性] [索引] [注釋]
)[表型別][字符集設定][注釋]
常用陳述句
SHOW CREATE DATABASE school --查看創建的資料庫陳述句
SHOW CREATE TABLE student -- 查看創建的資料庫表定義
DESC student --查看表結構
INNODB(現在默認使用)和MYISAM(以前常用)區別
| MYISAM | INNODB | |
|---|---|---|
| 事務支持 | 不支持 | 支持 |
| 資料行鎖定 | 不支持 | 支持 |
| 外鍵約束 | 不支持 | 支持 |
| 全文搜索 | 支持 | 不支持 |
| 表空間的大小 | 較小 | 較大,約2倍 |
常規使用操作:
- INNODB 安全性高,事務的處理,多表多用戶操作
- MYISAM 節約空間,速度較快
在物理空間存在的位置
所有資料庫檔案都存在 data目錄下
本質還是檔案存盤
MYSQL引擎在物理檔案上的區別
- innoDB在資料庫表中只有一個*.frm檔案,以及上級目錄下的ibdata1檔案
- MYISAM對應檔案
- *.frm 表結構的定義檔案
- *.MYD 資料檔案(data)
- *.MYI 索引檔案(index)
設定資料庫表字符集編碼
CHARSET=UTF8
不設定的話,會是mysql的默認字符集編碼不支持中文
mysql 的默認編碼是Latin1,不支持中文
1.2.5修改表和洗掉表
修改表
--修改表名 : ALTER table 舊表名 REBANE AS 新表名
ALTER TABLE teacher RENAME AS teacher1
-- 增加表的欄位 : ALTER TABLE 表名 ADD 欄位名 列屬性
AALTER TABLE teacher1 ADD age INT(11)
-- 修改表的欄位 (重命名 ,修改約束!)
-- ALTER TABLE 表名 MODIFY 欄位名 列屬性 []
ALTER TABLE teacher MODIFY age VARCHAR(11) --修改約束
--ALTER TABLE 表名 CHANGE 舊名字 新名字 列屬性[]
ALTER TABLE teacher1 CHANGE age age1 INT(1) -- 欄位重命名
-- 洗掉表的欄位: ALTER TABLE 表名 DROP 欄位名
ALTER TABLE teacher1 DROP age1
洗掉表
-- 洗掉表(如果存在再洗掉)
DROP TABLE IF EXISTS teacher1
所有創建和洗掉操作,盡量加上判斷,以免報錯
注意點:
- ``欄位名用這個包裹
- 注釋 -- /**/
- sql關鍵字大小寫不敏感,建議大家寫小寫
- 所有符號都用英文
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/4129.html
標籤:SQL Server
