【數(shù)據庫】MySQL常見SQL語句

不完全轉自:https://baijiahao.baidu.com/s?id=1589166609744115558&wfr=spider&for=pc

MySQL 是一個關系型數(shù)據庫,由瑞典 MySQL AB 公司開發(fā),目前屬于 Oracle 旗下公司。

MySQL默認超級管理員是root,一般在安裝MySQL的時候會提示設置root密碼。

前期的MySQL不支持存儲過程,在MySQL5.0之后,設置存儲引擎ENGINE=INNODB才能支持存儲過程。

DDL—數(shù)據定義語言(Create,Alter,Drop,DECLARE)

DML—數(shù)據操縱語言(Select,Delete,Update,Insert)

DCL—數(shù)據控制語言(GRANT,REVOKE,COMMIT,ROLLBACK)

常見SQL語句

1、創(chuàng)建用戶創(chuàng)建用戶一般都是登錄超級管理員root,進行創(chuàng)建之后分配權限。

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

username - 你將創(chuàng)建的用戶名。host - 指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符%。password - 該用戶的登陸密碼,密碼可以為空,如果為空則該用戶可以不需要密碼登陸服務器。

2、授權

GRANT privileges ON databasename.tablename TO 'username'@'host';

privileges - 用戶的操作權限,如SELECT , INSERT , UPDATE,DELETE 等.如果要授予所的權限則使用ALL。databasename - 數(shù)據庫名,tablename-表名,如果要授予該用戶對所有數(shù)據庫和表的相應操作權限則可用表示, 如.(對所有數(shù)據庫所有表相應權限),datebasename.(對指定數(shù)據庫所有表相應權限)。

注意:用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

3、設置與更改用戶密碼

SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是當前登錄用戶用:

SET PASSWORD = PASSWORD("newpassword");

4、撤銷用戶權限

REVOKE privilege ON databasename.tablename FROM 'username'@'host';

注意: 假如你在給用戶’username’@’%’授權的時候是這樣的(或類似的):GRANT SELECT ON testDB.user TO ‘username’@’%’, 則在使用REVOKE SELECT ON . FROM ‘username’@’%’;命令并不能撤銷該用戶對testDB數(shù)據庫中user表的SELECT 操作。相反,如果授權使用的是GRANT SELECT ON . TO ‘username’@’%’;則REVOKE SELECT ON testDB.user FROM ‘username’@’%’;命令也不能撤銷該用戶對testDB數(shù)據庫中user表的Select 權限。

具體信息可以用命令SHOW GRANTS FOR ‘username’@’%’; 查看。

5、刪除用戶

DROP USER 'username'@'host';

6、創(chuàng)建數(shù)據庫-databasename - 數(shù)據庫名

CREATE DATABASE databasename;

7、刪除數(shù)據庫-databasename - 數(shù)據庫名

DROP DATABASE databasename;

8、修改數(shù)據庫名

alter database 舊名稱 modify name = 新名稱

9、備份sql server

創(chuàng)建 備份數(shù)據的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'e:\mysql\test.dat'
開始 備份 BACKUP DATABASE databasename TO testBack語句1:打開系統(tǒng)數(shù)據庫master,或者說在系統(tǒng)數(shù)據庫下操作。

語句2:定義備份邏輯設備名testBack,類型disk,路徑為e:\mysql\test.dat。

語句3:備份數(shù)據庫databasename到設備testBack上。

10、創(chuàng)建新表

CREATE TABLE tablename(col1 type1 [not null] [primary key],col2 type2 [not null],..);

根據已有的表創(chuàng)建新表:

