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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql中需要提交的操作_MySQL常用操作及基础知识

發(fā)布時間:2023/12/19 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql中需要提交的操作_MySQL常用操作及基础知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原標題:MySQL常用操作及基礎知識

1、啟動和關閉mysql服務器:

service mysql start

service mysql stop

2、重啟MySQL服務:

service mysql restart

3、確認是否啟動成功,mysql節(jié)點處于LISTEN狀態(tài)表示啟動成功:

sudo netstat -tap | grep mysql

4、進入mysql shell界面:

mysql -u root -p

5、連接MYSQL:

格式: mysql -h主機地址 -u用戶名 -p用戶密碼 (注:u與root可以不用加空格,其它也一樣)

1、連接到本機上的MYSQL

找到mysql的安裝目錄,一般可以直接鍵入命令mysql -uroot -p,回車后提示你輸密碼,如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進入到MYSQL中了.

2、連接到遠程主機上的MYSQL

假設遠程主機的IP為:10.0.0.1,用戶名為root,密碼為123。則鍵入以下命令:

mysql -h10.0.0.1 -uroot -p123

6、退出MYSQL命令 :

exit (回車)

7、查詢mysql正在執(zhí)行的進程:

show processlist;

8、查看用戶:

usemysql;

select * from user;

9、新建用戶:

CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';

user_name:要創(chuàng)建用戶的名字。

host:表示要這個新創(chuàng)建的用戶允許從哪臺機登陸,如果只允許從本機登陸,則填 ‘localhost’ ,如果允許從遠程登陸,則填 ‘%’

password:新創(chuàng)建用戶的登陸數(shù)據(jù)庫密碼,如果沒密碼可以不寫。

例:

CREATE USER ‘aaa’@‘localhost’ IDENTIFED BY ‘123456’; //表示創(chuàng)建的新用戶,名為aaa,這個新用戶密碼為123456,

只允許本機登陸

CREATE USER 'bbb'@'%' IDENTIFED BY '123456';//表示新創(chuàng)建的用戶,名為bbb,這個用戶密碼為123456,

可以從其他電腦遠程登陸mysql所在服務器

CREATE USER ‘ccc’@‘%’ ;//表示新創(chuàng)建的用戶ccc,沒有密碼,可以從其他電腦遠程登陸mysql服務器

10、授權用戶:

GRANT privileges ON databasename.tablename TO ‘username’@‘host’

privileges:表示要授予什么權力,例如可以有 select , insert ,delete,update等,如果要授予全部權力,則填 ALL

databasename.tablename:表示用戶的權限能用在哪個庫的哪個表中,如果想要用戶的權限很作用于所有的數(shù)據(jù)庫所有的表,則填 * . *,*是一個通配符,表示全部。

’username‘@‘host’:表示授權給哪個用戶。

例如:

grant all on *.* to 'test'@'localhost'; #給test用戶授權,讓test用戶能給所有庫所有表實行所有的權力

GRANT select,insert ON zje.zje TO ‘aaa’@‘%’;//表示給用戶aaa授權,讓aaa能給zje庫中的zje表 實行 insert

和 select。

注意:

用以上命令授權的用戶不能給其他用戶授權,如果想這個用戶能夠給其他用戶授權,就要在后面加上 WITH GRANT OPTION

如: GRANT ALL ON *.* TO ’aaa‘@'%' WITH GRANT OPTION;

11、限制ip登錄:

例如,設置mysql只有172.29.8.72和192.168.3.39可以連接上

GRANT ALL ON *.* TO 'username'@'172.29.8.72' IDENTIFIED BY 'password' WITH GRANT OPTION;

GRANT ALL ON *.* TO 'username'@'192.168.3.39' IDENTIFIED BY 'password' WITH GRANT OPTION;

flush privileges;

12、刪除用戶:

命令:DROP USER ‘user_name’@‘host’

例:

drop user 'test'@'%'; #刪除用戶test

