1.庫的操作
1.1庫的查看
show databases;
這句語法形式是查看服務器已經存在的數據庫
注意要加分號————;
1.databeses是復數形式
2.大小寫都可以
前提(數據庫已經創建或查看服務器自帶的數據庫)
也可以查看指定的數據庫
show create database 數據庫名稱
下面是查看一個服務器中一個已有的庫
1.2創建庫
注意:創建庫的庫名稱可以是關鍵字但是要用這個符號括起來``
創建庫的完整語法形式
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...create_option: [DEFAULT] {CHARACTER SET [=] charset_name| COLLATE [=] collation_name| ENCRYPTION [=] {'Y' | 'N'}}
創建庫的時候指定字符集編碼和排序規則
1.db_name:表示要創建數據庫名稱
2.{}大括號表示必選項
3.[]表示可選可不選項
4.|表示選擇其中一項
5.?CHARACTER SET:指定數據庫采?的字符集編碼
6. COLLATE:指定數據庫字符集的校驗規則 ?
7.ENCRYPTION:數據庫是否加密,MySQL8.0.16中引?的新選項
1.2.1示例
示例1創建一個名稱為test的數據庫
示例2自定義一個數據庫名,如果數據庫不存在則創建
示例3重復上面的語句
warning :這是一個警告
示例4查看警告
show warnings;(注意這里的復數形式)
下面提示這個數據庫已經創建了
數據庫創建成功后會在數據庫目錄下生成一個相同名稱的數據庫目錄,用于儲存數據庫的內容
1.3字符集編碼和校驗排序規則
1.3.1查看數據庫支持的字符集編碼
MySQL8.0支持的字符集編碼是utf8mb4,MySQL支5.7持的字符集編碼是latin1(區別在于前者能夠支持中文)
1.3.2查看數據庫支持的排序規則
u tf8mb4_0900_ai_ci 是MySQL8.0引?的新規則,在?版本中不能識別;
? ut f8mb4 編碼是對 Unicode 字符集的?種實現,?1到4個字節表??個字符,可以表?世界上 ?乎所有的字符,?且更節少空間
? 0900 是基于UCA9.0.0算法,UCA是UnicodeCollationAlgorithm的縮寫
? ai是Accent-insensitive的縮寫,表??聲不敏感
? ci是Case-insensitive的縮寫表???寫不敏感
? as是Accent-sensitive的縮寫,表??聲敏感
? cs是Case-sensitive的縮寫,表???寫敏感
? bin表??進制 在 學習完排序之后,可以通過?例觀察不同排序規則對于??寫的影響
1.3.3查看默認字符集和排序規則
查看默認字符集
show variables like '%character%';
查看默認排序規則
show variables like '%collation%';
1.3修改數據庫
修改數據庫需改的是數據庫的字符集和校驗規則
語法形式
ALTER {DATABASE | SCHEMA} [db_name]alter_option ...alter_option: {[DEFAULT] CHARACTER SET [=] charset_name| [DEFAULT] COLLATE [=] collation_name| [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}| READ ONLY [=] {DEFAULT | 0 | 1}}
示例:將java中的數據庫字符集改成gbk
1.4刪除數據庫
語法形式
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
注意數據庫不能隨便刪除
刪除數據庫之后文件目錄中的數據庫文件也會隨之刪除
2.數據庫的數據類型
2.1數據值類型
1.BIN(M) M代表的是二進制的長度,沒有標明的是時候默認是1,64個二進制表示8個比特位
2.bool==tinyint(1);
3.INT就是我們常見的int;
4.BIGINT:用在編號字段
5.DECIMAL(M,D):一般表示金額
6.float和double表示小數的時候不是特別的精準,所以一般用decimal來表示小數
7.M中不記錄小數點和負號(有效數字的個數),當D為0的時候,那么具體的值就不保存小數(表示的是一個整數)
8.如果省略D默認為0,如果省略M默認為10;
2.2字符串類型與二進制類型
1.varchar(size)是一個最常用的字符串文件(可以指定長度)指定的長度是字符的長度
2.之前設置的字符集編碼utf8mb4,中一個字符最多占4個字節。65535/4=16353,根據字符的具體使用1-4個字節表示一個字符。
3.text和medlumtext是文本數據類型,blob是byte[]數組也就是說這存儲的的是一個文件的二進制形式
4.文本文件:人類能看懂的文件
二進制文件:一堆亂碼,只有機器才能看懂。
2.3日期類型
表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每個時間類型有一個有效值范圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。
TIMESTAMP類型有專有的自動更新特性,將在后面描述。
3表的操作
3.0查看數據庫中的所有的表
show tables;
對表操作的前提,首先要選好數據庫
3.1查看表的結構
語法形式
desc 表名;
1.Field表中的列名
2.Type表中的數據類型
3.Null該列值是否運行為Null
4.該值的索引類型
5.該列的默認值
6.擴展信息
3.2創建表
語法形式
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_namefield datatype [約束] [comment '注解內容'][, field datatype [約束] [comment '注解內容']] ...) [engine 存儲引擎] [character set 字符集] [collate 排序規則];
TEMPORARY:表?創建的是?個臨時表
? field:列名 ? datatype:數據類型
? comment:對列的描述或說明
? engine:存儲引擎,不指定則使?默認存儲引擎
? characterset:字符集,不指定則使?默認字符集
? collate:排序規則,不指定則使?默認排序規則
示例創建一個用戶,包括用戶的密碼?,生日,用戶編號,用戶名,并指定字符集編碼和排序規則
示例創建一個學生表
示例創建一個學生表并加上校驗(if not exists)
3.3刪除表
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
TEMPORARY:表示臨時創建的表
tbl_name:將要刪除的表名
事務
1.查看事務的支持引擎
2.使用
#
開始?個新的事務
STARTTRANSACTION;#
或
BEGIN;
;
#
提交當前事務,并對更改持久化保存
COMMIT;#
回滾當前事務,取消其更改
ROLLBACK;
START TRANSACTION 或 ??BEGIN 開始?個新的事務;
COMMIT提交當前事務,并對更改持久化保存;
? RO LLBACK 回滾當前事務,取消其更改;
? ?論提交還是回滾,事務都會關閉?