溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL如何在命令行操作表數(shù)據(jù)

發(fā)布時(shí)間:2022-01-14 16:55:46 來源:億速云 閱讀:119 作者:小新 欄目:數(shù)據(jù)庫

這篇文章主要介紹了MySQL如何在命令行操作表數(shù)據(jù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

 
1. 與界面操作相比,通過SQL語句操作更為靈活,功能更為強(qiáng)大。
 
  為了讓客服端能識(shí)別漢字:
 
set character_set_client=gb2312;
 
為了讓結(jié)果不出現(xiàn)亂碼:
 
set character_set_results=gb2312;
  www.2cto.com  
2.       插入記錄命令
 
    一旦創(chuàng)建了數(shù)據(jù)庫和表,下一步就是向表里插入數(shù)據(jù)。通過insert或replace語句可以向表中插入一行或多行數(shù)據(jù)。(replace語句的用法和insert基本相同,使用replace可以在插入數(shù)據(jù)之前將與新紀(jì)錄沖突的舊記錄刪除,從而使新紀(jì)錄正常插入)
 
insert into 表名(字段名1,字段名2.。。。)
 
values(值1,值2.。。。);
 
例如:
 
Insert into xs(學(xué)號(hào),姓名,專業(yè)名,總學(xué)分,照片,備注)values('081101','王林','計(jì)算機(jī)' ,50,null,null);
 
或者:(如果提供的值的個(gè)數(shù)和順序與表中字段一致,可以省略字段名)
 
insert into xs values('081101','王林','計(jì)算機(jī)',50,null,null);
 
或者:(如果只給表中的部分字段插入值時(shí),要指明字段名)
 
insert into xs(學(xué)號(hào),姓名,專業(yè)名,出生日期,總學(xué)分)
 
values('081101','王林','計(jì)算機(jī)','1990-02-10',50);
 
如果只給表的部分列插入數(shù)據(jù),需要指定這些列。對(duì)于沒有指出的列,它們的值根據(jù)列默認(rèn)值或有關(guān)屬性來確定,MySQL處理的原則是:
 
3.  insert 語法格式:
 
Insert [low_priority |delayed | high_priority] [ignore]
 
     [into] 表名 [(字段名,...)]  www.2cto.com  
 
     values ({expr | default},...),(...),...
 
     | SET col_name={expr| default}, ...
 
     [ on duplicate keyupdate=expr, ... ]
 
(1)具有identity屬性的列,系統(tǒng)生成序號(hào)值來唯一標(biāo)志列。
 
(2)具有默認(rèn)值的列,其值為默認(rèn)值。
 
(3)沒有默認(rèn)值的列,若允許為空值,則其值為空值;若不允許為空值,則出錯(cuò)。
 
(4)類型為timestamp的列,系統(tǒng)自動(dòng)賦值。
 
values子句:包含各列需要插入的數(shù)據(jù)清單,數(shù)據(jù)的順序要與列的順序相對(duì)應(yīng)。若表名后不給出列名,則在values子句中要給出每一列(除identity和timestamp類型的列)的值,如果列值為空,則值必須置為null,否則會(huì)出錯(cuò)。values子句中的值:
 
(1)expr:可以是一個(gè)常量、變量或一個(gè)表達(dá)式,也可以是空值null,其值的數(shù)據(jù)類型要與列的數(shù)據(jù)類型一致。例如,列的數(shù)據(jù)類型為int,插入的數(shù)據(jù)是‘aaa’就會(huì)出錯(cuò)。當(dāng)數(shù)據(jù)為字符型時(shí)要用單引號(hào)括起。
 
(2)default:指定為該列的默認(rèn)值。前提是該列原先已經(jīng)指定了默認(rèn)值。如果列清單和values清單都為空,則insert會(huì)創(chuàng)建一行,每個(gè)列都設(shè)置成默認(rèn)值。
 
Inert語句支持下列修飾符:  www.2cto.com  
 
low_priority:可以使用在insert、delete和update等操作中,當(dāng)原有客戶端正在讀取數(shù)據(jù)時(shí),延遲操作的執(zhí)行,直到?jīng)]有其他客戶端從表中讀取為止。
 
