數(shù)據(jù)類型
數(shù)據(jù)類型是指在創(chuàng)建表的時(shí)候?yàn)楸碇凶侄?指定數(shù)據(jù)類型,
只有數(shù)據(jù)符合類型要求的才能存儲(chǔ)起來,使用數(shù)據(jù)類型的原則是:夠用就行,盡量使用范圍小的,而不用大的,這樣可以更多的節(jié)省存儲(chǔ)空間。
常用的數(shù)據(jù)類型:
整數(shù):int,bit
小數(shù):decimal
字符串:varchar,char
日期時(shí)間:date,time,datetime
枚舉類型:enum數(shù)據(jù)類型說明:
decimal表示浮點(diǎn)數(shù) ,如decimal(5,2) 表示共存5位數(shù),小數(shù)占2位
char表示固定長度的字符串,如char(3) ,如果填充'ab'時(shí)會(huì)補(bǔ)充多一個(gè)空格為"ab ",3表示字符數(shù)
varchar表示可變長度的字符串,如va rchar(3),填充'ab'時(shí)就會(huì)存儲(chǔ)'ab',3表示字符數(shù)
對(duì)于圖片、音頻、視頻等文件,不存儲(chǔ)在數(shù)據(jù)庫中,而是上傳到某個(gè)服務(wù)商,然后再表中存儲(chǔ)這個(gè)文件的保存路徑
字符串text表示存儲(chǔ)大文本,當(dāng)字符串大于4000時(shí)推薦使用,比如技術(shù)播客
數(shù)據(jù)約束
約束是指數(shù)據(jù)在數(shù)據(jù)類型限定的基礎(chǔ)上
額外增加的要求常見的約束如下:
主鍵 primary key: 物理上存儲(chǔ)的順序,MySQL建議所有表的主鍵字段都叫id,類型為int unsigned
非空 not null: 此字段不允許填寫空值
唯一 unique: 此字段的值不允許重復(fù)
默認(rèn)default: 當(dāng)不填寫字段對(duì)應(yīng)的值會(huì)使用默認(rèn)值,如果填寫時(shí)以填寫為準(zhǔn)
外鍵 foregin key: 對(duì)關(guān)系字段進(jìn)行約束,當(dāng)為關(guān)系字段填寫值時(shí),會(huì)到關(guān)系的表中查詢此值是否存在,如果存在則填寫成功,如果不存在則填寫失敗并拋出異常
補(bǔ)充:Mac電腦MySQL服務(wù)端下載及安裝配置,請(qǐng)看此教程
提示操作都是基于命令行的方式執(zhí)行,暫不使用視圖工具Navicat MySQL操作數(shù)據(jù)庫
數(shù)據(jù)庫登錄和登出
登錄數(shù)據(jù)庫
mysql -uroot -p
-u:后面是登錄的用戶名
-p:后面是登錄密碼,如果不填寫,回車之后會(huì)提示輸入密碼登出數(shù)據(jù)庫
quit或exit或control + d
數(shù)據(jù)庫操作的SQL語句
1、
查看所有數(shù)據(jù)庫
show databases;
2、創(chuàng)建數(shù)據(jù)庫
create database 數(shù)據(jù)庫名 charset=utf8;
3、使用數(shù)據(jù)庫
use 數(shù)據(jù)庫名;
4、查看當(dāng)前使用的數(shù)據(jù)庫
select database();
5、刪除數(shù)據(jù)庫-慎重
drop database 數(shù)據(jù)庫名;
表結(jié)構(gòu)操作的SQL語句
1、
查看當(dāng)前數(shù)據(jù)庫中所有的表
show tables;
2、
創(chuàng)建表
create table 表名(
字段名稱 數(shù)據(jù)類型 可選的約束條件,
column1 datatype contrai,
...
)實(shí)例:
create table students(
id int unsigned primary key auto_increment not null,
name varchar(20) not null,
age tinyint unsigned default 0,
height decimal(5,2),
gender enum('男','女')
)
3、修改表-
添加字段
alter table 表名 add 列名 類型 約束;實(shí)例:
alter table students add birthday datetime;
4、修改表-
修改字段類型
alter table 表名 modify 列名 類型 約束;
備注:modify只能是修改字段類型或約束,不能修改字段名實(shí)例:
alter table students modify birthday date not null;
5、修改表-
修改字段名和字段類型
alter table 表名 change 原名 新名 類型及約束
備注:change 既能對(duì)字段重命名又能修改字段類型還能修改約束實(shí)例:
alter table students change birthday birth datetime not null;
6、修改表-
刪除字段
alter table 表名 drop 列名;實(shí)例:
alter table students drop birthday;
7、修改表-
刪除表
drop table 表名實(shí)例:
drop table students;
8、
查看創(chuàng)表SQL語句
show create table 表名;實(shí)例:
show cr eate table students;
9、
查看創(chuàng)庫SQL語句
show create database 數(shù)據(jù)庫名;實(shí)例:
show create database python;
表數(shù)據(jù)操作的SQL語句
1、
查看數(shù)據(jù)
// 查看所有列
select * from 表名;
實(shí)例:
select * from students;
// 查看指定列
select 列1,列2 from 表名;
實(shí)例:
select name,age from students;
2、
添加數(shù)據(jù)
//全列插入:值得順序與表結(jié)構(gòu)字段的順序完全一一對(duì)應(yīng)
insert into 表名 values(...)
實(shí)例:
insert into students values(0,'xx',default,default,'男')://
部分列插入:值得順序與給出的列順序?qū)?yīng)
insert into 表名(列1,列2..) values(值1,值2...)
實(shí)例:
insert into students(name,age) values('liven',18);//
全列多行插入
insert into 表名 values(...),(...),...;
實(shí)例:
insert into students values(0,'張菲菲',55,1.75,'男'),(0,'張力',40,,1.86,'男');//
部分列多行插入
insert into 表名(列1,列2...) values (值1,值2...),(值1,值2...)...;
實(shí)例:
insert into students(name,height) value ('劉備',1.67), ('曹操,1.77);備注:
主鍵列是主動(dòng)增長的,但是在全列插入時(shí),需要站位,通常使用(0或者null或者default)
在全列插入時(shí),如果字段列有默認(rèn)值,可以使用default來占位,插入后數(shù)據(jù)就是之前設(shè)置的默認(rèn)值
補(bǔ)充:
查看表數(shù)據(jù)(打印表的所有數(shù)據(jù)內(nèi)容):
desc 表名
3、
修改數(shù)據(jù)
update 表名 set 列1= 值1,列2=值2... where 條件;
實(shí)例:
update students height = 1.78,age =18 where name = 'liven';
4、
刪除數(shù)據(jù)
delete from 表名 where 條件;
實(shí)例:
delete from students where age <18;備注:
上面的操作稱為物理刪除,一旦刪除了就不容易恢復(fù),可以使用邏輯刪除的方式來解決這個(gè)問題,比如添加一個(gè)標(biāo)識(shí)的字段判斷該行的數(shù)據(jù)是否被邏輯刪除