python學(xué)習(xí)筆記-數(shù)據(jù)庫02_SQL

數(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ù)庫
quitexitcontrol + 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ù)是否被邏輯刪除

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容