delayed:若使用此關(guān)鍵字,則服務(wù)器會(huì)把待插入的行放到一個(gè)緩沖器中,而發(fā)送insert delayed語句的客戶端會(huì)繼續(xù)運(yùn)行。如果表正在被使用,則服務(wù)器會(huì)保留這些行。當(dāng)表空閑時(shí),服務(wù)器開始插入行,并定期檢查是否有新的讀取請(qǐng)求(僅適用于myisam、memory和archive表)。
 
High_priority:可以使用在selectT和insert操作中,使操作優(yōu)先執(zhí)行。
 
Ignore:使用此關(guān)鍵字,在執(zhí)行語句時(shí)出現(xiàn)的錯(cuò)誤就會(huì)被當(dāng)做警告處理。
 
onduplicate key update…:使用此選項(xiàng)插入行后,若導(dǎo)致uniqe key或primary key出現(xiàn)重復(fù)值,則根據(jù)update后的語句修改舊行(使用此選項(xiàng)時(shí)delayed被忽略)。
 
set子句:set子句用于給列指定值,使用set子句時(shí)表名的后面省略列名。要插入數(shù)據(jù)的列名在set子句中指定,col_name為指定列名,等號(hào)后面為指定數(shù)據(jù),未指定的列,列值指定為默認(rèn)值。
 
4.  使用insert語句可以向表中插入一行數(shù)據(jù),也可以插入多行數(shù)據(jù),插入的行可以給出每列的值,也可只給出部分列的值,還可以向表中插入其他表的數(shù)據(jù)。
 
使用insert into…select…,可以快速地從一個(gè)或多個(gè)表中向一個(gè)表插入多個(gè)行。語法格式如下:
 
Insert [low_priority |delayed | high_priority] [ignore]
 
     [into] 表名 [(字段名,...)]
 
    select ...
 
[ on duplicate key update=expr, ... ]
 
Select語句中返回的是一個(gè)查詢到的結(jié)果集,insert語句將這個(gè)結(jié)果集插入到指定表中,但結(jié)果集在每行數(shù)據(jù)的字段數(shù)、字段的數(shù)據(jù)類型要與被操作的表完全一致。
 
    MySQL還支持圖片的存儲(chǔ),圖片一般可以以路徑的形式來存儲(chǔ),即插入圖片可以采用直接插入圖片的存儲(chǔ)路徑。當(dāng)然也可以直接插入圖片本身,只要用load_file函數(shù)即可。
 
例如:
 
Insert into XS  values('081102', '程明', '計(jì)算機(jī)', 1, '1991-02-01',50, 'D:\IMAGE\picture.jpg', null);
 
下列語句是直接存儲(chǔ)圖片本身:
 
Insert into XS
 
    values('081102', '程明', '計(jì)算機(jī)', 1, '1991-02-01',50, load_file('D:\IMAGE\picture.jpg'), null);
 
    在表建完后設(shè)置主鍵,duplicateentry ‘學(xué)號(hào)’for key 1 ;
 
5. 刪除記錄:  www.2cto.com  
 
delete from 表名   //刪除表中的所有記錄,此表變?yōu)榱丝毡?br/> 
delete from 表名 where 條件   //刪除表中符合條件的記錄
 
例如:delete from xs where 學(xué)號(hào)='081102';
 
drop table xs ; //刪除整張表,結(jié)構(gòu)和記錄
 
truncate table 表名   //快速刪除表中的所有記錄
 
從單個(gè)表中刪除,語法格式:
 
Delete [low_priority] [quick] [ignore] from表名
 
 [where where_definition]  [orderby...] [limit row_count]
 
說明:
 
● quick修飾符:可以加快部分種類的刪除操作的速度。
 
● from子句:用于說明從何處刪除數(shù)據(jù),后跟要?jiǎng)h除數(shù)據(jù)的表名。
 
