mysql學習筆記-1
MYSQL規範
- 關鍵字與函式名稱全部大寫
- 資料庫名稱,表名稱,欄位名稱全部小寫
- SQL語句必須以分號結尾
連線資料庫
musql -u user -p userpassword [-P port -H serverLocation]
建立資料庫
在mysql中DATABASE與SCHEMA是一樣的
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
語法說明:花括號代表必須要有的 豎線代表選項(or) 中括號為可選項.
CREATE DATABASE t1; //建立一個t1的資料庫
如果當資料庫存在的話再次新增相同的資料庫將會報錯.但是加上IF NOT EXISTS將會遮蔽掉這個錯誤資訊
CREATE DATABASE IF NOT EXISTS t1;
建立一個utf8編碼的資料庫
CREATE DATABASE study CHARACTER SET utf8;
檢視當前伺服器下資料庫
SHOW {DATABASES|SCHEMAS} [LIKE "pattern" | WHERE expr]
檢視警告資訊
SHOW WARNINGS;
檢視資料庫編碼
SHOW CREATE DATABASE db_name;
修改資料庫
ALTER {DATABASE|SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name
修改資料庫為gbk編碼
ALTER DATABASE study CHARACTER SET = gbk;
刪除一個資料庫
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
資料型別
它決定了資料的儲存格式,代表了不同的資訊型別.
整型
TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT 分別是儲存的資料長度不同.一般用INT即可.
浮點型
FLOAT[(M,D)] M是數字總位數,D是小數點後面的位數,如果M與D被省略,根據硬體允許的限制允許儲存精度浮點數精確到大約7位小數位
DOUBLE[(M,D)]
FLOAT[(7,2)] 小數點之前的數字+小數點之後的數字總數為7為
時間型別
YEAR 年
TIME 時間型別 範圍是’-838:59:59’到’838:59:59’。
DATE(日期型別) 年月日
DATETIME(日期時間型別) 年月日時分秒
TIMESTAMP(時間戳)
真正時間型別會採用數字型別來儲存,利用時間戳的形式 這樣做的目的是為了考慮跨時區問題
字元型
CHAR(定長型別) 0~255 如果字元設定為4,如果字元達不到4,後面以空格來補齊.
VARCHAR(變長) 不會自動補齊
TINYTEXT 2^8
TEXT 2^16
MEDIUMTEXT 2^24
LONGTEXT 2^32
ENUM("value1","value2") 列舉值(選項值) 比如性別 男,女,保密
SET("value1","value2") 1,2,3,4,8 取決於set成員數目 最多64個成員
資料表的操作
USE
開啟資料庫
USE db_name;
顯示當前使用者開啟的資料庫
SELECT DATABASE();
建立資料表
``` CREATE TABLE [IF ONT EXISTS] table_name( column_name data_type, )
```
mysql> CREATE TABLE tb1(
-> username VARCHAR(20),
-> age TINYINT UNSIGNED,
-> salary FLOAT(8,2) UNSIGNED
-> );
UNSIGNED(無符號位 從0開始)
檢視資料表
SHOW TABLES [FROM db_name] [LIKE "pattern" | WHERE expr ]
檢視資料表結構
SHOW COLUMNS FROM tbl_name
SHOW COLUMNS FROM tb1;
記錄插入與查詢
INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...)
省略掉列名稱則為所有的欄位賦值
INSERT tb1 VALUES("Tom",25,7865.32);
如果少寫了一個列值 則會出現 Column count doesnt value count at row 1 列不匹配
為某個列賦值
INSERT tb1(username,salary) VALUES ("John",4500.69);
記錄查詢
SELECT expr,...FROM tbl_name
列出資料表中全部欄位
SELECT * FROM tb1;
*指的是欄位過濾而不是記錄過濾.
空值與非空
NULL,欄位值可以為空 NOT NULL ,欄位值禁止為空
CREATE TABLE tb2(
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED NULL
);
INSERT tb2 VALUES(NULL,25);
這段程式碼是錯誤的.會報錯 Column username cannot be null;
自動編號
AUTO_INCREMENT 自動編號,且必須與主鍵組合使用 預設情況下,起始值為1,每次的增量為1
欄位必須為數值型.FLOAT小數位數必須為0
主鍵自動編號
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
初涉主鍵約束
PRIMARY KEY 主鍵約束 每張資料表只能存在一個主鍵 主鍵保證記錄的唯一性 主鍵自動為NOT NULL
主鍵可以不必與AUTO_INCREMENT一起使用
定義主鍵自動編號
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
只需要加一個PRIMARY KEY.
新增資料
INSERT tb3(username) VALUES("Tom");
INSERT tb3(username) VALUES("John");
INSERT tb3(username) VALUES("Rose");
INSERT tb3(username) VALUES("Soul");
因為設定了主鍵,這樣得使用欄位對應新增
主鍵不與AUTO_INCREMENT使用
CREATE TABLE tb4(
id SMALLINT PRIMARY KEY,
username VARCHAR(20) NOT NULL
);
主鍵的欄位可以賦值,但是不允許存在兩個相同的值
涉及唯一約束
UNIQUE KEY 唯一約束可以保證記錄的唯一性 唯一約束的欄位可以為空值(NULL) 每張資料表可以存在多個唯一的約束
索引的原理,全NULL值不被記錄在索引上 也就是這個欄位中的不能存在相同的記錄,但是可以存在相同的NULL值
建立主鍵與唯一約束的表
CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
age TINYINT UNSIGNED
);
寫幾條記錄
INSERT tb5(username,age) VALUES('Tom',22);
INSERT tb5(username,age) VALUES('Tom',25);
第二條語句只會報錯
預設約束
DEFAULT 當插入記錄時,如果沒有明確為欄位賦值,則自動賦予預設值
預設性別是保密
``` CREATE TABLE tb6( id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL UNIQUE KEY, sex ENUM("1","2","3") DEFAULT "3" );
INSERT tb6(username) VALUES("TOM") ```
總結
- 建立資料庫
- 建立表
- 建立欄位
- 建立記錄
- 設定欄位選項
- 檢視錶,欄位,記錄
- 主鍵與約束
相關文章
- Mysql學習筆記1--安裝MySql筆記
- MySql學習筆記MySql筆記
- 學習筆記1筆記
- 學習筆記-1筆記
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- MySQL學習筆記2MySql筆記
- MySQL學習筆記:鎖MySql筆記
- MySql學習筆記06MySql筆記
- 學習Mysql筆記(一)MySql筆記
- mysql學習筆記-2MySql筆記
- MySQL Events學習筆記MySql筆記
- mysql學習筆記3MySql筆記
- swift學習筆記《1》Swift筆記
- Vue學習筆記1Vue筆記
- Numpy學習筆記 1筆記
- HTML學習筆記1HTML筆記
- flex:1學習筆記Flex筆記
- Numpy學習筆記(1)筆記
- SLAM學習筆記(1)SLAM筆記
- Oracle學習筆記1Oracle筆記
- Zynq學習筆記(1)筆記
- scapy學習筆記(1)筆記
- Git—學習筆記1Git筆記
- perl學習筆記1筆記
- Oracle學習筆記-1Oracle筆記
- git學習筆記 1Git筆記
- HTML學習筆記(1)HTML筆記
- git學習筆記1Git筆記
- golang 學習筆記1Golang筆記
- mysql8.0學習筆記MySql筆記
- MySQL學習筆記之一MySql筆記
- MySQL學習筆記:索引失效MySql筆記索引
- MySql 學習筆記二:索引MySql筆記索引
- MySQL學習筆記--基本操作MySql筆記
- mysql優化學習筆記MySql優化筆記
- Scrapy 框架 (學習筆記-1)框架筆記
- React學習筆記1—起步React筆記