不完全轉自: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;