A:CREATE TABLE tab_new like tab_old (使用舊表創(chuàng)建新表) B:CREATE TABLE tab_new as select col1,col2… from tab_old definition only #用戶表 CREATE TABLE IF NOT EXISTS t_user( u_id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL COMMENT '編號', u_phone BIGINT NOT NULL COMMENT '賬號-手機號', u_passwd VARCHAR(100) NOT NULL COMMENT '密碼,4-20字符,MD5加密', u_regtime BIGINT UNSIGNED NOT NULL COMMENT '注冊時間,時間戳', u_check_uid BIGINT UNSIGNED COMMENT '用戶類型審核人員ID', PRIMARY KEY(u_id) COMMENT '主鍵', UNIQUE KEY(u_phone) COMMENT '唯一鍵', FOREIGN KEY(u_check_uid) REFERENCES t_user(u_id) ON DELETE CASCADE, KEY index_regtime(u_regtime) COMMENT '注冊時間-索引' )ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '用戶表';

11、刪除新表

DROP TABLE tablename

12、增加一個列

ALTER TABLE tablename ADD COLUMN col TYPE

注意:列增加后將不能刪除。DB2中列加上后數(shù)據類型也不能改變,唯一能改變的是增加varchar類型的長度。

13、添加主鍵

ALTER TABLE tablename ADD PRIMARY KEY(col)

14、刪除主鍵

ALTER TABLE tablename DROP PRIMARY KEY(col)

15、創(chuàng)建索引

CREATE [UNIQUE] INDEX idxname ON tablename(col….)

16、刪除索引

DROP INDEX idxname

17、創(chuàng)建視圖

CREATE VIEW viewname AS SELECT statement

18、刪除視圖

DROP VIEW viewname

19、幾個簡單的基本的SQL語句

查詢:

SELECT * FROM tablename WHERE 范圍

插入:

INSERT INTO tablename(field1,field2) VALUES(value1,value2)

刪除:

DELETE FROM tablename WHERE 范圍

更新:

UPDATE tablename SET field1=value1 WHERE 范圍

查找:

SELECT * FROM tablename WHERE field1 LIKE '%value1%'

排序:

SELECT * FROM tablename ORDER BY field1,field2 [DESC]

總數(shù):

SELECT COUNT(field1) AS totalcount FROM tablename

求和:

SELECT SUM(field1) AS sumvalue FROM tablename

平均:

SELECT AVG(field1) AS avgvalue FROM tablename

最大:

SELECT MAX(field1) AS maxvalue FROM tablename

最小:

SELECT MIN(field1) AS minvalue FROM tablename

20、幾個高級查詢運算詞A: UNION 運算符

