內(nèi)容回顧
mysql默認端口號:3306
mysql中的超級用戶:root
創(chuàng)建數(shù)據(jù)庫:CREATE DATABASE
修改數(shù)據(jù)庫:ALTER DATABASE
刪除數(shù)據(jù)庫:DROP DATABASE
數(shù)據(jù)類型之整型
** 數(shù)據(jù)類型:數(shù)據(jù)類型是指列废膘、存儲過程參數(shù)潮太、表達式和局部變量的數(shù)據(jù)特征贾虽,它決定了數(shù)據(jù)的存儲格式,代表了不同的信息類型故爵。**
合理選擇數(shù)據(jù)類型,節(jié)省存儲空間(選擇最合適的為不是最大的數(shù)據(jù)類型)
數(shù)據(jù)類型之浮點型
M表示數(shù)字總位數(shù)(整數(shù)部分和小數(shù)部分)D表示小數(shù)的位數(shù)
數(shù)據(jù)類型之日期時間型
TIMESTAMP:1970.1.1-2037.(時間戳:從1970.1.1.0:00::00到當(dāng)前時間的秒數(shù)2^31)
DATA:1000.1.1-999912.31
DATATIME:1000.1.1.00:00-9999.12.31.23:59:5 9
TIME:-8385959-8385959
YEAR:1970-2069
實際開發(fā)日期時間類型用的不多周叮,存在時區(qū)的問題骇钦,大多采用數(shù)字類型取代(以時間戳的格式存儲)
數(shù)據(jù)類型之字符型
char(M):定長宛渐,如果字節(jié)數(shù)少于M,存儲時會在字符串后邊增加空格補齊.如:char(5)眯搭,存放abc窥翩,存儲時會在后邊加兩個空格
varchar(M):變長是多上就存多少
enum:枚舉類型,只能選一個
set:集合類型鳞仙,可以選一個寇蚊,也可以選多個
創(chuàng)建數(shù)據(jù)表
** 概述:數(shù)據(jù)表(或稱表)是數(shù)據(jù)庫最重要的組成部分之一,是其他對象的基礎(chǔ)**
行:記錄棍好、元組
列:字段仗岸、屬性
數(shù)據(jù)表存在于數(shù)據(jù)庫中,要想使用數(shù)據(jù)表梳玫,首先要打開數(shù)據(jù)庫,可使用use命令打開數(shù)據(jù)庫右犹。用法:use databasename
use后加數(shù)據(jù)庫名打開數(shù)據(jù)庫提澎。
- 回顧:打開mysql的命令:
mysql -uroot -proot -P3306 -h127.0.0.1
-u后是用戶名,-p后是密碼念链,-P后是端口號盼忌,-h后是主機地址(127.0.0.1表示本機) *
如何查看當(dāng)前所打開的數(shù)據(jù)庫:SELECT DATABASE();
創(chuàng)建數(shù)據(jù)表:
CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type,
......
)
IF NOT EXISTS 可以省略,column_name 是列名,data_type是數(shù)據(jù)類型掂墓,可以從剛才的數(shù)據(jù)類型中選擇谦纱,“,”是列與列之間的分隔符君编,最后一列可以不寫跨嘉。
** 數(shù)據(jù)表的建立不能脫離項目,要根據(jù)項目需要建立 **
例:
CREATE TABLE tb1(
username VARCAHR(20),
age TINYINT UNSIGNED,
salary FLOAT(8,2) UNSIGNED
);
UNSIGNED:無符號(非負)
FLOAT(8,2):浮點型吃嘿,總8位祠乃,小數(shù)點后2位
salary:工資
查看數(shù)據(jù)表
查看數(shù)據(jù)表命令:SHOW TABLES;
不僅可以查看當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)表梦重,還可以查看其他數(shù)據(jù)庫數(shù)據(jù)表,命令:SHOW TABLES FROM dbname
- SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]
** 查看后當(dāng)前數(shù)據(jù)庫不會改變亮瓷。 **
查看數(shù)據(jù)表結(jié)構(gòu)
查看數(shù)據(jù)表結(jié)構(gòu)命令:SHOW COLUMNS FROM tbl_name
或者:DESC tbl_name
記錄的插入與查找
- 插入記錄:INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...)
中括號里的可以省略琴拧,列名可以省略,省略后默認為所有列嘱支,需要為所有列賦值
例:
INSERT tb1 VALUES('Tom',25,7867.4);
省略列名蚓胸,為所有字段賦值
INSERT tb1(username,salary) VALUES('John',4440.5);
不省略列名,為部分字段賦值
- 簡單的SELECT命令:SELECT expr,... FROM tbl_name
SELECT * FROM tb1;
- 沒有賦值的字段會顯示為null *
空值與非空
- NULL除师,字段值可以為空
- NOT NULL沛膳,字段值禁止為空
兩個不能同時用到一個字段上,原因你懂的
例:
CREATE TABLE tb2(
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED NULL
);
NULL可以不寫馍盟,因為默認就是null(可以為空)
當(dāng)插入記錄時如果不為NOT NULL(不為空)的列賦值于置,會報錯的哦
自動編號
在需要保證某一記錄的唯一性(在數(shù)據(jù)表中這條記錄不存在重復(fù)),這時贞岭,可以為字段添加AUTO_INCREMENT
** 可以為整數(shù)八毯,也可以是浮點數(shù),浮點數(shù)要保證小數(shù)位數(shù)為0 **
AUTO_INCREMENT:
- 自動編號瞄桨,且必須與主鍵組合只用
- 默認情況下话速,起始值為1,每次的增量為1
例:
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT,
username VARCHAR(30) NOT NUL
);
會報錯芯侥,因為自動編號的字段必須定義為主鍵
初涉主鍵約束
主鍵PRIMARY KEY
- 主鍵約束
- 每張數(shù)據(jù)表只能存在一個主鍵
- 主鍵保證記錄的唯一性
- 逐漸自動為NUT NULL
主鍵約束的字段不能為空泊交,建表時會自動加上,自己手動加也不會出錯
例:
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(30) NOT NUL
);
主鍵既可以寫成KEY
也可以寫成PRIMARY KEY
設(shè)為自動編號的字段不用賦值
例:
INSERT tb3(username) VALUES('Tom');
INSERT tb3(username) VALUES('John');
INSERT tb3(username) VALUES('Rsoe');
INSERT tb3(username) VALUES('Dimitar');
使用SELECT
查看后看到id自動加上了
AUTO_INCREMENT
必須和主鍵一起使用柱查,但是PRIMARY KEY
不一定要和自動編號一起使用
CREATE TABLE tb4(
id SMALLINT UNSIGNED PRIMARY KEY,
username VARCHAR(20) NOT NULL
);
主鍵允許賦值廓俭,但是不允許存在相同的值
初涉唯一約束
主鍵只能存在一個,如果還想保證數(shù)據(jù)的唯一性唉工,可以用唯一約束
UNIQUE KEY:
- 唯一約束
- 唯一約束可以保證記錄的唯一性
- 唯一約束的字段可以為空值
- 每張數(shù)據(jù)表可以存在多個唯一約束
唯一約束不約束空值(可以存在多個NULL)
例:
CREATE TABLE tb5(
id SMALLINT UNSIGNED AUTO INCREMENT KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
age TINYINT UNSIGNED
);
表結(jié)構(gòu):
初涉默認約束
DEFAULT:
- 默認值
- 當(dāng)插入記錄時研乒,如果沒有明確為字段賦值,則自動賦予默認值淋硝。
CREATE TABLE tb6(
id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) NOT NULL UNIQUE KEY,
sex ENUM('1','2','3') DEFAULT '3'
);
沒有賦值時系統(tǒng)會使用默認值
總結(jié)
本節(jié)知識點
-
數(shù)據(jù)類型
- 字符型
- 整型
- 浮點型
-
數(shù)據(jù)表操作
- 插入記錄
- 查找記錄
-
記錄操作
- 創(chuàng)建數(shù)據(jù)表
- 約束的使用