13、顯示數(shù)據(jù)表模式:

use 數(shù)據(jù)庫名;

show columns from 表名;

14、mysql數(shù)據(jù)類型:

MySQL支持多種類型,大致可以分為三類:數(shù)值、日期/時間和字符串(字符)類型。

MySQL支持所有標準SQL數(shù)值數(shù)據(jù)類型。作為SQL標準的擴展,MySQL也支持整數(shù)類型TINYINT、MEDIUMINT和BIGINT

15、插入數(shù)據(jù):

INSERT INTO table_name ( field1, field2,...fieldN )

VALUES

( value1, value2,...valueN );

如果數(shù)據(jù)是字符型,必須使用單引號或者雙引號,如:“value”。

16、查詢數(shù)據(jù):

SELECT column_name,column_name

FROM table_name

[WHERE Clause]

[LIMIT N][ OFFSET M]

查詢語句中你可以使用一個或者多個表,表之間使用逗號(,)分割,并使用WHERE語句來設定查詢條件。

SELECT 命令可以讀取一條或者多條記錄。

你可以使用星號(*)來代替其他字段,SELECT語句會返回表的所有字段數(shù)據(jù)

你可以使用 WHERE 語句來包含任何條件。

你可以使用 LIMIT 屬性來設定返回的記錄數(shù)。

你可以通過OFFSET指定SELECT語句開始查詢的數(shù)據(jù)偏移量。默認情況下偏移量為0。

17、limit和offset用法

mysql里分頁一般用limit來實現(xiàn)

1、select* from article LIMIT 1,3

2、select * from article LIMIT 3 OFFSET 1

上面兩種寫法都表示取2,3,4三條條數(shù)據(jù)

當limit后面跟兩個參數(shù)的時候,第一個數(shù)表示要跳過的數(shù)量,后一位表示要取的數(shù)量,例如

select* from article LIMIT 1,3 就是跳過1條數(shù)據(jù),從第2條數(shù)據(jù)開始取,取3條數(shù)據(jù),也就是取2,3,4三條數(shù)據(jù)

當 limit后面跟一個參數(shù)的時候,該參數(shù)表示要取的數(shù)據(jù)的數(shù)量

例如 select* from article LIMIT 3 表示直接取前三條數(shù)據(jù),類似sqlserver里的top語法。

當 limit和offset組合使用的時候,limit后面只能有一個參數(shù),表示要取的的數(shù)量,offset表示要跳過的數(shù)量 。

例如select * from article LIMIT 3 OFFSET 1 表示跳過1條數(shù)據(jù),從第2條數(shù)據(jù)開始取,取3條數(shù)據(jù),也就是取2,3,4三條數(shù)據(jù)

18、更新數(shù)據(jù):

UPDATE table_name SET field1=new-value1, field2=new-value2

[WHERE Clause]

你可以同時更新一個或多個字段。

你可以在 WHERE 子句中指定任何條件。

你可以在一個單獨表中同時更新數(shù)據(jù)。

19、模糊查詢:

select c field1,field2,…fieldN

from table_name

where field1 like condition1 [and[or]] field2=‘somevalue’;

通配符的分類:

%百分號通配符: 表示任何字符出現(xiàn)任意次數(shù) (可以是0次).

_下劃線通配符:表示只能匹配單個字符,不能多也不能少,就是一個字符。

20、排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...

ORDER BY field1 [ASC [DESC][默認 ASC]], [field2...] [ASC [DESC][默認 ASC]]

可以添加 WHERE…LIKE 子句來設置條件

21、分組

GROUP BY 語句根據(jù)一個或多個列對結果集進行分組。在分組的列上我們可以使用 COUNT, SUM, AVG等函數(shù)。

SELECT column_name, function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;

例子:

SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;

22、null值處理

MySQL 中處理 NULL 使用 IS NULL 、 IS NOT NULL 、<=>運算符。

