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