SQL基礎培訓--SQL語言基本概念及簡單查詢

2021-02-19 小西瓜的技術之路
前言:

這一節課,我們來先來了解一下什麼是SQL語言,然後通過一些簡單的操作實例及概念講解,幫助大家理解和消化這部分內容。

什麼是SQL語句,及簡單的寫法

sql 語句是對資料庫進行操作的一種語言。結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統。

SQL的四種語言

DDL(Data Definition Language)資料庫定義語言
DDL是SQL語言的四大功能之一。
用於定義資料庫的三級結構,包括外模式、概念模式、內模式及其相互之間的映像,定義數    據的完整性、安全控制等約束。
簡單點來說,DDL語句就是用與定義和管理資料庫中的對象。DDL語句不需要commit,也不能rollback。
常見的DDL命令有:
CREATE
ALTER
DROP
TRUNCATE
COMMENT
RENAME

DML(Data Manipulation Language)數據操縱語言
由DBMS提供,用於讓用戶或程式設計師使用,實現對資料庫中數據的操作。
簡單來說,DML語言能夠使用戶能夠查詢資料庫以及操作已有資料庫中的數據。
常見的DML命令有:
SELECT
INSERT
UPDATE
DELETE

DCL(Data Control Language)資料庫控制語言
DCL語言主要負責授權和角色控制。
常見的DCL命令有:
GRANT
REVOKE

TCL(Transaction Control Language)事務控制語言
顧名思義,TCL語言主要負責事務的控制。
常見的TCL命令有:
SAVEPOINT
COMMIT
ROLLBACK

學習SQL語句前要知道的一些內容

術語相關:
前條件:指資料庫在緩存(或硬碟)上獲取數據的篩選記錄的條件。
後條件:指資料庫在結果集(執行內存)上進行篩選記錄的條件。
子句:根據SQL語句語法中的動詞,將整句SQL語句拆分成幾部分,每部分叫做該動詞的子句。
例如:select * from t1 where id = 1
select * 部分叫做select子句
from t1 部分叫做from子句
where id = 1 部分叫做where子句

常用的查詢條件

對表操作,先要有表

我們要知道,今天的課,主要講的內容,都是跟數據表有關的,那麼我們首先要先建立一張表,往這張表裡寫一些數據。

Create table語句
語法:

create table table_name  (column_name1 column_type1[, column_name2 column_type2[, …]] )

說明:
table_name 表名
column_name1, column_name2, … 欄位名
column_type1, column_type2, … 欄位類型
一個簡單的建表語句:

create table TEST_LIJIAN (id VARCHAR2(100)) tablespace JLLT_DM   pctfree 10   initrans 1   maxtrans 255   storage   (     initial 64K     next 1M     minextents 1     maxextents unlimited   );

我手工通過for update的方式,往這張表裡插入了幾條數據:我們的重點是DML語句

DML裡的老大 —- SELECT
select語句,有過經驗的同事應該不陌生,可以說是很熟悉,日常應用的最多的也是它。那麼它的語法是什麼呢?
語法:

Select [ all | distinct ] <目標列表達式> From <表名> | <視圖名> [ ,<表名> | <視圖名> ] [ Where <條件表達式> ] [ Group by <列名[ , 列名 ]> [ having <條件表達式> ] ] [ order by <列名[ , 列名]> [ ASC | DESC ] ]

註:
Group by 的分組欄位根據欄位前後順序分組
Order by 排序欄位根據欄位前後順序排序(後一個在前一個基礎上排序)
最簡單的select語句:
select * from dual;

DML裡最危險的人 — DELETE
為什麼說delete是最危險的呢,因為實際操作的時候,誤刪數據是常有的事兒,很多現網資料庫都遇到過這種情況,最後不得已翻出備份來進行恢復。那麼它的語法是什麼呢?
語法:

delete from table_name where column_name1 = column_value1 [ and | or             column_name2 = column_value2[ and | or …]]

說明:
table_name 表名
column_name1 刪除記錄依據的欄位名
column_value1 刪除記錄依據的欄位值
and 表示與(同時滿足條件的記錄)
or 表示或(部分滿足條件的記錄)
最簡單的刪除一條數據的命令:
delete from test_lijian where id = 1;        

不夠就加,insert語句的本領
一張數據表中,數據不可能是永遠都是固定的,如果想再往數據表裡增加數據,那就是Insert語句的功能了。
語法:

insert into table_name (column_name1[, column_name2[, …]])  values (column_value1[, column_value2[, …]] )

說明:
table_name 表名
column_name1, column_name2,…欄位名
column_value1, column_value2,…欄位存儲的值
最簡單的一條insert語句:
insert into test_lijian (id) values (1);

知錯就改,謙虛的update
實際生產中,我們有的時候在一張表的數據會有變化,那這時候update的作用就展現出來了,它可以完成已有數據的轉換工作。
語法:
語法:

