技術day01 ──SQL基礎
資料物件
資料物件是資料庫的組成部分,通俗的來說就是資料庫中能叫上名來的都是資料物件,常見的資料物件有以下幾種:
表:由行和列組成,每個列成為一個欄位,每列的標題為欄位名;一行為一條資料;一個資料庫表由一條或者多條記錄組成,沒有記錄的表稱為空表
使用者:有權訪問資料庫的人,一般分為兩種,為管理員和普通使用者
索引:根據資料庫表建立起來的順序,目的是為了快速訪問資料
觸發器:使用者定義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
相關文章
- 初識java day01(基礎篇)Java
- 音視訊技術基礎
- JavaGUI——繪圖技術基礎JavaGUI繪圖
- Docker 技術基礎之 CGroupsDocker
- 前端技術演進(一):Web前端技術基礎前端Web
- 現代通訊技術基礎中的基礎
- 傳智黑馬python基礎學習——day01Python
- Lynx技術分析-JS引擎擴充套件技術基礎JS套件
- Docker | Docker技術基礎梳理(一)Docker
- 網路通訊技術基礎
- 前端技術面——(js基礎一)前端JS
- 前端技術面——(js基礎二)前端JS
- 伺服器RAID技術基礎伺服器AI
- Windows下基礎免殺技術Windows
- 技術基礎 | Apache Cassandra 4.0基準測試Apache
- 容器技術之Docker基礎入門Docker
- 虛擬化技術之kvm基礎
- 技術基礎 | 重要指標和告警指標
- SQL入門基礎SQL
- SQL基礎入門SQL
- 淺談RASP技術攻防之基礎篇
- java框架基礎技術之--------反射機制Java框架反射
- Java安全基礎之Java Web核心技術JavaWeb
- 0基礎小白如何學習Python技術?Python
- HCNA Routing&Switching之交換技術基礎
- docker容器技術基礎之linux cgroup、namespaceDockerLinuxnamespace
- ProBuilder快速原型開發技術 ---操作基礎UI原型
- 如何以零基礎快速學習Linux運維技術?Linux技術Linux運維
- JDBC基礎入門教程,輕鬆掌握jdbc基礎+核心技術,超全面!JDBC
- Sql介紹 與 Sql基礎查詢SQL
- Docker | Docker技術基礎梳理(二) - 映象管理Docker
- Spring Boot:從炒作到成熟的基礎技術?Spring Boot
- OpenStack關鍵技術系列: Libvirt基礎知識
- 4.路由器設計技術基礎路由器
- 0基礎學Web前端要掌握哪些技術?Web前端
- iOS跳槽寶典-面試技術基礎篇iOS面試
- ProBuilder快速原型開發技術 ---ProBuilder基礎操作UI原型
- 技術基礎 | 捨棄”讀修復概率”特性