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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql常用命令汇总

發布時間:2025/3/8 数据库 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql常用命令汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 基本命令
        • 連接數據庫
        • 查看數據庫
        • 使用數據庫
        • 查看表
        • 查看表結構
        • 顯示表的細節
        • 修改用戶密碼
        • 解決MySQL 5.5,出現亂碼問題
        • 聲明字符集
    • DDL
      • 創建表
      • 查看表中的結構
      • 修改表
        • 添加表中的列
        • 刪除表中的列
        • 修改表中的列中屬性的數據類型
        • 修改表名
        • 修改表的字符集為gbk
        • 修改表中的列名
        • 刪除表:
        • 重命名
        • 創建主鍵
    • DML
      • 普通查詢
          • 單表全字段查詢
          • 單表個別字段查詢
          • 多表查詢
      • 條件查詢
          • 單表條件查詢
          • 多表條件查詢
      • 嵌套查詢
      • 并查詢
      • 交查詢
      • 插入
          • 全字段插入
          • 多全字段插入
          • 個別字段插入
      • 更新
      • 刪除
        • 刪除單個數據
        • 刪除表中全部數據,數據與結構丟失
        • 刪除表,數據丟失,結構保留
    • DQL
        • 查詢指定列的數據
        • 條件查詢
        • 模糊查詢
        • 對數據排序
          • 升序(asc,默認)
          • 降序(desc)
        • 聚合函數
        • 日期類型
        • where 用法
        • group用法
        • having用法
        • order by用法
        • limit查詢結果數限制
      • 索引
        • 什么是索引
        • 索引的優點
        • 索引的缺點
        • 索引的類型
          • 普通索引
          • 唯一索引
          • 主鍵索引
          • 聚集索引
          • 非聚集索引
          • 索引舉例
      • 刪除表數據drop、truncate和delete的用法

DML(data manipulation language):數據操作語言,用來操作數據庫表中的記錄。 它們是SELECT、UPDATE、INSERT、DELETE,就象它的名字一樣,這4條命令是用來對數據庫里的數據進行操作的語言

DDL(data definition language):數據定義語言,用來定義數據庫對象;創建庫、表、列等。 DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定義或改變表(TABLE)的結構,數據類型,表之間的鏈接和約束等初始化工作上,他們大多在建立表時使用

DCL(Data Control Language):數據控制語言,用來定義訪問權限和安全級別。 是數據庫控制功能。是用來設置或更改數據庫用戶或角色權限的語句,包括(grant,deny,revoke等)語句。在默認狀態下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人員才有權力執行DCL

DQL :數據查詢語言,用來查詢數據。

基本命令

連接數據庫

mysql -u root -p

查看數據庫

show databases;

使用數據庫

use data_analysis;

查看表

show tables;

查看表結構

desc table

顯示表的細節

show create table 表名;

修改用戶密碼

方法一:
5.7以前:

use mysel; update uer set password=password('1234')where user='root';

5.7以后:

update user set authention_string=password('1234') where user='root' and Host = 'localhost';

然后刷新MySQL的系統權限相關表:flush privileges;

方法二:
修改密碼,使用bin文件中的語句,前提是先配好壞境變量:

mysqladmin -u用戶名 -p舊密碼 password 新密碼 mysqladmin -uroot -p123456 password 123

解決MySQL 5.5,出現亂碼問題

SET character_set_client =gbk; //設置客服端的編碼
SET character_set_results =gbk; //設置服務器端結果返回的編碼
SET character_set_connection =gbk; //設置客服端與服務端連接時的編碼

聲明字符集

set names 模式名;(字符集不同會報錯) set names gbk;

DDL

創建表

create tables 表名(內容) create table class( stu int, name varchar20, age int );

查看表中的結構

desc 表名;

修改表

添加表中的列

alter table 表名 add 列名 數據類型;

alter table skt add(score int not null);

刪除表中的列

alter table 表名 drop 列名;(若只剩最后一個字段則無法刪除)

alter table skt drop column score;

修改表中的列中屬性的數據類型

alter table 表名 modify 屬性名(id) 數據類型;

修改表名

rename table 原表名 to 新表名;

修改表的字符集為gbk

alter table 表名 character set 字符集名稱;

修改表中的列名

alter table 表名 change 原始列名 新列名 數據類型;

alter table skt change name score int not null;

刪除表:

drop table 表名;

重命名

alter table 舊表名 rename to 新表名;

創建主鍵