update table_name set column_name1 = column_value1 [, column_name2 =     column_value2[, …]] where column_name3 = column_value3[ and | or column_name4 = column_value4[ and | or …]]

說明:
table_name 表名
column_name1, column_name2, … 欄位名
column_value1, column_value2, … 要修改成的欄位值
column_name3, column_name4, … 修改記錄依據的欄位名
column_value3, column_value4, … 修改記錄依據的欄位值
and 表示與(同時滿足條件的記錄)
or 表示或(部分滿足條件的記錄)

最簡單的一條update語句:
update test_lijian set id = 2 where id = 1;

一些select語句和運算符結合的相關例子

還記得最開始說的那些運算符嗎?我們將它們結合sql語句來一起看看如何應用它們。

我們給出一張示例表

查詢現存數量少於5000的動物信息
select * from animal where number < 5000;
結果為:

查詢現存數量在10000~100000之間的動物信息
select * from animal where number between 10000 and 100000;
結果為:

查詢產地在中國、孟加拉和阿富汗的動物信息
sql語句:
select * from animal where address in (『中國』,『孟加拉』,『阿富汗』);
結果為:

查詢名稱中包含『熊』的動物信息
select * from animal where name like 『%熊%』;
結果為:

查詢名稱不為空的動物信息
select * from animal where name is not null;查詢名稱包含熊並且數量大於10000的動物信息
select * from animal where name like『%熊%』and number > 10000;除了select,我們還要掌握簡單的幾個函數COUNT函數 — 求總數SUM函數 —求和AVG函數 —求平均MAX函數 —求最大值MIN函數 —求最小值

我們用幾個不同的例子來看一下:
select count(*) from animal where address = 『中國』;
select sum(number) from animal where kind = 『熊科』;
select avg(number) from animal where kind = 『象科』;
select max (number) from animal;
select min (number) from animal;

查詢條件的等價關係

第二波~