● where子句:where_definition中的內(nèi)容為指定的刪除條件。如果省略where子句則刪除該表的所有行,where子句后面詳細(xì)介紹
 
●order by子句:各行按照子句中指定的順序進(jìn)行刪除,此子句只在與limit聯(lián)用時(shí)才起作用。
 
●limit子句:用于告知服務(wù)器在控制命令被返回到客戶端前被刪除的行的最大值。
 
6.  從多個(gè)表中刪除行,語法格式:
 
delete [low_priority] [quick] [ignore] 表名[.*] [,表名 [.*] ...]  from table_references  [wherewhere_definition]
 
或:
 
delete [low_priority] [quick] [ignore]
 
   from  tbl_name[.*] [, tbl_name[.*] ...]
 
   Using  table_references   [where where_definition]
 
說明:對(duì)于第一種語法,只刪除列于from子句之前的表中對(duì)應(yīng)的行。對(duì)于第二種語法,只刪除列于from子句之中(在using子句之前)的表中對(duì)應(yīng)的行。作用是,可以同時(shí)刪除多個(gè)表中的行,并使用其他的表進(jìn)行搜索。
 
例子:
 
假設(shè)有3個(gè)表t1、t2、t3,它們都含有id列。要?jiǎng)h除t1中id值等于t2的id值的所有行和t2中id值等于t3的id值的所有行,使用如下語句:
 
delete   t1, t2
 
     from  t1, t2, t3
 
     where  t1.id=t2.id and t2.id=t3.id;
 
或:  www.2cto.com  
 
Delete from t1, t2 
 
     using t1, t2, t3
 
     where  t1.id=t2.id and  t2.id=t3.id;
 
7.  使用truncate table語句將刪除指定表中的所有數(shù)據(jù),因此也稱其為清除表數(shù)據(jù)語句。
 
語法格式:
 
truncate table 表名;
 
說明:由于TRUNCATETABLE語句將刪除表中的所有數(shù)據(jù),且無法恢復(fù),因此使用時(shí)必須十分小心。
 
truncate table 在功能上與不帶where子句的delete語句相同,二者均刪除表中的全部行。但 truncate table比delete速度快,且使用的系統(tǒng)和事務(wù)日志資源少。delete語句每次刪除一行,并在事務(wù)日志中為所刪除的每行記錄一項(xiàng)。而truncate table通過釋放存儲(chǔ)表數(shù)據(jù)所用的數(shù)據(jù)頁來刪除數(shù)據(jù),并且只在事務(wù)日志中記錄頁的釋放。使用 truncate table,auto_increment計(jì)數(shù)器被重新設(shè)置為該列的初始值。
 
注意:對(duì)于參與了索引和視圖的表,不能使用 truncate table刪除數(shù)據(jù),而應(yīng)使用delete語句。
 
8.       修改記錄(更新記錄)
 
   要修改表中的一行數(shù)據(jù),可以使用update語句,update可以用來修改一個(gè)表,也可以修改多個(gè)表。簡(jiǎn)要格式:
 
update 表名
 
set 字段名1=值1 [,字段名2=值2.。。。]
 
where 條件
 
修改單個(gè)表,語法格式:
 
update[low_priority] [ignore] 表名
 
   set col_name1=expr1 [, col_name2=expr2 ...]
 
   [where where_definition]
 
   [order by ...]  [limit row_count]
 
說明: 
 
 set子句:根據(jù)where子句中指定的條件對(duì)符合條件的數(shù)據(jù)行進(jìn)行修改。若語句中不設(shè)定where子句,則更新所有行。col_name1、col_name2…為要修改列值的列名,expr1、expr2…可以是常量、變量或表達(dá)式??梢酝瑫r(shí)修改所在數(shù)據(jù)行的多個(gè)列值,中間用逗號(hào)隔開。
 
9.   修改多個(gè)表,語法格式:
 
