技術day01 ──SQL基礎

林憲宇發表於2020-11-11

資料物件

資料物件是資料庫的組成部分,通俗的來說就是資料庫中能叫上名來的都是資料物件,常見的資料物件有以下幾種:
表:由行和列組成,每個列成為一個欄位,每列的標題為欄位名;一行為一條資料;一個資料庫表由一條或者多條記錄組成,沒有記錄的表稱為空表
使用者:有權訪問資料庫的人,一般分為兩種,為管理員和普通使用者
索引:根據資料庫表建立起來的順序,目的是為了快速訪問資料
觸發器:使用者定義SQL事務的集合,一般用來定時任務、批處理
檢視:檢視看上去是一個表,實際是一個虛表,一般是將幾個表聯絡合併成一個新表,方便檢視

資料庫使用者及許可權

//建立使用者
CREATE user glq@'bj-cynosdbmysql-grp-iv373juc.sql.tencentcdb.com' IDENTIFIED by 'glq'

//使用者授權
GRANT all on book.t_book to 'glq'@'bj-cynosdbmysql-grp-iv373juc.sql.tencentcdb.com'

//修改密碼
ALTER user 'glq'@'localhost' IDENTIFIED by 'glq123'

//刪除使用者
drop user 'glq'@'localhost'

資料庫的許可權有三種,分別是CONNECT(可連線檢視)、resource(可以操作資源)、DBA(管理員)
六種資料物件許可權:ALL ON 、SELECT ON、UPDATE ON、ALTER ON(改變表結構)、INSERT ON、DELETE ON
賦予許可權:GRANT Insert ON your database.* TO user@host;
收回許可權:REVOKE Delete ON your database.* FROM user@host;

查詢語句

多表查詢

多表查詢允許在查詢的from後面跟多個表,然後把表之間的關係在where條件後進行拼接

SELECT u.uname,ur.rid FROM t_user u,t_user_role ur
where u.id = ur.uid

外連線

列出多個表查詢中其中一個表的全部記錄
分為左外連線、右外連線
左外連線將兩個表的順序調換一下即可實現右外連線的功能

//左外連線
SELECT u.uname,ur.rid FROM
 t_user u
LEFT JOIN
t_user_role ur
on u.id = ur.uid

//右外連線
SELECT u.uname,ur.rid FROM
 t_user u
RIGHT JOIN
t_user_role ur
on u.id = ur.uid

巢狀查詢和子查詢

select語句中巢狀select即為巢狀查詢,當子查詢或in或exists成為where條件的一部分,這樣的查詢成為子查詢

SELECT t_user.uname from t_user where t_user.id in 
(SELECT t_user_role.uid from t_user_role )

查詢排序

order by用來排序
ASC升序,DESC降序 預設為升序

select * FROM t_user
ORDER BY id desc

查詢分組

group by進行分組,一般與彙總函式結合在一起

SELECT count(rid) from t_user_role 
GROUP BY t_user_role.rid

where與having
where是對分組之前的資料進行篩選
having是對分組之後的資料進行篩選

優化查詢

選擇記錄數少的作為基表(原理類似於for迴圈把少的放在外層減少跳出消耗)
選擇交叉表作為基礎表

增刪改

增加資料:

INSERT INTO `bank_statement` VALUES ('1', '轉賬', '收', '2020111101', 'glq', '林憲宇', '0001', 'APP', '10000', '西安', '給你轉賬了', '成功', '0');
insert into A(id,name) SELECT id,name from B

修改:

UPDATE A set age = 28 where id = 1

刪除:

DELETE from A where id =1

資料定義語句

建立表:

CREATE TABLE table_name (column_name column_type);

修改表:
新增一個欄位:

alert table A add address varchar(200)

更多:
https://www.cnblogs.com/wwthuanyu/p/10069869.html
刪除表:

drop table A

相關文章