相關焦點

  • 如何學習SQL語言
    為了幫助剛畢業找工作,或者想轉行成為數據分析師工作的朋友,我會用下面內容教會你怎樣用最快速、最容易理解的方式學會資料庫和SQL,並使用SQL進行數據分析:1.入門2.簡單查詢3.匯總分析4.複雜查詢5.多表查詢6.求職面試題7.檢驗SQL的學習效果第1部分:入門學習以下內容:1)了解資料庫的基本概念
  • 產品經理學SQL(二)一天學會用SQL解決業務查詢問題
    本篇文章意在幫助大家系統地入門SQL,教大家如何解決sql查詢任務。前言回顧一下,上一篇文章我們已經知道了SQL語言的基本框架,並能完成簡單的單表查詢和雙表連接查詢。這篇文章希望能幫助你系統地入門SQL,從而解決產品經理80%的sql查詢任務。和上篇的一個小時入門SQL一樣,這篇文章的建議學習時間為一天。
  • SQL基礎操作
    0.前言前篇介紹了一些資料庫的基本概念和以及一些常見的資料庫,讓我們對資料庫有了一個初步的認識。這一篇我們將繼續為C#數據操作的基礎填上一個空白-SQL語句。SQL(Structured Query Language,結構化查詢語言)是一種特定的程式語言,用於管理資料庫系統,操作數據甚至編寫一些程序。當然,一方面因為時間問題,一方面因為各大資料庫的區別(當然了,還有就是個人對SQL研究並不是那麼深)所以這一篇就從SQL的基本操作入手,帶領大家一起看看SQL的世界。
  • SQL on file 工具
    csvsql既然是命令行工具,csvsql必然具備短小快捷的優點,比如帶列名的sales.csv文件,按client列分組,對每組的amount列求和,只需在命令行簡單寫一句:遺憾的是,csvsql除了體積小、編寫SQL快捷之外,就只剩缺點了,其中最大的缺點是安裝配置複雜。
  • 適用於初學者和分析師的SQL –使用Python入門SQL
    SQL是一種簡單而強大的語言,可以幫助我們直接從資料庫管理和查詢數據,而無需先複製它。由於各種條款與英語中使用的條款相似,因此也非常易於理解。因此,編寫SQL命令對您來說將是小菜一碟!鑑於全球數據的擴散,每個企業都在尋找精通SQL的專業人員。因此,一旦將SQL技能添加到簡歷中,您將成為市場上的熱門商品。很好,但是從哪裡開始呢?
  • 最基本的SQL語句大全
    DDL—數據定義語言(Create,Alter,Drop,DECLARE) DML—數據操縱語言(Select,Delete,Update
  • 一次神奇的 sql 查詢經歷,group by 慢查詢優化記錄
    一、問題背景  現網出現慢查詢,在500萬數量級的情況下,單表查詢速度在30多秒,需要對sql進行優化,sql如下:  簡單來說,就是查詢一定條件下,都有哪些用戶的,很簡單的sql,可以看到,查詢耗時為37秒。  說一下app_account欄位的分布情況,隨機生成了5000個不同的隨機數,然後分布到了這500萬條數據裡,平均來說,每個app_account都會有1000個是重複的值,種類共有5000個。
  • SparkSQL基礎及實戰練習
    5.查詢Score表中的最高分的學生學號和課程號。(子查詢或者排序)6.查詢每門課的平均成績。7.查詢Score表中至少有5名學生選修的並以3開頭的課程的平均分數。8.查詢分數大於70,小於90的Sno列。9.查詢所有學生的Sname、Cno和Degree列。10.查詢所有學生的Sno、Cname和Degree列。11.查詢所有學生的Sname、Cname和Degree列。
  • 用Select×進行SQL查詢的七宗罪
    【51CTO.com快譯】如今,網上許多文章都已明確地指出:使用「SELECT * 」作為SQL查詢方式是一種極其危險的代碼書寫習慣。開發人員應該儘量在自己的程序中避免出現此類查詢,取而代之的應該是明確地指定要查詢的列名。不過,大家可能只是「知其然,而不知其所以然」。
  • 在 Linux 上用 SQL 語句查詢 Apache 日誌
    這次,我們會通過另類的途徑來分析 Apache access 日誌,我們使用的工具是 asql。asql 是一個開源的工具,它能夠允許使用者使用 SQL 語句來查詢日誌,從而通過更加友好的格式展現相同的信息。
  • Django QuerySet查詢基礎與技巧.有了她,再也不用擔心SQL注入了.
    簡單的條件可以通過get或filter獲取,但複雜的我總是用SQL語句查詢得到。隨著接觸QuerySet越來越多,發現它相當鋒利、健全。QuerySet是Django的查詢集,可以通過QuerySet條件查詢得到對應模型的對象集合。相對直接使用SQL而言,QuerySet可以防止大部分SQL注入,而且提高代碼可讀性。
  • 大數據分析工程師入門9-Spark SQL
    本文為《大數據分析師入門課程》系列的第9篇,在本系列的第8篇-Spark基礎中,已經對Spark做了一個入門介紹,在此基礎上本篇拎出Spark SQL,主要站在使用者的角度來進行講解,需要注意的是本文中的例子的代碼均使用Scala語言。
  • SQL語句面試題目:一般查詢和高級子查詢(上)
    通過兩條 sql 查詢:[sql] view plain copy select manager_id   from employees   where lower(last_name) = 'chen'      select *   from employees
  • SQL是一門手藝
    SQL: Structured Query Language,結構化查詢語言。實際上也有戲稱是標準查詢語言的,並不為過,SQL誕生於1974年,基於關係資料庫(也就是表格),發展至今毫無衰落跡象,反而滲透到各個數據處理工具/系統中:傳統資料庫、Hive數據倉庫、MongoDB支持類SQL,甚至玩dataframe表格的R語言也可以通過sqldf包寫sql,Spark、Flink也可以寫SQL,等等。玩數據分析,學好SQL無往而不利。
  • 通過 SQL 查詢學習 Pandas 數據處理
    作者:張吉來源:http://shzhangji.com/cnblogs/2017/07/23/learn-pandas-from-a-sql-perspective/Pandas 是一款廣泛使用的數據處理工具。
  • sql子查詢面試題
    這是《從零學會sql》系列課程第4節課《複雜查詢》的練習題,也是常考常考的面試題。
  • Oracle常用經典SQL查詢(一)
    註:本文的查詢測試以oracle11.2.0.4.0企業版作為查詢測試,截圖只是為了證明SQL的可用性及正確性,查詢結果因測試環境不同各有差異
  • SQL Server 2014
    軟體介紹:SQL語言,是結構化查詢語言(Structured Query Language)的簡稱。SQL語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關係資料庫系統;同時也是資料庫腳本文件的擴展名。
  • SQL 查詢優化之 WHERE 和 LIMIT 使用索引的奧秘
    查詢結果:第一條要5.018s,第二條0.016s為什麼會是這樣的結果呢?第一,acct_id和create_time都有索引,不應該出現5s查詢時間這麼慢啊 仔細觀察會發現,索引只使用了idx_create_time,沒有用到idx_acct_id。這能解釋第一條sql很慢,因為where查詢未用到索引,那麼第二條為什麼這麼快?看起來匪夷所思,其實搞清楚mysql查詢的原理之後,其實很簡單。
  • PL/SQL是啥?
    結構化查詢語言(Structured Query Language,簡稱SQL)是用來訪問關係型資料庫一種通用語言,屬於第四代語言(4GL),其執行特點是非過程化,即不用指明執行的具體方法和途徑,而是簡單地調用相應語句來直接取得結果即可。顯然,這種不關注任何實現細節的語言對於開發者來說有著極大的便利。