update [low_priority] [ignore] table_references
 
   set col_name1=expr1 [, col_name2=expr2 ...]
 
   [where where_definition]
 
說明:table_references中包含了多個(gè)表的聯(lián)合,各表之間用逗號(hào)隔開。
 
10. 按SQL包的格式導(dǎo)進(jìn)來:source SQL包路徑;
 
顯示表的記錄:select * from 表名;  www.2cto.com  
 
插入記錄時(shí),除了數(shù)值類型不用加引號(hào),其他類型都要加單引號(hào)(比如:char、date等)
 
11.       show語句
 
show tables或show tables from 庫名:顯示當(dāng)前數(shù)據(jù)庫中所有表的名稱。
 
show databases:顯示MySQL中所有數(shù)據(jù)庫的名稱。
 
show columns from 表名 from庫名或show columnsfrom 庫名.表名:顯示表中列的名稱。
 
show  grants for user_name:顯示一個(gè)用戶的權(quán)限,顯示結(jié)果類似于grant命令。
 
show index from table_name:顯示表的索引。
 
show  staus:顯示一些系統(tǒng)特定資源的信息,例如,正在運(yùn)行的線程數(shù)量。
 
show variables:顯示系統(tǒng)變量的名稱和值。
 
show  processlist:顯示系統(tǒng)中正在運(yùn)行的所有進(jìn)程,也就是當(dāng)前正在執(zhí)行的查詢。大多數(shù)用戶可以查看他們自己的進(jìn)程,但是如果他們擁有process權(quán)限,就可以查看所有人的進(jìn)程,包括密碼。
 
show table status:顯示當(dāng)前使用或者指定的database中的每個(gè)表的信息。信息包括表類型和表的最新更新時(shí)間。
 
show privileges:顯示服務(wù)器所支持的不同權(quán)限。
 
show create database 庫名:顯示創(chuàng)建某一個(gè)數(shù)據(jù)庫的create database語句。
 
show create table 表名:顯示創(chuàng)建一個(gè)表的create table語句。
 
show events:顯示所有事件的列表。
 
show innoDB status:顯示InnoDB存儲(chǔ)引擎的狀態(tài)。
 
show logs:顯示BDB存儲(chǔ)引擎的日志。
 
show warnings:顯示最后一個(gè)執(zhí)行的語句所產(chǎn)生的錯(cuò)誤、警告和通知。
 
show errors:只顯示最后一個(gè)執(zhí)行語句所產(chǎn)生的錯(cuò)誤。
 
show [storage] engines:顯示安裝后的可用存儲(chǔ)引擎和默認(rèn)引擎。
 
show procedure status:顯示數(shù)據(jù)庫中所有存儲(chǔ)過程基本信息,包括所屬數(shù)據(jù)庫、存儲(chǔ)過程名稱、創(chuàng)建時(shí)間等。
 
show create procedure sp_name:顯示某一個(gè)存儲(chǔ)過程的詳細(xì)信息。
 
12. describe語句(即desc)
 
describe語句用于顯示表中各列的信息,結(jié)果等于showcolumns from語句。
 
語法格式:
 
{describe | desc} tb1_name [col_name |wild ]
 
說明:
 
desc是describe的簡(jiǎn)寫,二者用法相同。
  www.2cto.com  
col_name可以是一個(gè)列名稱,或一個(gè)包含‘%’和‘_’的通配符的字符串,用于獲得對(duì)于帶有與字符串相匹配的名稱的各列的輸出。沒有必要在引號(hào)中包含字符串,除非其中包含空格或其他特殊字符。
 
例如:
 
顯示學(xué)生表: desc|describe xs;
 
     顯示學(xué)生表學(xué)號(hào)列:   desc xs 學(xué)號(hào);
 
注意:用圖形界面時(shí),輸入數(shù)據(jù)的時(shí)候要防止出現(xiàn)不必要的空格,否則檢索數(shù)據(jù)時(shí)可能會(huì)出現(xiàn)。
 

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“MySQL如何在命令行操作表數(shù)據(jù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI