Mysql數(shù)據(jù)庫中常用操作總結(jié)

下面一起來了解下MySQL數(shù)據(jù)庫中常用操作,相信大家看完肯定會受益匪淺,文字在精不在多,希望Mysql數(shù)據(jù)庫中常用操作這篇短內(nèi)容是你想要的。

目前創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機、網(wǎng)站改版維護、企業(yè)網(wǎng)站設(shè)計、易縣網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

一、Mysql中關(guān)于數(shù)據(jù)庫的基本操作

1、用 SHOW 顯示已有的數(shù)據(jù)庫

句法: SHOW DATABASES [LIKE wild]

如果使用 LIKE wild 部分, wild 字符串可以是一個使用 SQL 的“ %”和“ _”通配符的字符串。

功能: SHOW DATABASES 列出在 MySQL云服務器主機上的數(shù)據(jù)庫。

2、用 Create Dabase 創(chuàng)建數(shù)據(jù)庫

句法: CREATE DATABASE db_name

功能: CREATE DATABASE 用給定的名字創(chuàng)建一個數(shù)據(jù)庫。

如果數(shù)據(jù)庫已經(jīng)存在, 發(fā)生一個錯誤。在 MySQL 中的數(shù)據(jù)庫實現(xiàn)成包含對應數(shù)據(jù)庫中表的文件的目錄。因為數(shù)據(jù)庫在初始創(chuàng)建時沒有任何表,CREATE DATABASE語句只是在 MySQL數(shù)據(jù)目錄下面創(chuàng)建一個目錄。

例如:

mysql>create database myfirst;

然后利用 show databases 觀察效果。

3、用 DROP DATABASE 刪除數(shù)據(jù)庫

句法: DROP DATABASE [IF EXISTS] db_name

功能: DROP DATABASE 刪除數(shù)據(jù)庫中的所有表和數(shù)據(jù)庫。要小心地使用這個命令!

DROP DATABASE返回從數(shù)據(jù)庫目錄被刪除的文件的數(shù)目。通常,這3倍于表的數(shù)量,因為每張表對應于一個“ .MYD”文件、一個“ .MYI”文件和一個“ .frm”文件。

在 MySQL 3.22 或以后版本中,你可以使用關(guān)鍵詞 IF EXISTS 避免“數(shù)據(jù)庫不存在”這個錯誤。

4、用 USE 選用數(shù)據(jù)庫

句法: USE db_name

USE db_name 語句告訴 MySQL 使用 db_name 數(shù)據(jù)庫作為隨后的查詢的缺省數(shù)據(jù)庫。

數(shù)據(jù)庫保持到會話結(jié)束,或發(fā)出另外一個 USE 語句:

mysql> USE db1;

mysql> SELECT count(*) FROM mytable; # selects from db1.mytable

mysql> USE db2;

mysql> SELECT count(*) FROM mytable; # selects from db2.mytable

如果你不是用 USE 語句,那么上面的例子應該寫成:

mysql> SELECT count(*) FROM db1.mytable;

mysql> SELECT count(*) FROM db2.mytable;

由于 use 也是一個 mysql客戶程序的命令,所以你可以在命令行最后不加分號,客戶程序可以得到結(jié)果。

二、Mysql中關(guān)于數(shù)據(jù)表的操作

1、用 SHOW/ DESCRIBE 語句顯示數(shù)據(jù)表的信息

句法:

SHOW TABLES [FROM db_name] [LIKE wild]

or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild]

or SHOW INDEX FROM tbl_name [FROM db_name]

or SHOW TABLE STATUS [FROM db_name] [LIKE wild]

{DESCRIBE | DESC} tbl_name {col_name | wild}

你能使用 db_name.tbl_name 作為 tbl_name FROM db_name 句法的另一種選擇。

SHOW TABLES 列出在一個給定的數(shù)據(jù)庫中的表。你也可以用 mysqlshow db_name命令得到這張表。

SHOW COLUMNS 列出在一個給定表中的列。如果列類型不同于你期望的是基于CREATE TABLE 語句的那樣,注意, MySQL 有時改變列類型。

DESCRIBE 語句提供了類似 SHOW COLUMNS 的信息。 DESCRIBE 提供關(guān)于一張表的列的信息。col_name 可以是一個列名字或包含 SQL 的“ %”和“ _”通配符的一個字符串。這個語句為了與 Oracle 兼容而提供的。

2、用 CREATE TABLE 語句創(chuàng)建數(shù)據(jù)表

CREATE TABLE 語句的基本語法

CREATE TABLE tbl_name(create_definition,...) [TYPE =table_type]

create_definition: col_name type [NOT NULL | NULL] [DEFAULT default_value]

[AUTO_INCREMENT][PRIMARY KEY]

在 MySQL3.22 或以后版本中,表名可以被指定為 db_name.tbl_name,不管有沒有當前的數(shù)據(jù)庫都可以。

在某些情況下, MySQL 隱含地改變在一個 CREATE TABLE 語句給出的一個列說明。

--長度小于 4 的 VARCHAR 被改變?yōu)?CHAR。

--如果在一個表中的任何列有可變長度,結(jié)果是整個行是變長的。因此, 如果一張表包含任何變長的列(VARCHAR、 TEXT 或 BLOB),所有大于 3 個字符的 CHAR列被改變?yōu)?VARCHAR 列。這在任何方面都不影響你如何使用列;在 MySQL 中,VARCHAR 只是存儲字符的一個不同方法。 MySQL 實施這種改變,是因為它節(jié)省空間并且使表操作更快捷。

--TIMESTAMP 的顯示尺寸必須是偶數(shù)且在 2 ~ 14 的范圍內(nèi)。如果你指定 0 顯示尺寸或比 14 大,尺寸被強制為 14。從 1~13 范圍內(nèi)的奇數(shù)值尺寸被強制為下一個更大的偶數(shù)。

--你不能在一個 TIMESTAMP 列里面存儲一個文字 NULL;將它設(shè)為 NULL 將設(shè)置為當前的日期和時間。因為 TIMESTAMP 列表現(xiàn)就是這樣, NULL 和 NOT NULL屬性不以一般的方式運用并且如果你指定他們,將被忽略。 DESCRIBE tbl_name總是報告該 TIMESTAMP 列可能賦予了 NULL 值。

如果你想要知道 MySQL 是否使用了除你指定的以外的一種列類型,在創(chuàng)建或改變你的表之后,發(fā)出一個 DESCRIBE tbl_name 語句即可。

3、利用 SELECT 的結(jié)果創(chuàng)建表

CREATE TABLE ... SELECT 語句使得能利用 SELECT 查詢的結(jié)果直接得出一個新表。只需一步就可以完成任務,不必知道或指定所檢索的列的數(shù)據(jù)類型。這使得很容易創(chuàng)建一個完全用所喜歡的數(shù)據(jù)填充的表,并且為進一步查詢作了準備。

如果你在 CREATE 語句后指定一個 SELECT, MySQL 將為在 SELECT 中所有的單元創(chuàng)鍵新字段。

可以通過選擇一個表的全部內(nèi)容(無 WHERE 子句)來拷貝一個表,或利用一個總是失敗的 WHERE 子句來創(chuàng)建一個空表。

CREATE TABLE test SELECT * from test2;

CREATE TABLE test SELECT * from test2 where 0;

4、用 ALTER TABLE 語句修改表的結(jié)構(gòu)

有時你可能需要改變一下現(xiàn)有表的結(jié)構(gòu),那么 Alter Table 語句將是你的合適選擇。

增加列

alter table tbl_name add col_name type

例如,給表增加一列 weight

alter table pet add weight int;

刪除列

alter table tbl_name drop col_name

例如,刪除列 weight:

alter table pet drop weight;

改變列

alter table tbl_name modify col_name type

例如,改變 weight 的類型:

alter table pet modify weight samllint;

另一種方法是:

alter table tbl_name change old_col_name col_name type

例如:

alter table pet change weight weight samllint;

給列更名

alter table pet change weight wei;

給表更名

alter table tbl_name rename new_tbl

例如,把 pet 表更名為 animal

alter table pet rename animal;

5、用 DROP TABLE 語句刪除數(shù)據(jù)表

DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]

DROP TABLE 刪除一個或多個數(shù)據(jù)庫表。所有表中的數(shù)據(jù)和表定義均被刪除,故小心使用這個命令!

在 MySQL 3.22 或以后版本,你可以使用關(guān)鍵詞 IF EXISTS 類避免不存在表的一個錯

誤發(fā)生。

可以同時指定數(shù)據(jù)庫和表:

DROP TABLE mytest.guestbook;

三、向數(shù)據(jù)表插入行記錄

1、使用 INSERT 語句插入新數(shù)據(jù)

語法: INSERT [INTO] tbl_name [(col_name,...)] VALUES (pression,...),…

INSERT [INTO] tbl_name SET col_name=expression, ...

讓我們開始利用 INSERT 語句來增加記錄,這是一個 SQL 語句,需要為它指定希望插入數(shù)據(jù)行的表或?qū)⒅蛋葱蟹湃氲谋怼?INSERT 語句具有幾種形式:

---可指定所有列的值:

例如:

insert into worker values("tom","tom@yahoo.com");

“ INTO”一詞自 MySQL 3.22.5 以來是可選的。(這一點對其他形式的 INSERT 語句也成立。) VALUES 表必須包含表中每列的值,并且按表中列的存放次序給出。(一般,這就是創(chuàng)建表時列的定義次序。如果不能肯定的話,可使用 DESCRIBE tbl_name 來查看這個次序。)

---使用多個值表,可以一次提供多行數(shù)據(jù)。

insert into worker values("tom","tom@yahoo.com"),("jack","jack@yahoo.com");

有多個值表的 INSERT ... VALUES 的形式在 MySQL 3.22.5 或以后版本中支持。

---可以給出要賦值的那個列,然后再列出值。這對于希望建立只有幾個列需要初始設(shè)置的記錄是很有用的。

insert into worker (name) values ("tom");

這種形式的 INSERT 也允許多個值表:

insert into worker (name) values ("tom"), ("paul");

在列的列表中未給出名稱的列都將賦予缺省值。

---可以 col_name = value 的形式給出列和值。

insert into worker set name=‘tom‘;

在 SET 子句中未命名的行都賦予一個缺省值。使用這種形式的 INSERT 語句不能插入多行。

---一個 expression 可以引用在一個值表先前設(shè)置的任何列。例如,你能這樣:

INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);

但不能這樣:

INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);

2、使用 INSERT…SELECT 語句插入從其他表選擇的行

使用 select 從其它表來直接創(chuàng)建表,甚至可以同時復制數(shù)據(jù)記錄。如果你已經(jīng)擁有了一個表,你同樣可以從 select 語句的配合中獲益。從其它表中錄入數(shù)據(jù),例如:

insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;

你也可以略去目的表的列列表,如果你每一列都有數(shù)據(jù)錄入。

insert into tbl_name1 select col3,col4 from tbl_name2;

INSERT INTO ... SELECT 語句滿足下列條件:

--查詢不能包含一個 ORDER BY子句。

--INSERT 語句的目的表不能出現(xiàn)在 SELECT 查詢部分的 FROM 子句。

3、使用 replace、 replace…select 語句插入

REPLACE 功能與 INSERT 完全一樣,除了如果在表中的一個老記錄具有在一個唯一索引上的新記錄有相同的值,在新記錄被插入之前,老記錄被刪除。對于這種情況, insert語句的表現(xiàn)是產(chǎn)生一個錯誤。REPLACE語句也可以和 SELECT 相配合,所以上面select的內(nèi)容完全適合 REPALCE。

由于 REPLACE 語句可能改變原有的記錄,因此使用時要小心。

4、使用 LOAD 語句批量錄入數(shù)據(jù)

進入MySQL后,使用命令:load data local infile 'C:/tab_user.txt' into table tab_user lines terminated by '\r\n' ignore 1 lines;

該語句的語法如下:

基本語法:

load data  [low_priority] [local] infile 'file_name txt' [replace | ignore]

into table tbl_name

[fields

[terminated by't']

[OPTIONALLY] enclosed by '']