alter table 表名 add constraint 主鍵名 primary key(列名);

DML

在sql命令格式使用的先后順序上,group by先于order by。

普通查詢

select命令的標準格式如下:

SELECT select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression_r ]
[ HAVING search_condition ]
[ ORDER BY order_expression_r [ ASC | DESC ] ]

單表全字段查詢

查詢表中的所有數據
select * from 表名;

select * from skt;
單表個別字段查詢

select 字段一,字段二 from 表名;

select username from t1;
多表查詢

select 表一字段,表二字段,表三字段,…… from 表一,表二,表三,……;

select skt.username,skt.score,ig.sno from skt,ig;

條件查詢

單表條件查詢

select 字段1,字段2 from 表名 where 條件;

select * from skt where socre>90;
多表條件查詢

select 表一字段,表二字段 from 表一,表二 where 條件;

select skt.username,skt.score,ig.sno from skt,ig where skt.id=ig.id;

嵌套查詢

select 字段一,字段二…… from 表名 where 條件(查詢);

select name from ig where id=(select id from skt where id=90);

并查詢

(select id from skt )union(select id from ig);

交查詢

select id from skt where id in (select id from ig);

插入

全字段插入

insert into 表名 (id,Sname,Ssex) values (1,'xxx','male');

insert into msg (id,title,name,content) values1,‘初來乍到’,‘張三’,‘我剛來’)
多全字段插入

insert into 表名 (列1,列2...列N) values (值1,值2...值N);(允許一次插入多行,在內容處增加)

個別字段插入

insert inton 表名(字段名) values(v1),(v2);

insert into skt(id) values(004);

更新

update 表名 set 更改的字段名=值 where 條件;

把一個表中所有學生成績都改變為 90 :update 表名 set score 列名=90;
修改指定學生的成績:update 表名 set score=60 where name='zws';
修改指定學生的成績和年齡:

