天天看點

sql 一對多獲得一條資料_結構化查詢語言SQL學習入門

sql 一對多獲得一條資料_結構化查詢語言SQL學習入門

一、SQL簡介

結構化查詢語言(Structured QueryLanguage)簡稱SQL,是一種特殊目的的程式設計語言,是一種資料庫查詢和程式設計語言,用于存取資料以及查詢、更新和管理關系資料庫系統。

1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的關系資料庫系統SystemR上實作。

1980年10月,經美國國家标準局(ANSI)的資料庫委員會X3H2準許,将SQL作為關系資料庫語言的美國标準,同年公布了标準SQL,此後不久,國際标準化組織(ISO)也作出了同樣的決定。

注:除了标準SQL外,大部分關系型資料庫都有自己的私有擴充。

二、SQL功能

SQL功能的展現主要在于SQL語言,SQL按功能類型分以下6種語言,其中1-4條使用最多。

1、資料查詢語言(DQL:Data Query Language):其語句,也稱為“資料檢索語句”,用以從表中獲得資料,确定資料怎樣在應用程式給出。保留字SELECT是DQL(也是所有SQL)用得最多的動詞,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。這些DQL保留字常與其它類型的SQL語句一起使用。

2、資料操作語言(DML:Data Manipulation Language):其語句包括動詞INSERT、UPDATE和DELETE。它們分别用于添加、修改和删除。

3、資料控制語言(DCL):它的語句通過GRANT或REVOKE實作權限控制,确定單個使用者和使用者組對資料庫對象的通路。某些RDBMS可用GRANT或REVOKE控制對表單個列的通路。

4、資料定義語言(DDL):其語句包括動詞CREATE,ALTER和DROP。在資料庫中建立新表或修改、删除表(CREAT TABLE 或 DROP TABLE);為表加入索引等。

5、指針控制語言(CCL):它的語句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于對一個或多個表單獨行的操作。

6、事務控制語言(TCL):它的語句能確定被DML語句影響的表的所有行及時得以更新。包括COMMIT(送出)指令、SAVEPOINT(儲存點)指令、ROLLBACK(復原)指令。

三、SQL使用

  • DDL:CREATE,ALTER和DROP
  • CREATE(建立)
CREATE DATABASE 資料庫名;--建立資料庫
           
CREATE TABLE 表名稱(列名1 資料類型(資料長度),列名2 資料類型(資料長度),列名3 資料類型(資料長度));--建立資料表
           
資料類型 描述

integer(size)

int(size)

smallint(size)

tinyint(size)

僅容納整數。在括号内規定數字的最大位數。

decimal(size,d)

numeric(size,d)

容納帶有小數的數字。

'size" 規定數字的最大位數。" d " 規定小數點

char(size)

容納固定長度的字元串( 可容納字母、數字以及特殊字元)

在括号中規定字元串的長度。

varchar(size)

容納可變長度的字元串( 可容納字母、數字以及特殊字元)

在括号中規定字元串的最大長度

date(yyyymmdd) 容納日期。
CREATE USER 使用者名  IDENTIFIED BY 密碼;--建立使用者
           
CREATE INDEX 索引名稱 ON 表名稱(列名稱);--建立索引
           
  • ALTER(修改)
alter table 表名稱 add 列名稱 資料類型;--在某個表增加某個字段alter table 表名稱 drop column 列名稱;--删除某個表的某個字段alter table 表名稱 alter column 列名稱 資料類型;--修改某個字段的資料類型
           
  • DROP(撤銷)
drop database 資料庫名稱;--删除資料庫drop table 表名稱;--删除表(表的結構、屬性以及索引也會删除)
           
  • DML:SELECT、INSERT、UPDATE和DELETE
  • SELECT(查詢)
SELECT 列名稱 FROM 表名稱;--查詢某個表中某些列值SELECT * FROM 表名稱;--查詢某個表中所有列的資料
           
  • INSERT(插入)
INSERT INTO 表名稱 (列1,列2,列3,)VALUES (值1,值2,值3,);--向某個表的某些字段插入資料,注意列名稱要與值一一對應INSERT INTO 表名稱 VALUES (值1,值2,值3,);--向某個表的所有字段插入資料,同樣名稱要與值一一對應
           
  • UPDATE(更新)
UPDATE 表名稱 SET 列名稱=新值;--更新某個表的某列的值,實際生産使用中常與WHERE子句同用,篩選一條或多條資料進行修改update 表名稱 set 列名稱=REPLACE(列名稱,'原字元','新字元');--更新某個表中某個字段的部分字元
           
  • DELETE(删除)
delete from 表名稱;--删除某個表中資料,同樣生産使用中常與WHERE子句同用,篩選一條或多條資料進行删除
           
  • DCL:GRANT或REVOKE
  • GRANT(授予)
GRANT  ON 表名[(列名)] TO ;GRANT  ON  FROM ;--授權
           
  • REVOKE(回收)
REVOKE  ON   FROM ;--收回權限
           
  • DQL:WHERE,ORDER BY,GROUP BY和HAVING
  • WHERE(在某種情況下)

WHERE子句常與“增删改查”語句搭配作篩選資料用,通過運算符對比某個字段以此作為條件篩選部分資料進行其他操作;可以了解為條件語句,滿足條件的執行“增删改查”操作,不滿足條件的不進行“增删改查”操作。

常見運算符:

運算符 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
like 相似于(模糊查詢)
between 某個範圍内
  • ORDER BY(排序)

    ORDER BY 關鍵字用于對結果集進行排序,ORDER BY DESCD倒序排列

SELECT * FROM 表名稱 ORDER BY 列名稱;--查詢表按某列進行排列SELECT * FROM 表名稱 ORDER BY 列名稱 DESC;--查詢表按某列進行倒序排列
           
  • GROUP BY(分組)

    GROUP BY 語句用于結合聚合函數,根據一個或多個列對結果集進行分組

SELECT 列名稱 FROM 表名稱 GROUP BY 列名稱;--查詢某列所有不同值顯示
           
  • HAVING

在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函數一起使用。

HAVING 子句可以讓我們篩選分組後的各組資料。

推薦書籍:《SQL基礎教程》,想要深入學習的朋友有機會可以看看

繼續閱讀