IS NULL: 當列的值是 NULL,此運算符返回 true。

IS NOT NULL: 當列的值不為 NULL, 運算符返回 true。

<=>: 比較操作符(不同于=運算符),當比較的的兩個值為 NULL 時返回 true。

23、in

in常用于where表達式中,其作用是查詢某個范圍內的數(shù)據(jù)。

用法:select * from table where field in (value1,value2,value3,…);

例子:

查詢book表中id為2和4的所有數(shù)據(jù):

select * from book where id in(2,4)

24、not in

not in與in作用相反,用法和示例如下:

用法:select * from where field not in (value1,value2,value3,…);

25、exists

本示例所示查詢查找由位于以字母 B 開頭的城市中的任一出版商出版的書名:

SELECT title

FROM titles

WHERE EXISTS

(SELECT *

FROM publishers

WHERE pub_id = titles.pub_id

AND city LIKE 'B%')

用IN:

SELECT title

FROM titles

WHERE pub_id IN

(SELECT pub_id

FROM publishers

WHERE city LIKE 'B%')

26、導入數(shù)據(jù):

mysql 命令導入

使用 mysql 命令導入語法格式為:

mysql -u用戶名 -p密碼 < 要導入的數(shù)據(jù)庫數(shù)據(jù)(runoob.sql)

實例:

# mysql -uroot -p123456 < runoob.sql

以上命令將將備份的整個數(shù)據(jù)庫 runoob.sql 導入。

source 命令導入

source 命令導入數(shù)據(jù)庫需要先登錄到數(shù)庫終端:

mysql> create database abc; # 創(chuàng)建數(shù)據(jù)庫

mysql> useabc; # 使用已創(chuàng)建的數(shù)據(jù)庫

mysql> set names utf8; # 設置編碼

mysql> source /home/abc/abc.sql # 導入備份數(shù)據(jù)庫

使用 LOAD DATA 導入數(shù)據(jù)

MySQL 中提供了LOAD DATA INFILE語句來插入數(shù)據(jù)。 以下實例中將從當前目錄中讀取文件 dump.txt ,將該文件中的數(shù)據(jù)插入到當前數(shù)據(jù)庫的 mytbl 表中。

mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;

如果指定LOCAL關鍵詞,則表明從客戶主機上按路徑讀取文件。如果沒有指定,則文件在服務器上按路徑讀取文件。

你能明確地在LOAD DATA語句中指出列值的分隔符和行尾標記,但是默認標記是定位符和換行符。

使用 mysqlimport 導入數(shù)據(jù)

mysqlimport 客戶端提供了 LOAD DATA INFILEQL 語句的一個命令行接口。mysqlimport 的大多數(shù)選項直接對應 LOAD DATA INFILE 子句。

從文件 dump.txt 中將數(shù)據(jù)導入到 mytbl 數(shù)據(jù)表中, 可以使用以下命令:

$ mysqlimport -u root -p --local mytbl dump.txt

password *****

27、導出數(shù)據(jù):

使用SELECT…INTO OUTFILE語句來簡單的導出數(shù)據(jù)到文本文件上。

#將數(shù)據(jù)表 runoob_tbl 數(shù)據(jù)導出到 /tmp/runoob.txt 文件中:

mysql> SELECT * FROM runoob_tbl

-> INTO OUTFILE '/tmp/runoob.txt';

#通過命令選項來設置數(shù)據(jù)輸出的指定格式,以下實例為導出 CSV 格式:

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/runoob.txt'

-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'

-> LINES TERMINATED BY '\r\n';

#生成一個文件,各值用逗號隔開。這種格式可以被許多程序使用。

SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n'

FROM test_table;

SELECT … INTO OUTFILE 語句有以下屬性:

LOAD DATA INFILE是SELECT … INTO

OUTFILE的逆操作,SELECT句法。為了將一個數(shù)據(jù)庫的數(shù)據(jù)寫入一個文件,使用SELECT … INTO

