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