UNION運算符通過組合其他兩個結果表(例如 TABLE1 和 TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨 UNION 一起使用時(即 UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自 TABLE1 就是來自 TABLE2。

B: EXCEPT 運算符

EXCEPT 運算符通過包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重復行而派生出一個結果表。當 ALL 隨 EXCEPT 一起使用時 (EXCEPT ALL),不消除重復行。

C: INTERSECT 運算符

INTERSECT 運算符通過只包括 TABLE1 和 TABLE2 中都有的行并消除所有重復行而派生出一個結果表。當 ALL 隨 INTERSECT 一起使用時 (INTERSECT ALL),不消除重復行。

注:使用運算詞的幾個查詢結果行必須是一致的。

21、使用外連接

A、LEFT OUTER JOIN:

左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。

B:RIGHT OUTER JOIN:

右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。

C:FULL OUTER JOIN:

全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。22、復制表(只復制結構,源表名:a 新表名:b) (Access可用)

方法一:

SELECT * INTO b FROM a WHERE 11

方法二:

SELECT top 0 * INTO b FROM a

23、拷貝表(拷貝數(shù)據,源表名:a 目標表名:b) (Access可用)

INSERT INTO b(a, b, c) SELECT d,e,f FROM b;

24、跨數(shù)據庫之間表的拷貝(具體數(shù)據使用絕對路徑) (Access可用)

INSERT INTO b(a, b, c) SELECT d,e,f FROM b IN ‘具體數(shù)據庫' WHERE 條件

25、子查詢(表名1:a 表名2:b)

SELECT a,b,c FROM a WHERE a IN (SELECT d FROM b ) 或者: SELECT a,b,c FROM a WHERE a IN (1,2,3)

26、between的用法,between限制查詢數(shù)據范圍時包括了邊界值,not between不包括

SELECT * FROM table1 WHERE TIME BETWEEN time1 AND time2 SELECT a,b,c, FROM table1 WHERE a NOT BETWEEN 數(shù)值1 AND 數(shù)值2

27、in 的使用方法

SELECT * FROM table1 WHERE a [NOT] IN (‘值1','值2','值4','值6')

28、兩張關聯(lián)表,刪除主表中已經在副表中沒有的信息

DELETE FROM table1 WHERE NOT EXISTS ( SELECT * FROM table2 WHERE table1.field1=table2.field1)

29、四表聯(lián)查問題

SELECT * FROM a LEFT INNER JOIN b ON a.a=b.b RIGHT INNER JOIN c ON a.a=c.c INNER JOIN d ON a.a=d.d WHERE .....

30、日程安排提前五分鐘提醒

SELECT * FROM 日程安排 WHERE DATEDIFF('minute',f開始時間, getdate())>5

31、一條sql 語句搞定數(shù)據庫分頁(不推薦)

SELECT top 10 b.* FROM (SELECT top 20 主鍵字段,排序字段 FROM 表名 ORDER BY 排序字段 DESC) a,表名 b WHERE b.主鍵字段 = a.主鍵字段 ORDER BY a.排序字段

32、前10條記錄

SELECT top 10 * form table1 WHERE 范圍

33、隨機取出10條數(shù)據

SELECT top 10 * FROM tablename ORDER BY newid()

34、隨機選擇記錄

SELECT newid()

35、刪除重復記錄

DELETE FROM tablename WHERE id NOT IN (SELECT MAX(id) FROM tablename GROUP BY col1,col2,...)

36、列出數(shù)據庫里所有的表名

SELECT NAME FROM sysobjects WHERE TYPE='U'

37、列出表里的所有的

SELECT NAME FROM syscolumns WHERE id=object_id('TableName')

38、收縮數(shù)據庫

重建索引 DBCC REINDEX DBCC INDEXDEFRAG
收縮數(shù)據和日志 DBCC SHRINKDB DBCC SHRINKFILE39、壓縮數(shù)據庫DBCC shrinkdatabase(dbname)40、轉移數(shù)據庫給新用戶以已存在用戶權限exec sp_change_users_login ‘update_one‘,‘newname‘,‘oldname‘41、檢查備份集RESTORE VERIFYONLY from disk=‘E:\dvbbs.bak‘42、修復數(shù)據庫ALTER DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB(‘dvbbs‘,repair_allow_data_loss) WITH TABLOCK GO ALTER DATABASE [dvbbs] SET MULTI_USER GO

查詢全部的記錄: select * from test_limit ;

查第一條記錄: select * from test_limit limit 1;

查前面兩條記錄: select * from test_limit limit 0,2;

查第二和第三條記錄: select * from test_limit limit 1,2;

查最后一條記錄: select * from test_limit order by id DESC limit 1;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容

  • 50個常用的sql語句 Student(S#,Sname,Sage,Ssex) 學生表 Course(C#,Cna...
    最美的太陽WW閱讀 3,225評論 0 23
  • 創(chuàng)建數(shù)據庫 創(chuàng)建之前判斷該數(shù)據庫是否存在 if exists (select * from sysdatabase...
    才気莮孒閱讀 450評論 0 1
  • 什么是SQL數(shù)據庫: SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,836評論 0 10
  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname...
    哈哈海閱讀 1,248評論 0 7
  • 2015年7月,F(xiàn)acebook 發(fā)GraphQL布并開源了GraphQL,GraphQL作為負責前后端交互的協(xié)議...
    夜月下閱讀 6,536評論 2 19