[escaped by'\' ]]

[lines terminated by'n']

[ignore number lines]

[(col_name,   )]

語法部分說明:load data infile語句從一個文本文件中以很高的速度讀入一個表中。使用這個命令之前,mysqld進程(服務)必須已經(jīng)在運行。為了安全原因,當讀取位于云服務器上的文本文件時,文件必須處于數(shù)據(jù)庫目錄或可被所有人讀取。另外,為了對云服務器上文件使用load data infile,在云服務器主機上你必須有file的權(quán)限。

(1)、如果你指定關(guān)鍵詞low_priority,那么MySQL將會等到?jīng)]有其他人讀這個表的時候,才把插入數(shù)據(jù)??梢允褂萌缦碌拿睿?nbsp;

load data  low_priority infile "C:/tab_user.txt" into table tab_user;  

(2)、如果指定local關(guān)鍵詞,則表明從客戶主機讀文件。如果local沒指定,文件必須位于云服務器上。

(3)、replace和ignore關(guān)鍵詞控制對現(xiàn)有的唯一鍵記錄的重復的處理。如果你指定replace,新行將代替有相同的唯一鍵值的現(xiàn)有行。如果你指定ignore,跳過有唯一鍵的現(xiàn)有行的重復行的輸入。如果你不指定任何一個選項,當找到重復鍵時,出現(xiàn)一個錯誤,并且文本文件的余下部分被忽略。例如:

load data  low_priority infile "C:/tab_user.txt" replace into table tab_user;

(4)、分隔符

(a) fields關(guān)鍵字指定了文件記段的分割格式,如果用到這個關(guān)鍵字,MySQL剖析器希望看到至少有下面的一個選項: 

terminated by分隔符:意思是以什么字符作為分隔符

enclosed by字段括起字符

escaped by轉(zhuǎn)義字符

terminated by描述字段的分隔符,默認情況下是tab字符(\t) 

enclosed by描述的是字段的括起字符。

escaped by描述的轉(zhuǎn)義字符。默認的是反斜杠(backslash:\ )  

例如:load data infile "C:/tab_user.txt" replace into table tab_user (id,name) terminated by','  ignore 1 lines;(,作為分隔符)

(b)lines 關(guān)鍵字指定了每條記錄的分隔符默認為'\n'即為換行符

如果兩個字段都指定了那fields必須在lines之前。如果不指定fields關(guān)鍵字缺省值與如果你這樣寫的相同: fields terminated by'\t' enclosed by ’ '' ‘ escaped by'\\'

如果你不指定一個lines子句,缺省值與如果你這樣寫的相同: lines terminated by'\n'

例如:load data infile "C:/tab_user.txt" replace into table test fields terminated by ',' lines terminated by '/n';

(5)、load data infile 可以按指定的列把文件導入到數(shù)據(jù)庫中。當我們要把數(shù)據(jù)的一部分內(nèi)容導入的時候,需要加入一些欄目(列/字段/field)到MySQL數(shù)據(jù)庫中,以適應一些額外的需要。比方說,我們要從Access數(shù)據(jù)庫升級到MySQL數(shù)據(jù)庫的時候

下面的例子顯示了如何向指定的欄目(field)中導入數(shù)據(jù): 

load data infile "C:/tab_user.txt" into table tab_user(id, name);

(6)、當在云服務器主機上尋找文件時,云服務器使用下列規(guī)則: 

(a)如果給出一個絕對路徑名,云服務器使用該路徑名。 

(b)如果給出一個有一個或多個前置部件的相對路徑名,云服務器相對云服務器的數(shù)據(jù)目錄搜索文件。  

(c)如果給出一個沒有前置部件的一個文件名,云服務器在當前數(shù)據(jù)庫的數(shù)據(jù)庫目錄尋找文件。 

例如: /myfile.txt”給出的文件是從云服務器的數(shù)據(jù)目錄讀取,而作為“myfile txt”給出的一個文件是從當前數(shù)據(jù)庫的數(shù)據(jù)庫目錄下讀取。

注意:在數(shù)據(jù)文件***.txt中,如果某個字段中值為空值,則用\N表示。

歡迎加入Java技術(shù)交流群:659270626

看完Mysql數(shù)據(jù)庫中常用操作這篇文章后,很多讀者朋友肯定會想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。

本文標題:Mysql數(shù)據(jù)庫中常用操作總結(jié)
地址分享:http://bm7419.com/article28/goiojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)微信小程序網(wǎng)站內(nèi)鏈、虛擬主機、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)