操作資料庫 -- mysql 02
阿新 • • 發佈:2021-09-22
操作資料庫
操作資料庫>操作資料庫中的表>操作資料庫中表的資料
mysql關鍵字不區分大小寫
操作資料庫
1,建立資料庫
create database [if not exists] westos
2,刪除資料庫
drop database [if exists] westos
3,使用資料庫
--如果你的表名或者欄位名是一個特殊字元,就需要帶··
use school
4,檢視資料庫
show databases --檢視所有的資料庫
學習思路:
- 對照sqlyog視覺化歷史記錄檢視
- 固定的語法或者關鍵字必須要強行記住
資料庫的列型別
數值
- tinyint 十分小的資料 1個位元組
- smallint 較小的資料 2個位元組
- 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 儲存大文字
時間日期
java.util.Date
- date YYYY-MM-DD,日期格式
- time HH: mm: ss 時間格式
- datetime YYYY-MM-DD time HH: mm: ss 最常用的時間格式
- timestamp 時間戳,1970.1.1到現在的毫秒數!
- year 年份
null
- 沒有值,未知
- 注意,不要使用NULL進行運算,結果為NULL
資料庫的欄位屬性(重點)
Unsigned:
- 無符號的整數
- 聲明瞭該列不能宣告為負數
zerofill:
- 0填充
- 不足的位數,使用0來填充, int( 3), 5 --- 005
自增:
- 通常理解為自增,自動在上一條記錄的基礎上+1(預設)
- 通常用來設計唯一的主鍵~ index,必須是整數型別
- 可以自定義設計主鍵自增的起始值和步長
非空 NULL not null
- 假設設定為 not null, 如果不給它賦值,就會 報錯
- NULL 如果不填預設值,預設就是null
預設:
- 設定預設的值!
- sex,預設值為男,如果不指定該列的值,則會有預設的值
擴充套件:
/* 每一個表,都必須存在以下五個欄位!未來做專案用的,表示一個記錄存在的意義!
id 主鍵
·version· 樂觀鎖
is_delete 偽刪除
gmt_create 建立時間
gmt_upodate 修改時間
*/
建立資料庫表(重點)
-- --目標:建立一個school資料庫
-- --建立學生表(列,欄位) 使用sql建立
-- --學號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(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
`powdata` VARCHAR(20) NOT NULL DEFAULT'123456'COMMENT'密碼',
`sex` VARCHAR(10) NOT NULL DEFAULT'男'COMMENT'性別',
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT'郵箱地址',
PRIMARY KEY(`id`)
)ENGINE = INNODB DEFAULT CHARSET=utf8
格式
create table [if not exists] `表名`(
`欄位名` 列型別 [屬性] [索引] [註釋],
......
`欄位名` 列型別 [屬性] [索引] [註釋]
)[表型別][字符集設定][註釋]
常用命令
SHOW CREATE DATABASE school -- 檢視建立資料庫的語句
SHOW CREATE TABLE student -- 檢視資料表的定義語句
DESC student -- 顯示錶的結構
資料表的型別
-- 關於資料庫引擎
/*
INNODB 預設使用~
MYISAM 早些年使用的
*/
MYISAM | INNODB | |
---|---|---|
事物支援 | 不支援 | 支援 |
資料行鎖定 | 不支援 | 支援 |
外來鍵約束 | 不支援 | 支援 |
全文索引 | 支援 | 不支援 |
表空間大小 | 較小 | 較大,約為2倍 |
常規使用操作:
- MYISAM 節約空間,速度較快
- INNODB 安全性高,事務的處理,多表多使用者操作
在物理空間存在的位置
所有的資料庫檔案都存在data目錄下,本質還是檔案的儲存!
MySQL引擎在物理檔案上的區別
- INNODB在資料庫表中只有一個*.frm檔案,以及上級目錄下的ibdata1檔案
- MYISAM對應檔案
- *.frm 表結構的定義檔案
- *.MYD 資料檔案(data)
- *.MIY 索引檔案(index)
設定資料庫表的字符集編碼
charset=utf8
不設定的話,會是mysql預設的字符集編碼~(不支援中文)
在my.ini中配置預設的編碼
character-set-server=utf8
| ### 修改刪除表
修改
-- 修改表名 ALTER TABLE 舊錶名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1
-- 增加表的欄位 ALTER TABLE 表名 ADD 欄位名 欄位型別()
ALTER TABLE teacher1 ADD age INT(11)
-- 修改表的欄位 (重新命名,修改約束)
-- 修改約束 ALTER TABLE 表名 MODIFY 欄位名 欄位屬性()
ALTER TABLE teacher1 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 `data`
所有的建立和刪除操作儘量加上判斷,以免報錯
注意點:
- ``欄位名,使用這個包裹
- 註釋 -- /**/
- sql關鍵字大小寫不敏感,建議寫小寫
- 所有符號全部用英文