您好,登錄后才能下訂單哦!
下面一起來了解下Mysql數據庫中常用操作,相信大家看完肯定會受益匪淺,文字在精不在多,希望Mysql數據庫中常用操作這篇短內容是你想要的。
一、Mysql中關于數據庫的基本操作
1、用 SHOW 顯示已有的數據庫
句法: SHOW DATABASES [LIKE wild]
如果使用 LIKE wild 部分, wild 字符串可以是一個使用 SQL 的“ %”和“ _”通配符的字符串。
功能: SHOW DATABASES 列出在 MySQL云服務器主機上的數據庫。
2、用 Create Dabase 創建數據庫
句法: CREATE DATABASE db_name
功能: CREATE DATABASE 用給定的名字創建一個數據庫。
如果數據庫已經存在, 發生一個錯誤。在 MySQL 中的數據庫實現成包含對應數據庫中表的文件的目錄。因為數據庫在初始創建時沒有任何表,CREATE DATABASE語句只是在 MySQL數據目錄下面創建一個目錄。
例如:
mysql>create database myfirst;
然后利用 show databases 觀察效果。
3、用 DROP DATABASE 刪除數據庫
句法: DROP DATABASE [IF EXISTS] db_name
功能: DROP DATABASE 刪除數據庫中的所有表和數據庫。要小心地使用這個命令!
DROP DATABASE返回從數據庫目錄被刪除的文件的數目。通常,這3倍于表的數量,因為每張表對應于一個“ .MYD”文件、一個“ .MYI”文件和一個“ .frm”文件。
在 MySQL 3.22 或以后版本中,你可以使用關鍵詞 IF EXISTS 避免“數據庫不存在”這個錯誤。
4、用 USE 選用數據庫
句法: USE db_name
USE db_name 語句告訴 MySQL 使用 db_name 數據庫作為隨后的查詢的缺省數據庫。
數據庫保持到會話結束,或發出另外一個 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客戶程序的命令,所以你可以在命令行最后不加分號,客戶程序可以得到結果。
二、Mysql中關于數據表的操作
1、用 SHOW/ DESCRIBE 語句顯示數據表的信息
句法:
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 列出在一個給定的數據庫中的表。你也可以用 mysqlshow db_name命令得到這張表。
SHOW COLUMNS 列出在一個給定表中的列。如果列類型不同于你期望的是基于CREATE TABLE 語句的那樣,注意, MySQL 有時改變列類型。
DESCRIBE 語句提供了類似 SHOW COLUMNS 的信息。 DESCRIBE 提供關于一張表的列的信息。col_name 可以是一個列名字或包含 SQL 的“ %”和“ _”通配符的一個字符串。這個語句為了與 Oracle 兼容而提供的。
2、用 CREATE TABLE 語句創建數據表
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,不管有沒有當前的數據庫都可以。
在某些情況下, MySQL 隱含地改變在一個 CREATE TABLE 語句給出的一個列說明。
--長度小于 4 的 VARCHAR 被改變為 CHAR。
--如果在一個表中的任何列有可變長度,結果是整個行是變長的。因此, 如果一張表包含任何變長的列(VARCHAR、 TEXT 或 BLOB),所有大于 3 個字符的 CHAR列被改變為 VARCHAR 列。這在任何方面都不影響你如何使用列;在 MySQL 中,VARCHAR 只是存儲字符的一個不同方法。 MySQL 實施這種改變,是因為它節省空間并且使表操作更快捷。
--TIMESTAMP 的顯示尺寸必須是偶數且在 2 ~ 14 的范圍內。如果你指定 0 顯示尺寸或比 14 大,尺寸被強制為 14。從 1~13 范圍內的奇數值尺寸被強制為下一個更大的偶數。
--你不能在一個 TIMESTAMP 列里面存儲一個文字 NULL;將它設為 NULL 將設置為當前的日期和時間。因為 TIMESTAMP 列表現就是這樣, NULL 和 NOT NULL屬性不以一般的方式運用并且如果你指定他們,將被忽略。 DESCRIBE tbl_name總是報告該 TIMESTAMP 列可能賦予了 NULL 值。
如果你想要知道 MySQL 是否使用了除你指定的以外的一種列類型,在創建或改變你的表之后,發出一個 DESCRIBE tbl_name 語句即可。
3、利用 SELECT 的結果創建表
CREATE TABLE ... SELECT 語句使得能利用 SELECT 查詢的結果直接得出一個新表。只需一步就可以完成任務,不必知道或指定所檢索的列的數據類型。這使得很容易創建一個完全用所喜歡的數據填充的表,并且為進一步查詢作了準備。
如果你在 CREATE 語句后指定一個 SELECT, MySQL 將為在 SELECT 中所有的單元創鍵新字段。
可以通過選擇一個表的全部內容(無 WHERE 子句)來拷貝一個表,或利用一個總是失敗的 WHERE 子句來創建一個空表。
CREATE TABLE test SELECT * from test2;
CREATE TABLE test SELECT * from test2 where 0;
4、用 ALTER TABLE 語句修改表的結構
有時你可能需要改變一下現有表的結構,那么 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 語句刪除數據表
DROP TABLE [IF EXISTS] tbl_name [, tbl_name,...]
DROP TABLE 刪除一個或多個數據庫表。所有表中的數據和表定義均被刪除,故小心使用這個命令!
在 MySQL 3.22 或以后版本,你可以使用關鍵詞 IF EXISTS 類避免不存在表的一個錯
誤發生。
可以同時指定數據庫和表:
DROP TABLE mytest.guestbook;
三、向數據表插入行記錄
1、使用 INSERT 語句插入新數據
語法: INSERT [INTO] tbl_name [(col_name,...)] VALUES (pression,...),…
INSERT [INTO] tbl_name SET col_name=expression, ...
讓我們開始利用 INSERT 語句來增加記錄,這是一個 SQL 語句,需要為它指定希望插入數據行的表或將值按行放入的表。 INSERT 語句具有幾種形式:
---可指定所有列的值:
例如:
insert into worker values("tom","tom@yahoo.com");
“ INTO”一詞自 MySQL 3.22.5 以來是可選的。(這一點對其他形式的 INSERT 語句也成立。) VALUES 表必須包含表中每列的值,并且按表中列的存放次序給出。(一般,這就是創建表時列的定義次序。如果不能肯定的話,可使用 DESCRIBE tbl_name 來查看這個次序。)
---使用多個值表,可以一次提供多行數據。
insert into worker values("tom","tom@yahoo.com"),("jack","jack@yahoo.com");
有多個值表的 INSERT ... VALUES 的形式在 MySQL 3.22.5 或以后版本中支持。
---可以給出要賦值的那個列,然后再列出值。這對于希望建立只有幾個列需要初始設置的記錄是很有用的。
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 可以引用在一個值表先前設置的任何列。例如,你能這樣:
INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
但不能這樣:
INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
2、使用 INSERT…SELECT 語句插入從其他表選擇的行
使用 select 從其它表來直接創建表,甚至可以同時復制數據記錄。如果你已經擁有了一個表,你同樣可以從 select 語句的配合中獲益。從其它表中錄入數據,例如:
insert into tbl_name1(col1,col2) select col3,col4 from tbl_name2;
你也可以略去目的表的列列表,如果你每一列都有數據錄入。
insert into tbl_name1 select col3,col4 from tbl_name2;
INSERT INTO ... SELECT 語句滿足下列條件:
--查詢不能包含一個 ORDER BY子句。
--INSERT 語句的目的表不能出現在 SELECT 查詢部分的 FROM 子句。
3、使用 replace、 replace…select 語句插入
REPLACE 功能與 INSERT 完全一樣,除了如果在表中的一個老記錄具有在一個唯一索引上的新記錄有相同的值,在新記錄被插入之前,老記錄被刪除。對于這種情況, insert語句的表現是產生一個錯誤。REPLACE語句也可以和 SELECT 相配合,所以上面select的內容完全適合 REPALCE。
由于 REPLACE 語句可能改變原有的記錄,因此使用時要小心。
4、使用 LOAD 語句批量錄入數據
進入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進程(服務)必須已經在運行。為了安全原因,當讀取位于云服務器上的文本文件時,文件必須處于數據庫目錄或可被所有人讀取。另外,為了對云服務器上文件使用load data infile,在云服務器主機上你必須有file的權限。
(1)、如果你指定關鍵詞low_priority,那么MySQL將會等到沒有其他人讀這個表的時候,才把插入數據。可以使用如下的命令:
load data low_priority infile "C:/tab_user.txt" into table tab_user;
(2)、如果指定local關鍵詞,則表明從客戶主機讀文件。如果local沒指定,文件必須位于云服務器上。
(3)、replace和ignore關鍵詞控制對現有的唯一鍵記錄的重復的處理。如果你指定replace,新行將代替有相同的唯一鍵值的現有行。如果你指定ignore,跳過有唯一鍵的現有行的重復行的輸入。如果你不指定任何一個選項,當找到重復鍵時,出現一個錯誤,并且文本文件的余下部分被忽略。例如:
load data low_priority infile "C:/tab_user.txt" replace into table tab_user;
(4)、分隔符
(a) fields關鍵字指定了文件記段的分割格式,如果用到這個關鍵字,MySQL剖析器希望看到至少有下面的一個選項:
terminated by分隔符:意思是以什么字符作為分隔符
enclosed by字段括起字符
escaped by轉義字符
terminated by描述字段的分隔符,默認情況下是tab字符(\t)
enclosed by描述的是字段的括起字符。
escaped by描述的轉義字符。默認的是反斜杠(backslash:\ )
例如:load data infile "C:/tab_user.txt" replace into table tab_user (id,name) terminated by',' ignore 1 lines;(,作為分隔符)
(b)lines 關鍵字指定了每條記錄的分隔符默認為'\n'即為換行符
如果兩個字段都指定了那fields必須在lines之前。如果不指定fields關鍵字缺省值與如果你這樣寫的相同: 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 可以按指定的列把文件導入到數據庫中。當我們要把數據的一部分內容導入的時候,需要加入一些欄目(列/字段/field)到MySQL數據庫中,以適應一些額外的需要。比方說,我們要從Access數據庫升級到MySQL數據庫的時候
下面的例子顯示了如何向指定的欄目(field)中導入數據:
load data infile "C:/tab_user.txt" into table tab_user(id, name);
(6)、當在云服務器主機上尋找文件時,云服務器使用下列規則:
(a)如果給出一個絕對路徑名,云服務器使用該路徑名。
(b)如果給出一個有一個或多個前置部件的相對路徑名,云服務器相對云服務器的數據目錄搜索文件。
(c)如果給出一個沒有前置部件的一個文件名,云服務器在當前數據庫的數據庫目錄尋找文件。
例如: /myfile.txt”給出的文件是從云服務器的數據目錄讀取,而作為“myfile txt”給出的一個文件是從當前數據庫的數據庫目錄下讀取。
注意:在數據文件***.txt中,如果某個字段中值為空值,則用\N表示。
歡迎加入Java技術交流群:659270626
看完Mysql數據庫中常用操作這篇文章后,很多讀者朋友肯定會想要了解更多的相關內容,如需獲取更多的行業信息,可以關注我們的行業資訊欄目。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。