OUTFILE,為了將文件讀回數(shù)據(jù)庫,使用LOAD DATA INFILE。

SELECT…INTO OUTFILE

'file_name’形式的SELECT可以把被選擇的行寫入一個文件中。該文件被創(chuàng)建到服務器主機上,因此您必須擁有FILE權限,才能使用此語法。

輸出不能是一個已存在的文件。防止文件數(shù)據(jù)被篡改。

你需要有一個登陸服務器的賬號來檢索文件。否則 SELECT … INTO OUTFILE 不會起任何作用。

導出表作為原始數(shù)據(jù)

mysqldump 是 mysql 用于轉存儲數(shù)據(jù)庫的實用程序。它主要產生一個 SQL 腳本,其中包含從頭重新創(chuàng)建數(shù)據(jù)庫所必需的命令 CREATE TABLE INSERT 等。

使用 mysqldump 導出數(shù)據(jù)需要使用 --tab 選項來指定導出文件指定的目錄,該目標必須是可寫的。

以下實例將數(shù)據(jù)表 runoob_tbl 導出到 /tmp 目錄中:

$ mysqldump -u root -p --no-create-info

–tab=/tmp RUNOOB runoob_tbl

password ******

導出 SQL 格式的數(shù)據(jù)

導出 SQL 格式的數(shù)據(jù)到指定文件,如下所示:

$ mysqldump -u root -p RUNOOB runoob_tbl > dump.txt

password ******

如果你需要將數(shù)據(jù)拷貝至其他的 MySQL 服務器上, 你可以在 mysqldump 命令中指定數(shù)據(jù)庫名及數(shù)據(jù)表。

在源主機上執(zhí)行以下命令,將數(shù)據(jù)備份至 dump.txt 文件中:

$ mysqldump -u root -p database_name table_name > dump.txt

password *****

如果完整備份數(shù)據(jù)庫,則無需使用特定的表名稱。

如果你需要將備份的數(shù)據(jù)庫導入到MySQL服務器中,可以使用以下命令,使用以下命令你需要確認數(shù)據(jù)庫已經創(chuàng)建:

$ mysql -u root -p database_name < dump.txt

password *****

你也可以使用以下命令將導出的數(shù)據(jù)直接導入到遠程的服務器上,但請確保兩臺服務器是相通的,是可以相互訪問的:

$ mysqldump -u root -p database_name

| mysql -h other-host.com database_name

以上命令中使用了管道來將導出的數(shù)據(jù)導入到指定的遠程主機上。

28、 MySQL 事務

MySQL 事務主要用于處理操作量大,復雜度高的數(shù)據(jù)。比如說,在人員管理系統(tǒng)中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關的信息,如信箱,文章等等,這樣,這些數(shù)據(jù)庫操作語句就構成一個事務!

在 MySQL 中只有使用了 Innodb 數(shù)據(jù)庫引擎的數(shù)據(jù)庫或表才支持事務。

事務處理可以用來維護數(shù)據(jù)庫的完整性,保證成批的 SQL 語句要么全部執(zhí)行,要么全部不執(zhí)行。

事務用來管理 insert,update,delete 語句

一般來說,事務是必須滿足4個條件(ACID)::原子性(Atomicity,或稱不可分割性)、一致性(Consistency)、隔離性(Isolation,又稱獨立性)、持久性(Durability)。

MYSQL 事務處理主要有兩種方法:

1、用 BEGIN, ROLLBACK, COMMIT來實現(xiàn)

BEGIN 開始一個事務

ROLLBACK 事務回滾

COMMIT 事務確認

2、直接用 SET 來改變 MySQL 的自動提交模式:

SET AUTOCOMMIT=0 禁止自動提交

SET AUTOCOMMIT=1 開啟自動提交返回搜狐,查看更多

責任編輯:

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的mysql中需要提交的操作_MySQL常用操作及基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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