最全面实用的MySql操作大全。
- 學(xué)習(xí)筆記總結(jié),比較多, 建議直接 ctrl + f 快速查詢關(guān)鍵詞。
- 本文中可能有少量疊詞,請(qǐng)多多包涵。
連接數(shù)據(jù)庫
命令:
mysql -h服務(wù)器?地址 -u?用戶名 -p #不要再p后面直接跟密碼數(shù)據(jù)庫操作命令:
#1.查看庫 show databases; #2. 創(chuàng)建庫 create database 數(shù)據(jù)庫名 default charset=utf8;# 數(shù)據(jù)庫名不要純數(shù) 字,不要用漢字 #3. 刪除庫 drop database 數(shù)據(jù)庫名; #4. 選中庫 use 數(shù)據(jù)庫名; #5. 查看表 show tables; #6.查看數(shù)據(jù)庫創(chuàng)建語句句 show create database 數(shù)據(jù)庫名 #7.查看選中的數(shù)據(jù)庫 select database() #8 修改數(shù)據(jù)庫字符集 alter database student default charset=utf8;注意事項(xiàng):
每條命令結(jié)束必須使用; 或者 \g 結(jié)束
退出mysql使用命令quit或exit
創(chuàng)建表:
create table [if not exists] 表名( 列名1 類型 [限制], 列名2 類型 [限制], ... 列列名n 類型 [限制] #最后?列列沒有逗號(hào) ) [engine=myisam | innodb][ default charset=utf8]; primary key 主鍵 不允許有重復(fù)值,不允許為空 auto_increment ?增?,只對(duì)int型主鍵起作? #復(fù)合主鍵 mysql> create table grade( sid int , cid int, score float, primary key(sid,cid));刪除表
drop table 表名;復(fù)制表結(jié)構(gòu)
create table 表名 like 其他表名;查看表結(jié)構(gòu)
desc 表名;查看建表語句
show create table 表名;修改表
#### 修改字段類型 alter table 表名 modify 字段名 類型 [限制]#增加字段 alter table 表名 add [column] 字段名 類型 [限制];#刪除字段 alter table 表名 drop [column] 字段名;修改字段名和類型 alter table 表名 change [column] 舊字段名 新字段名 類型 [限制];#修改表名 alter table 表名 rename 新表名 alter table 表名 [engine=myisam] [default charset=utf8];#### 可以通過first、 after指定插?位置 alter table student add sno varchar(3) not null after sid; //在 sid列后插?入alter table student add sid int primary key auto_increment first;//在第?列插?字段限制
primary key 不不允許空值,唯?一
not null ?非空
unique 唯?一
default 缺省,默認(rèn)值
數(shù)據(jù)類型
char 和 varchar 的區(qū)別:
- char的執(zhí)行行效率高于varchar , varchar 相對(duì)于 char 節(jié)省存儲(chǔ)空間
如果使用char 傳入的數(shù)據(jù)的長(zhǎng)度 小于指定的長(zhǎng)度的時(shí)候 存儲(chǔ)的實(shí)際長(zhǎng)度
不不夠的會(huì)拿空格來填充 - 如果使用 varchar 傳入的數(shù)據(jù)的長(zhǎng)度 小于指定的長(zhǎng)度的時(shí)候 存儲(chǔ)的實(shí)際長(zhǎng)度 為傳進(jìn)來的數(shù)據(jù)的長(zhǎng)度
日期時(shí)間型
枚舉enum
#是?定義類型,可以多選一,實(shí)際上存的值是1, 2, 3... alter table user add sex enum('男','?女女') default '男';集合 set
類似復(fù)選框,可以存多個(gè)值 alter table student add hobby set('看電影','玩游戲','敲代碼','燙 頭')增刪改查
insert
寫法?一: insert into 表名(字段1,字段2...) values(值1,值2...); 省略了字段列表,則按照建表時(shí)的字段順序進(jìn)?行插入,每一列都要給值 寫法?: insert into 表名 values(值1,值2...); 寫法三:插?入多個(gè)記錄 insert into 表名(字段1,字段2...) values(值1,值2...), (值1,值2...), (值1,值2...).... 寫法四: insert into 表名(name,age,sex) select name,age,sex from stars; insert into histroy_student select * from student;update
update 表名 set 字段1=值1,字段2=值2... where 條件 #不不加where修改的是所 有的記錄delete
刪除表中的數(shù)據(jù),?增主鍵的值不不會(huì)重新開始 delete from 表名 where 條件; #如果不加條件,會(huì)刪除表中所有數(shù)據(jù),慎重使? alter table 表名 auto_increment = 5 # 設(shè)置自增主鍵開始值 清空表,?自增主鍵的值重新開始編號(hào) truncate truncate table 表名,清空表中所有記錄,等價(jià)于delete from 表名; delete和truncate差別, truncate后,表中自增主鍵值從1開始數(shù)據(jù)查詢
基本結(jié)構(gòu) : select 字段名列表 from 表名
1 基礎(chǔ)查詢 :
select username,password from user; select usernname as ?用戶名, password as 密碼 from user; #可以給字段起 別名 select * from user; #查詢所有字段,慎用,一般不不建議使?用,會(huì)導(dǎo)致無法優(yōu)化 sql語句句 select 2018,username,password from user; #可以有常量量,表達(dá)式 select sname,2018-year(sbirthday) from student; #year是mysql的內(nèi)置函數(shù) select distinct username from user; #去除重復(fù)記錄 distinct 針對(duì)查詢結(jié) 果去除重復(fù)記錄,不針對(duì)字段2 條件查詢 (where):
關(guān)系運(yùn)算:
- 關(guān)系運(yùn)算符: > 、 >=、 <、 <=、 =、 !=、 <>、 between and
- 邏輯運(yùn)算
邏輯運(yùn)算符: and 、 or、 not
- 集合運(yùn)算
集合運(yùn)算符: in、 not in
- 判空
判空運(yùn)算: is null、 is not null
- 字符串串的模糊查詢(like)
通配符 _代表一個(gè)字符, %代表任意長(zhǎng)度字符串串
3 排序(order by)
asc 升序(默認(rèn))、 desc 降序
4 限制結(jié)果集(limit)
limit n # 取前n條記錄
limit offset,n #從第offset條開始取,取n條
5 集合函數(shù)
count統(tǒng)計(jì)結(jié)果集中記錄數(shù) max 最大值 min 最小值 avg 平均值,只針對(duì)數(shù)值類型統(tǒng)計(jì) sum 求和,只針對(duì)數(shù)值類型統(tǒng)計(jì) 注意,集合函數(shù)不能直接使用在where后面的條件里,但可以在子查詢中 select count(*) num from user; select count(distinct age) num from user; //去除重復(fù)記錄 select * from student where sno = max(sno);//錯(cuò)誤6 分組(group by)
將結(jié)果集分組統(tǒng)計(jì),規(guī)則:
出現(xiàn)了groub by的查詢語句句, select后面的字段只能是集合函數(shù)和group by后
面有的字段,不要跟其它字段
對(duì)分組進(jìn)?行過濾,可以使用having
查詢小結(jié):
整體順序不不能顛倒
[]表示可選,可以有也可以沒有
select 字段 from 表名 [where 條件][group by ] [having][order by ] [limit]
8 字符集和存儲(chǔ)引擎
- 為了能夠正常顯示中文,必須把數(shù)據(jù)庫的字符集設(shè)置為utf8
- 數(shù)據(jù)庫引擎
可以使?用show engines命令查看數(shù)據(jù)庫引擎
通過上面的比較我們可以了了解到, InnoDB是唯?一能夠支持外鍵、事務(wù)以及行行鎖的
存儲(chǔ)引擎,所以我們之前說它更適合互聯(lián)網(wǎng)應(yīng)用,而且它也是較新的MySQL版本
中默認(rèn)使用的存儲(chǔ)引擎。
- myisam和innodb的區(qū)別
myisam查詢速度快,不支持事務(wù)、不支持外鍵、支持表鎖
innodb增刪改效率高,支持事務(wù)、?支持外鍵,支持行鎖
總結(jié)
以上是生活随笔為你收集整理的最全面实用的MySql操作大全。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flask上传文件到本地(底层方法实现)
- 下一篇: Flask发送邮件,最基础