初識MySQL
登陸數據庫
- 配置環境變量:在系統環境變量path
C:\Program Files\MySQL\MySQL Server 5.7\bin
- 登陸數據庫:
cmd命令行下:mysql -h 127.0.0.1 -P 3306 -u root -p
輸入密碼:
注意:大寫P,端口號;小寫p:密碼
數據類型
- 整數類型
整數類型 | 字節 | 最大值 | 最小值 |
---|---|---|---|
TINYINT | 1 | 有符號-128 無符號0 |
有符號127 無符號255 |
SMALLINT | 2 | 有符號-32768 無符號0 |
有符號32767 無符號65535 |
MEDIUMINT | 3 | 有符號-8388608 無符號0 |
有符號8388607 無符號1677215 |
INT/INTEGER | 4 | 有符號-2147483648 無符號0 |
有符號2147483647 無符號4294967295 |
BIGINT | 8 | 有符號-9223372036854775808 無符號0 |
有符號9223372036854775807 無符號18446744073709551615 |
硬件十分發達:已經不需要考慮內存了,一般使用INT就夠了(BIGINT太大了不怎麼用)
- 浮點數據類型:
浮點數類型 | 字節 |
---|---|
FLOAT | 4 |
DOUBLE | 8 |
- 日期類型:
日期類型 | 字節 | 最大值 | 最小值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
(時間戳)TIMESTAMP | 4 | 19700101080001 | 2038年某一時刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
- 字符串類型:
字符串類型 | 字節 | 描述及存儲希求 |
---|---|---|
CHAR(M) | M | M爲0~255之間的數 |
VARCHAR(M) | M | M爲0~255之間的數 |
區別:
1)char是定長的,也就是當你輸入的字符小於你指定的數目時,char(8),你輸入的字符小於8時,它會再後面補空值。
當你輸入的字符大於指定的數時,它會截取超出的字符。
2)R。存儲變長數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,
把它定義爲 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。
爲什麼“+1”呢?這一個字節用於保存實際使用了多大的長度。
約束
-
完整性檢查就是指檢查數據的準確性和完整性;
mysql數據庫管理系統提供了一系列機制來檢查數據庫表中的數
據是否滿足規定的條件,以保證數據庫表中數據的準確性和一致性,這種機制就是 約束 ! -
約束:
| 關鍵字 | 解釋 |
| ------- | ----|
| NOT NULL | 約束字段的值不能爲空 |
| DEFAULT | 設置字段的默認值 |
| UNIQUE KEY | 字段的值唯一 |
| PRIMARY KEY | 主鍵非空且唯一 |
| AUTO INCREMENT | 字段自動增長 |
| FOREIGN KEY(FK) | 約束字段爲表的外鍵 |企業裏的默認外鍵名稱:FK_數字編號,同一個數據庫中的外鍵編號不能相同 1)自動增長約束必須是主鍵,而且數據類型是int 2)自動增長的數字不會回退 子表:擁有外鍵的表 父表:子表外鍵指向的主鍵所在的表 注意: 1)字表的取值範圍受到父表的約束 2)先建父表,再建字表;先有父表數據,再有字表數據 3)刪除的時候先刪除子表,再刪除父表
數據庫的使用
- 系統自帶的數據庫:不同版本數據庫軟件默認數據庫不同(莫動!!!)
information_schema
mysql
performance_schema
sys
以上四個爲系統數據庫(自帶的)
sakila
world
- 查看命令
show databases;顯示所有數據庫
show tables;顯示當前使用數據庫的所有表
- 創建數據庫(創建數據庫的時候指定數據庫字符集爲utf8,不是UTF-8):
create dadabase 數據庫名稱;
create database if not exists 數據庫名稱 default charset=utf8;
- 刪除數據庫:
drop database 數據庫名稱;
- 使用數據庫(選擇一個數據庫進行操作):use 數據庫名稱;
- 創建表:
create table commoditytype(
ct_id int(11) primary key,
ct_name varchar(50) not null //最後一行不用加逗號
)default charset=utf8; //建議寫上,不寫默認數據庫編碼;結束命令的分號別忘了
create table commodity(
c_id int(11) primary key,
c_name varchar(50) not null,
c_madein varchar(50) not null,
c_type int(11) not null,
c_inprice int(11) not null,
c_outprice int(11) ,
c_num int(11) default '100',
constraint fk_1 foreign key (c_type) references commoditytype (ct_id)
)default charset=utf8;
create table customer(
cu_id int(11) primary key,
cu_name varchar(50) not null,
cu_phone varchar(50) not null,
cu_gender int(11) not null default '1',
cu_address varchar(100) not null
)default charset=utf8;
create table `order`( //order是關鍵字使用反引號
o_id int(11) primary key auto_increment,
o_cuid int(11) not null,
o_cid int(11) not null,
o_num int(11) not null,
constraint fk_2 foreign key (o_cuid) references customer (cu_id),
constraint fk_3 foreign key (o_cid) references commodity (c_id)
)default charset=utf8;
-
desc 表名;描述表明
desc
`
order`
;
desc customer; -
表名,字段名等如果和數據庫關鍵字相同,使用反引號(esc下,tab上)