MySQL语句学习
MySQL學習
在學習數據庫命令之前首先了解一下MySQL,首先MySQL是DBMS(數據庫管理系統),DBMS是位于用戶與操作系統之間的一層數據管理軟件。DB(數據庫)是指:長期儲存在計算機內的、有組織的、可共享的大量數據集合。DBS(數據庫系統)是指在計算機應用系統中引入數據庫后的系統構成。數據庫系統由數據庫、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員(和用戶)構成。
DBS包含了DB和DBMS,而我們使用的MySQL是DBMS,用于管理數據庫。
這里給出一些SQL語言的操作動詞
圖片二
數據定義:操作的對象是表視圖和引索(數據的結構)
數據操縱:操作對象是元組(數據)
數據控制:用來管理權限(一般涉及用戶權限)
為了方便理解,可以認為CREATE,DROP,ALTER字段標注的操作的都是表級別的,而INSERT,UPDATA,DELETE操作的都是數據級別的。
1.數據庫操作
# 登陸數據庫管理系統 mysql -u root -p 123456 # 查看所有數據庫 SHOW DATABASES; # 創建一個數據庫name對應數據庫的名字 CREATE DATABASE name; # 刪除一個數據庫 DROP DATABASE name; # 使用數據庫 USE name;2.表創建和查詢操作
SHOW 查詢數據庫或者表等
CREATE 創建表和數據庫或者視圖
# 查看所有表 SHOW TABLES ;# 創建表(這里約束加在最后面,也可以緊跟類型后面) CREATE TABLE Student( id INT, name VARCHAR(10), PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES n(id), UNIQUE (name)); # 直接將查詢結果導入或復制到新創建的表 CREATE TABLE n SELECT * FROM m; # 新創建的表與一個存在的表的數據結構類似 CREATE TABLE m LIKE n;# 查詢語句(SELECT指定要顯示的屬性列,FROM指定查詢對象(基本表或視圖),) SELECT id,name FROM Student; #(ALL顯示全部,DISTINCT消除重復) SELECT ALL name FROM Student; SELECT DISTINCT name FROM Student; #(ORDER BY對查詢結果表按指定列值的升序或降序排序,升序:ASC;降序:DESC;默認升序) SELECT * FROM n ORDER BY name, id DESC ; #(WHERE子句:指定查詢條件)上下兩句等價 SELECT * FROM Student WHERE id = '95001'; SELECT * FROM Student WHERE id LIKE '95001'; #(GROUP BY子句:對查詢結果按指定列的值分組,該屬性列值相等的元組為一個組。通常會在每組中作用集函數。) SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;3.表的刪除和修改結構
DROP 刪除數據庫或表
ALTER 修改表屬性(屬性)
IF EXISTS 判斷是否存在
RENAME 重命名
MODIFY 變更屬性
# 刪除一個存在表() DROP TABLE IF EXISTS m; # 更改存在表的名稱 ALTER TABLE n RENAME m; RENAME TABLE n TO m; # 添加字段 ALTER TABLE n ADD age VARCHAR(2) ; # 刪除字段 ALTER TABLE n DROP age; # 更改字段屬性和屬性 ALTER TABLE n CHANGE age a INT; # 只更改字段屬性 ALTER TABLE n MODIFY age VARCHAR(7) ;4.表數據的修改
INSERT INTO 插入數據
DDELETE 刪除數據
UPDATE 更改數據
# 增加數據(INSERT INTO后面跟插入的表,VALUES跟值,必須確保完整性) INSERT INTO n VALUES (1, 'tom', '23'), (2, 'john', '22'); INSERT INTO n SELECT * FROM n; # 把數據復制一遍重新插入(先查詢,后插入) # 刪除數據 DELETE FROM n WHERE id = 2; #刪除滿足條件的數據 # 更改符合條件的數據(UPDATE后跟表名,SET跟修改內容) UPDATE n SET name = 'tom' WHERE id = 2;5.視圖的創建
CREATE VIEW創建視圖,并且視圖必須依附在表的基礎上,也就是說沒有表就不能創建視圖。
# 創建視圖 CREATE VIEW v AS SELECT id, name FROM n; CREATE VIEW v(id, name) AS SELECT id, name FROM n; # 查看視圖(與表操作類似) SELECT * FROM v; DESC v; # 更改視圖 CREATE OR REPLACE VIEW v AS SELECT name, age FROM n; ALTER VIEW v AS SELECT name FROM n ; # 刪除視圖 DROP VIEW IF EXISTS v;6.數據庫用戶權限
REVOKE 撤銷權限
FLUSH 刷新權限表,使其權限生效
GRANT 授權
# 增加用戶 CREATE USER 'test'@'localhost' IDENTIFIED BY 'test'; INSERT INTO mysql.user(Host, User, Password) VALUES ('localhost', 'test', Password('test')); # 在用戶表中插入用戶信息,不推薦 # 刪除用戶 DROP USER 'test'@'localhost'; DELETE FROM mysql.user WHERE User='test' AND Host='localhost'; FLUSH PRIVILEGES ; # 更改用戶密碼 SET PASSWORD FOR 'test'@'localhost' = PASSWORD('test'); UPDATE mysql.user SET Password=Password('t') WHERE User='test' AND Host='localhost'; FLUSH PRIVILEGES ; # 用戶授權 GRANT ALL PRIVILEGES ON *.* TO test@localhost IDENTIFIED BY 'test'; # 授予用'test'密碼登陸成功的test@localhost用戶操作所有數據庫的所有表的所有的權限 FLUSH PRIVILEGES ; # 刷新系統權限表,使授予權限生效 # 撤銷用戶授權 REVOKE DELETE ON *.* FROM 'test'@'localhost'; # 取消該用戶的刪除權限(DELETE表數據的刪除)7.聯接
# 左外聯接 SELECT * FROM m LEFT JOIN n ON m.id = n.id; # 右外聯接 SELECT * FROM m RIGHT JOIN n ON m.id = n.id; # 交叉聯接或內聯接(以下前三者在官方文檔中是可替代關系,效果相同) SELECT * FROM m INNER JOIN n ON m.id = n.id; SELECT * FROM m CROSS JOIN n ON m.id = n.id; SELECT * FROM m JOIN n ON m.id = n.id; SELECT * FROM m, n ON m.id = n.id; # 待確定 # 類似全連接full join的聯接用法 SELECT id,name FROM m UNION SELECT id,name FROM n;8.數據庫備份和還原
# 數據庫備份 mysqldump -u root -p db_name > file.sql mysqldump -u root -p db_name table_name > file.sql # 數據庫還原 mysql -u root -p < C:\file.sql本文語句例子來自博客:https://blog.csdn.net/csdn_0_001/article/details/79051481.,本人只做小小的總結和歸納。
數據庫練習網站:http://sqlzoo.net/wiki/SQL_Tutorial.
總結
- 上一篇: java守护线程和用户线程
- 下一篇: JNDI配置DataResource代替