數(shù)據(jù)庫的意義
在學(xué)習(xí)python以來,寫了一點(diǎn)程序畸颅,雖然也只是個(gè)人用的担巩,但是數(shù)據(jù)的存儲(chǔ)已經(jīng)開始變得麻煩起來。而且自己的寫的小小程序自然可以把數(shù)據(jù)存到本機(jī)没炒,但是一旦是立足于網(wǎng)絡(luò)通訊的軟件涛癌,自然要有一個(gè)專門的存儲(chǔ)數(shù)據(jù)的地方。而對于這一點(diǎn)送火,數(shù)據(jù)庫也就應(yīng)運(yùn)而生了拳话。
數(shù)據(jù)庫的功能大致就包括
a. 將數(shù)據(jù)保存到文件或內(nèi)存
b. 接收特定的命令,然后對文件進(jìn)行相應(yīng)的操作
而這之中的特定的命令种吸,對應(yīng)到MySQL自然就是SQL語句弃衍,所以相應(yīng)的想要學(xué)習(xí)數(shù)據(jù)庫,除了運(yùn)行原理之外坚俗,首先得要學(xué)會(huì)sql語句镜盯。
一點(diǎn)區(qū)分
數(shù)據(jù)庫有許多的類型,通過我個(gè)人粗淺的了解猖败,大致分為關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫形耗。而既然有分類,那自然就有區(qū)別辙浑,雖然主要學(xué)習(xí)mysql激涤,但我覺得還是應(yīng)當(dāng)了解一點(diǎn)兩者的區(qū)別。
*上述圖片非原創(chuàng)判呕,轉(zhuǎn)載于https://blog.csdn.net/lijinqi1987/article/details/51823506
數(shù)據(jù)類型
數(shù)據(jù)庫的安裝與連接等一系列操作倦踢,這里就不在贅述,要想了解sql語句的規(guī)則侠草,首先要了解它所支持的數(shù)據(jù)類型辱挥。
數(shù)字:
- unsigned與signed表示有無符號
- 整數(shù):tinyint int bigint
- 浮點(diǎn)數(shù):float double 不精準(zhǔn),長度不長的可以用
decimal :內(nèi)部存的時(shí)候按照字符串來存边涕。非常精確
字符串
- char晤碘,varchar:后面必須加括號褂微,內(nèi)部表示長度(最長255字符)
char類型如果沒有達(dá)到規(guī)定的長度,就會(huì)傳入空值园爷,讓他占滿規(guī)定長度宠蚂。
varchaar傳入空值,節(jié)省空間童社,但是速度沒有char快求厕。因?yàn)閏har的長度都是固定的,所以查找速度快扰楼。(非常重要的一點(diǎn)區(qū)別)
PS: 所以一般創(chuàng)建數(shù)據(jù)表時(shí)呀癣,定長(char)列往前放,變長的往后放弦赖。
定長舉例:手機(jī)號碼项栏,變長:人物地址。
text:長度比255長得多蹬竖,最長可超過65535.
一般來說數(shù)據(jù)庫上傳文件: 文件存硬盤忘嫉,db存路徑
時(shí)間類型
- DATETIME YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
- TIMESTAMP YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某時(shí))
其它
*枚舉 enum 表示以后的取值只能在枚舉中給出的值中取
- 集合 set 同枚舉類似,但是取值可以取多個(gè)值案腺,但必須都在集合類型的值之中庆冕。
簡單的語句
操作文件夾
create database ***;
create database *** default charset utf8; 給定默認(rèn)編碼以支持中文
show databases;#展示數(shù)據(jù)庫
drop database ***;#刪除數(shù)據(jù)庫
操作文件
show tables;#展示表格
#創(chuàng)建表格
create table t1(
列名 類型 null,
列名 類型 not null,
列名 類型 not null auto_increment primary key,
id int,
name char(10)
)engine=innodb default charset=utf8;
# innodb 支持事務(wù),原子性操作
# myisam myisam
#default charset=utf8; 給定默認(rèn)編碼
auto_increment 表示:自增
primary key: 表示 約束(不能重復(fù)且不能為空); 加速查找
not null: 是否為空
#清空表:
delete from t1;不會(huì)清空索引
truncate table t1;速度快劈榨,并且會(huì)清空索引
#刪除表:
drop table t1;
操作文件中內(nèi)容
插入數(shù)據(jù):
insert into **(列名,列名) values(**,**);
刪除:
delete from ** where **<6
修改:
update ** set age=18;
update ** set age=18 where age=17;
查看數(shù)據(jù):
select * from**;