目錄
- 創建資料庫
- 洗掉資料庫
- 資料表的創建與管理
- 洗掉資料表
- 修改欄位資料型別
- 添加欄位
- 欄位更名
- 洗掉欄位
- 表資料管理
- 插入資料
- 查詢資料
- 模糊匹配
- 排序與分組
- HAVING子句查詢
- 聚合函式
- 多表連接
- 子查詢
- 資料更新操作
- INSERT
- UPDATE
- DELETE
- 視圖的創建與管理
- 創建視圖
- 修改視圖
- 洗掉視圖
- 管理視圖資料
- 索引的創建與管理
- 存盤程序
- 資料庫權限控制
- 用戶管理
- 權限管理
創建資料庫
CREATE DATABASE jxgl;
洗掉資料庫
DROP DATABASE [IF EXISTS] db_name
資料表的創建與管理
CREATE TABLE students (
sno CHAR ( 8 ) PRIMARY KEY NOT NULL,
sname VARCHAR ( 20 ) NOT NULL,
ssex ENUM ( "男", "女" ) DEFAULT "男"
);
洗掉資料表
DROP TABLE [IF EXISTS] table_name;
修改欄位資料型別
ALTER TABLE students
MODIFY sno char(4) PRIMARY KEY;
添加欄位
ALTER TABLE students
ADD COLUMN description varchar(30);
欄位更名
ALTER TABLE students
CHANGE description desc varchar(30);
洗掉欄位
ALTER TABLE students
DROP desc;
表資料管理
插入資料
INSERT INTO students ( sno, sname, ssex )
VALUES
( "1001", "張三", "男" ),
( "1002", "李四", default),
( "1003", "王五", "女" );
查詢資料
SELECT
sno, sname
FROM
students
WHERE
ssex = '男'
HAVING
sname LIKE '%三';
模糊匹配
%:表示任意 0 個或多個字符,可匹配任意型別和長度的字符,中文用兩個百分號%%表示_:表示匹配任意單個字符[]:表示轉義通配符,使查到%,_,[等特殊字符
排序與分組
SELECT * FROM
students
GROUP BY
ssex
ORDER BY
sno DESC;
- 使用
DESC或ASC關鍵字來設定查詢結果是按照降序或升序排序,默認為ASC升序 GROUP BY中的運算式應與SELECT中的保持一致
HAVING子句查詢
在查詢陳述句中,使用HAVING子句為行分組或聚合組指定過濾條件,
HAVING子句與GROUP BY子句一起使用,以根據指定的條件過濾分組,
聚合函式
AVG():求平均值COUNT():統計行的數量MAX():求最大值MIN():求最小值SUM():求累加和
聚合函式可以用在SELECT和HAVING中,不能直接使用在WHERE和GROUP BY中,
多表連接
INNER JOIN(內連接,或等值連接):獲取兩個表中欄位匹配關系的記錄,LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄,RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用于獲取右表所有記錄,即使左表沒有對應匹配的記錄,
-- 查詢女教師所授課程的課程號,課程名稱和學時,
SELECT
teachers.tno, course.cno, cname, period
FROM
teaching
JOIN teachers ON teachers.tno = teaching.tno
JOIN course ON course.cno = teaching.cno
WHERE
tsex = '女';
子查詢
-- 查詢成績比所有課程的平均成績高的學生的學號及成績
SELECT
sno, score
FROM
sc
WHERE
score > ANY ( SELECT avg( score ) FROM sc );
-- 查詢‘0000008’號課程不及格的學生資訊
SELECT
*
FROM
students
WHERE
sno IN ( SELECT sno FROM sc WHERE score < 60 AND cno = '0000008' );
資料更新操作
INSERT
INSERT INTO
students(sno, sname)
VALUES
("1004", "Jack");
UPDATE
UPDATE students
SET
sname = "Mary"
WHERE
sno = "1004";
DELETE
DELETE FROM students
WHERE sno = "1004";
-- 清空表資料,保留結構
DELETE [*] FROM table_name;
TRUNCATE [*] FROM table_name;
-- 洗掉表的資料和結構
DROP TABLE table_name;
視圖的創建與管理
- 視圖是虛擬存在的表,是邏輯意義的表,
不包含資料 - 視圖資料來自自定義視圖查詢中使用的表,可以展現基表的部分資料
- 使用視圖的用戶不必關心后面的表結構、關聯條件和篩選條件
- 使用視圖的用戶只能訪問被允許查詢的結果集
- 保障資料安全性,提高查詢效率
創建視圖
CREATE VIEW v_stu
AS SELECT *
FROM students
WHERE ssex = "男";
修改視圖
ALTER VIEW v_stu
AS SELECT sname
FROM students;
洗掉視圖
DROP VIEW v_stu;
管理視圖資料
-- 從視圖查詢資訊
SELECT * FROM v_stu;
-- 修改視圖資訊
UPDATE v_stu
SET sname = "李華"
WHERE sno = "1003";
--- 向視圖添加記錄
INSERT INTO v_stu
VALUES
("1004", "Dan", "女"),
("1005", "Mike", "男");
-- 修改視圖資料
UPDATE v_stu
SET ssex = "男"
WHERE sno = "1004";
-- 洗掉視圖資料
DELETE FROM v_stu
WHERE sno = "1005";
索引的創建與管理
-- 創建索引
CREATE INDEX ix_stu
ON students(sno, sname);
-- 修改表結構添加索引
ALTER TABLE students
ADD INDEX ix_stu(sno, sname);
-- 洗掉索引
DROP INDEX ix_stu(sno, sname)
ON students;
-- 或
ALTER TABLE students
DROP INDEX ix_stu;
-- 顯示索引資訊
SHOW INDEX FROM table_name;
存盤程序
存盤程序是為了完成特定功能的SQL陳述句集,經編譯創建并保存在資料庫中,用戶可通過指定存盤程序的名字并給定引數(需要時)來呼叫執行,
即SQL語言層面的代碼封裝與呼叫,
BEGIN ... END表示存盤程序的開始和結束IN輸入引數:表示呼叫者向程序傳入值(傳入值可以是字面量或變數)OUT輸出引數:表示程序向呼叫者傳出值(可以回傳多個值)(傳出值只能是變數)INOUT輸入輸出引數:既表示呼叫者向程序傳入值,又表示程序向呼叫者傳出值(值只能是變數)
-- 創建不帶引數存盤程序
CREATE PROCEDURE proc_1()
BEGIN
SELECT sno, sname, ssex
FROM students
WHERE ssex = "男"
END;
-- 呼叫存盤程序
CALL proc_1;
-- 創建帶引數的存盤程序
CREATE PROCEDURE proc_2(IN psno char(4))
BEGIN
SELECT *
FROM students
WHERE sno = psno;
END;
CALL proc_2("1001")
-- 創建帶輸出引數的存盤程序
CREATE PROCEDURE proc_3(IN psno char(4), OUT name varchar(20))
BEGIN
SELECT sname INTO name
FROM students
WHERE sno = psno;
END;
CALL proc_3("1001", @name)
SELECT @name;
資料庫權限控制
用戶管理
- 創建用戶
CREATE USER user_name IDENTIFIED BY "password";
- 用戶改名
RENAME USER user_name TO new_name;
- 更改用戶密碼
SET PASSWORD FOR user_name = PASSWORD("new_password");
- 洗掉用戶
DROP USER user_name;
權限管理
- 查看用戶權限
SHOW GRANTS FOR user_name;
- 賦予權限
GRANT SELECT, UPDATE ON db_name TO user_name;
FLUSH PRIVILIGES;
- 回收權限
REVOKE UPDATE ON db_name FROM user_name;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/546371.html
標籤:MySQL