update 表名 set score=60,age=19 where name='hjx';` update 表名 set age=age+1 where name='zws';

刪除

刪除單個數據

delete from 表名 where 列名=值; //單個數據

delete from ig where id=12;

刪除表中全部數據,數據與結構丟失

delete from 表名; //表中全部數據 結構丟失

刪除表,數據丟失,結構保留

truncate table 表名; //表中全部數據 空表

DQL

查詢指定列的數據

select 列名1,列名2,···from 表名;

條件查詢

select * from 表名 where 列名=(>,>=,<,<=,!=)值 (and,or....);in(set) 固定的范圍值;

模糊查詢

select * from 表名 where 列名 like '__'(幾個下劃線,表示幾個字母或數字);
模糊查詢:用到的詞:’‘like’’,’’%’’,"__".
“like”->像,"%"->通配任意字符,“_”->單個字符。

where name like ‘諾基亞%;(用以查詢帶“諾基亞”的數據) where name like‘諾基亞__’;(用以查詢“諾基亞xx”的數據(幾個下劃線代表幾個數))

實例:
(1)查詢名字(可類比)有5個字符組成,并且第五個字符是b:

select * from 表名 where 列名 like '_ _ _ _ b';

(2)查詢名字(可類比) 開頭是 z :

select * from 表名 where 列名 like 'z%';(% 表示后面的);

(3)查詢名字中包含 z 的信息:

select * from 表名 where 列名 like '%z%';

(4)查詢名字中第二個字母為 z 的信息:

select * from 表名 where 列名 like '_z%';

(5)查詢單獨一個屬性的信息:

select 列名 from 表名; select *,age+score from 表名; select *,ifnull(age,0) + ifnull(score,0) as 別名 from student;//為空的變為零

(6)過濾重復的值

select distinct 列名 from 表名; //去掉重復的信息

對數據排序

升序(asc,默認)
select * from 表名 order by 列名 (或asc); //默認是升序;
降序(desc)
select * from 表名 order by 列名 desc; //降序 select * from 表名 order by 列名 desc,列名 desc;

聚合函數

count(): 統計指定不為NULL的記錄行數 ,count(字段名)不包含NULL;

select conut(*) from 表名;

max():計算指定列的最大值,max(colunm)返回字母序最大的,返回數值最大的

select max(name) from skt;

avg() :計算指定列的平均值,如果指定的列不是數值型,那么計算為0,對字符串和時間無效。

select avg(score) from skt;

min():計算指定列的最小值,min(colunm)返回字母序最小值,返回數值最小值

select min(name) from skt;

sum() :計算指定列的數值和,對字符串和時間無效

select sum(score) from t1;

日期類型

year類型:eg.'2018'; data類型:eg.'1992-08-12'; time類型:eg.'12:12:32'; datetime類型:eg.'1987-05-03 14:32:08'

where 用法

where 用法: where id>2;where id!=2; where id in (1,值2...值N);(查詢id在1到N中的數據) where id between A and B;(查詢在A到B中的數據) (where用來找位置)

group用法

group通常與統計函數連用;
統計函數:max(最大),min(最小),sum(求總和),avg(求平均),count(求總行數)

select id,max(price) from goods group by id; (通過以id分組找出表goods中price列最大值,并顯示出每組id及最大值) select avg(price) from goods; select count(*) from goods group by id;

having用法

select 列名1,列名2 from 表名 where 位置 having 篩選條件; select name,id,price from goods where id=3 having price>200;having用來篩選)

order by用法

order by 列名;(升序排列) order by 列名 desc;(降序排列) order by的多字段排序:order by1,2;(先按列1排再按列2排)

limit查詢結果數限制

在語句最后,起限制條目的作用。 limit offset n; 指跳過前offset個,然后再取n個。 select * from ig limit 2;

索引

什么是索引

索引,使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。
  在關系數據庫中,索引是一種與表有關的數據庫結構,它可以使對應于表的SQL語句執行得更快。索引的作用相當于圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。
  當表中有大量記錄時,若要對表進行查詢,第一種搜索信息方式是全表搜索,是將所有記錄一一取出,和查詢條件進行一一對比,然后返回滿足條件的記錄,這樣做會消耗大量數據庫系統時間,并造成大量磁盤I/O操作;第二種就是在表中建立索引,然后在索引中找到符合查詢條件的索引值,最后通過保存在索引中的ROWID(相當于頁碼)快速找到表中對應的記錄。
  索引是一個單獨的、物理的數據庫結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識值的數據頁的邏輯指針清單。

索引的優點

1、大大的加快了數據的檢索速度;
2、創建唯一索引,保證數據庫表中每條數據的唯一性;
3、加快表與表之間的連接;
4、使用排序和分組檢索數據時,可以顯著的加快排序和分組的時間;

索引的缺點

1、索引需要占物理空間;
2、當對表中的數據進行增刪改是,索引也要動態維護,降低了數據庫的維護性;
3、在創建索引時,必須要確定要創建的索引列和索引類型;

索引的類型

普通索引

這是最基本的索引,而且沒有唯一性之類的限制 
創建普通索引:create index 索引名 on 表名(列名 asc/desc);(升序/降序索引)

唯一索引

唯一索引是不允許其中任何兩行具有相同索引值的索引。
當現有數據中存在重復的鍵值時,大多數數據庫不允許將新創建的唯一索引與表一起保存。
數據庫還可能防止添加將在表中創建重復鍵值的新數據。例如,如果在 employee 表中職員的姓 (lname) 上創建了唯一索引,則任何兩個員工都不能同姓。
創建唯一索引:create unique index 索引名 on 表名 (列名1,列名2,……);

主鍵索引

數據庫表經常有一列或列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。在數據庫關系圖中為表定義主鍵將自動創建主鍵索引,主鍵索引是唯一索引的特定類型。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對數據的快速訪問。建議建立唯一索引時,直接創建主鍵索引就好了。

聚集索引

該索引中鍵值的邏輯順序決定了表中相應行的物理順序。聚集索引類似于電話簿,按姓氏排列數據。由于聚集索引規定數據在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣。

--創建 CREATE CLUSTERED INDEX [IndexName] ON [TableName]([ColumnName],[ColumnName],...) --刪除 DROP INDEX [TableName].[IndexName]

聚集索引使用注意事項
  (1) 定義聚集索引鍵時使用的列越少越好;
  (2) 使用下列運算符返回一個范圍值的查詢:BETWEEN、>、>=、< 和 <=,可以按物理順序更快的返回一個范圍;
  (3) 被連續訪問的列;
  (4) 返回大型結果集的查詢;
  (5) 經常被使用表聯接或 GROUP BY 子句的查詢訪問的列;一般來說,這些是外鍵列。對 ORDER BY 或 GROUP BY 子句中指定的列進行索引,可以使 SQL Server 不必對數據進行排序,因為這些行已經排序。這樣可以提高查詢性能;
  (6) OLTP 類型的應用程序,這些程序要求進行非常快速的單行查找(一般通過主鍵)。應在主鍵上創建聚集索引;

聚集索引不適用于
  (1) 頻繁更改的列 。這將導致整行移動(因為 SQL Server 必須按物理順序保留行中的數據值,修改了一行數據,改行物流順序改變了,其他行的物流順序也要跟著改變)。這一點要特別注意,因為在大數據量事務處理系統中數據是易失的;
  (2) 寬鍵。來自聚集索引的鍵值由所有非聚集索引作為查找鍵使用,因此存儲在每個非聚集索引的葉條目內;

非聚集索引

數據存儲在一個地方,索引存儲在另一個地方,索引帶有指針指向數據的存儲位置。非聚集索引中的項目按索引鍵值的順序存儲,而表中的信息按另一種順序存儲(這可以由聚集索引規定)。對于非聚集索引,可以為在表非聚集索引中查找數據時常用的每個列創建一個非聚集索引。有些書籍包含多個索引。例如,一本介紹園藝的書可能會包含一個植物通俗名稱索引,和一個植物學名索引,因為這是讀者查找信息的兩種最常用的方法。

--創建 CREATE NONCLUSTERED INDEX [IndexName] ON [TableName]([ColumnName],[ColumnName]...) --刪除 DROP INDEX [TableName].[IndexName]
索引舉例

刪除索引:drop index 索引名 on 表名;

drop index stuIndex on student; where型的子查詢:指把內層查詢的結果作為外層查詢的比較條件。 from型的子查詢:把內層的查詢結果當成臨時表,供外層sql再次查詢 exists型的子查詢:把外層的查詢結果,拿到內層,看內層的查詢是否成立。

用SQL語言CREATE INDEX語句定義表STUDENT的SNAME字段的降序索引;

Create unique index stusname on student(sname desc);

用SQL語言CREATE INDEX語句定義表SC的GRADE字段的升序索引;

Create unique index scgrade on sc(grade);

用SQL語言CREATE INDEX語句定義表SC的GRADE字段的升序索引;

Create unique index scgrade on sc(grade);

int(19):

指定數字的顯示寬度為19,與實際存儲數值的范圍無關

float(7,2):

7是顯示寬度指示器,指定顯示的浮點數為7位數字(與float實際存儲值的范圍無關), 2 代表小數點后只有兩位小數(第三位會四舍五入后插入數據庫)

decimal(7,2):

7表示數值的精度,即實際保存到數據庫的有效數字的總個數; 2代表小數點后的位數(同上)

刪除表數據drop、truncate和delete的用法

drop

drop table tb --tb表示數據表的名字

刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以后要新增數據是不可能的,除非新增一個表。
例如:一個班就是一個表,學生就是表中的數據,學生的職務就是定義
drop table class,就是把整個班移除.學生和職務都消失

truncate

truncate table tb

刪除內容、釋放空間但不刪除定義。與drop不同的是,他只是清空表數據而已,保留表的數據結構。

同樣也是一個班,他只去除所有的學生.班還在,職務還在,如果有新增的學生可以進去,也可以分配上職務

注意:truncate 不能刪除行數據,要刪就要把表清空

關于truncate的總結:

truncate table 在功能上與不帶 WHERE 子句的 delete語句相同:二者均刪除表中的全部行。
但 truncate 比 delete速度快,且使用的系統和事務日志資源少。
delete 語句每次刪除一行,并在事務日志中為所刪除的每行記錄一項。所以可以對delete操作進行roll back

1、truncate 在各種表上無論是大的還是小的都非常快。如果有ROLLBACK命令Delete將被撤銷,而 truncate 則不會被撤銷。
2、truncate 是一個DDL語言,向其他所有的DDL語言一樣,他將被隱式提交,不能對 truncate 使用ROLLBACK命令。
3、truncate 將重新設置高水平線和所有的索引。在對整個表和索引進行完全瀏覽時,經過 truncate 操作后的表比Delete操作后的表要快得多。
4、truncate 不能觸發任何Delete觸發器。
5、當表被清空后表和表的索引講重新設置成初始大小,而delete則不能。
6、不能清空父表

delete
delete table tb 或 delete table tb where 條件
雖然也是刪除整個表的數據,但是過程是痛苦的(系統一行一行地刪,效率較truncate低)

刪除內容不刪除定義,不釋放空間。三兄弟之中最容易欺負的一個

總結

以上是生活随笔為你收集整理的Mysql常用命令汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

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