日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最全面实用的MySql操作大全。

發布時間:2025/5/22 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最全面实用的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 表名; deletetruncate差別, 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
select username,password from user where uid <10 select username,password from user where uid != 10 select username,password from user where uid between 10 and 20
  • 邏輯運算
    邏輯運算符: and 、 or、 not
select username,password from user where uid < 100 and uid > 20; select username,password from user where uid > 100 or uid < 20;
  • 集合運算
    集合運算符: in、 not in
select username,password form user where uid in (2,3,4) select username,password form user where uid not in (2,3,4)
  • 判空
    判空運算: is null、 is not null
select username,password from user where username is null
  • 字符串串的模糊查詢(like)
    通配符 _代表一個字符, %代表任意長度字符串串
select * from user where username like '王_'; select * from user where username like '王%';

3 排序(order by)
asc 升序(默認)、 desc 降序

select * from user order by age asc; select * from user order by age desc; 多字段排序 select name,age from php_user_history order by age desc,name;# 如果在第?一列上有相同的值,在具有相同的age的記錄上再按name升序排列

4 限制結果集(limit)
limit n # 取前n條記錄
limit offset,n #從第offset條開始取,取n條

select * from php_user_history limit 3; select * from php_user_history limit 4,2; 注意結果集中記錄從0開始數數, offset相對于0開始 實現分頁必須的技術點 limit (page-1)*num,num

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 uid, count(*) num from php_forum group by uid; select uid,title, count(*) num from forum group by uid having count(*) >=2; havingwhere的區別: where針對原始表進行過濾 having 是針對分組進行過濾

查詢小結:
整體順序不不能顛倒
[]表示可選,可以有也可以沒有
select 字段 from 表名 [where 條件][group by ] [having][order by ] [limit]

8 字符集和存儲引擎

  • 為了能夠正常顯示中文,必須把數據庫的字符集設置為utf8
修改mysql的配置?文件 cd /etc/mysql/mysql.conf.d sudo cp mysql.cnf mysql.cnf.bak sudo vim mysql.cnf 在[mysqld]下增加一句: character_set_server = utf8 保存并重啟服務 sudo systemctl restart mysql.service #重啟服務
  • 數據庫引擎
    可以使?用show engines命令查看數據庫引擎
show engines \G


通過上面的比較我們可以了了解到, InnoDB是唯?一能夠支持外鍵、事務以及行行鎖的
存儲引擎,所以我們之前說它更適合互聯網應用,而且它也是較新的MySQL版本
中默認使用的存儲引擎。

  • myisam和innodb的區別
    myisam查詢速度快,不支持事務、不支持外鍵、支持表鎖
    innodb增刪改效率高,支持事務、?支持外鍵,支持行鎖

總結

以上是生活随笔為你收集整理的最全面实用的MySql操作大全。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。