【SQL基礎】三種類別語句

来源:http://www.cnblogs.com/libra-yong/archive/2017/02/22/6428339.html
-Advertisement-
Play Games

SQL 語句主要可以劃分為以下 3 個類別。 DDL(Data Definition Languages)語句:數據定義語言,這些語句定義了不同的數據段、資料庫、表、列、索引等資料庫對象的定義。常用的語句關鍵字主要包括 create、drop、alter等。 就是對資料庫內部的對象進行創建、刪除、修 ...


SQL 語句主要可以劃分為以下 3 個類別。

DDL(Data Definition Languages)語句:數據定義語言,這些語句定義了不同的數據段、資料庫、表、列、索引等資料庫對象的定義。常用的語句關鍵字主要包括 create、drop、alter等。

 就是對資料庫內部的對象進行創建、刪除、修改的操作語言

 

DML(Data Manipulation Language)語句 :數據操縱語句,用於添加、刪除、更新和查詢資料庫記錄,並檢查數據完整性,常用的語句關鍵字主要包括 insert、delete、udpate 和select 等。

對資料庫中表記錄的操作

 

DCL(Data Control Language)語句:數據控制語句,用於控制不同數據段直接的許可和訪問級別的語句。這些語句定義了資料庫、表、欄位、用戶的訪問許可權和安全級別。主要的語句關鍵字包括 grant、revoke 等。

主要是DBA用來管理系統中的對象許可權時所使用,一般的開發人員很少使用



安裝MySQL 時系統自動創建的,其各自功能如下。
information_schema:主要存儲了系統中的一些資料庫對象信息。比如用戶表信息、列信息、許可權信息、字元集信息、分區信息等。
cluster:存儲了系統的集群信息。
mysql:存儲了系統的用戶許可權信息。
test:系統自動創建的測試資料庫,任何用戶都可以使用。


1.DDL

(1).創建資料庫

create database dbname;

 

可以用  show databases;  來查看有哪些資料庫

選擇資料庫 ;

use dbname;

 

(2).刪除資料庫

drop database dbname;

 

(3).創建表

create table tablename (column_name_1 column_type_1 constraints,column_name_2  column_type_2  constraints , ……column_name_n  column_type_n constraints);

 

 

可以用 下麵的語法查看表的定義:

desc tablename; 

 

 

(4).刪除表

drop table tablename;

 

(5).修改表

修改表類型:

ALTER TABLE tablename MODIFY [COLUMN] column_definition [FIRST | AFTER col_name];

 

增加表欄位:

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST | AFTER col_name];

 

刪除欄位:

ALTER TABLE tablename DROP [COLUMN] col_name;

 

欄位改名:

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST|AFTER col_name];

 

   註意:change 和 modify都可以修改表的定義,不同的是 change 後面需要寫兩次列名,不方便。但是 change 的優點是可以修改列名稱,modify則不能。
修改欄位排列順序:
前面介紹的的欄位增加和修改語法(ADD/CNAHGE/MODIFY)中,都有一個可選項 [first|aftercolumn_name],這個選項可以用來修改欄位在表中的位置,預設 ADD 增加的新欄位
是加在表的最後位置,而 CHANGE/MODIFY 預設都不會改變欄位的位置。
    註意:CHANGE/FIRST|AFTER COLUMN 這些關鍵字都屬於 MySQL 在標準 SQL 上的擴展,在其他資料庫上不一定適用。

(6).表改名

ALTER TABLE tablename RENAME [TO] new_tablename;

 

2.DML

(1).插入記錄

一條記錄:

INSERT INTO tablename (field1,field2,……fieldn) VALUES(value1,value2,……valuesn); /*field和value一一對應,field可以省略*/

 

 

多條記錄:

INSERT INTO tablename (field1, field2,……fieldn)
    VALUES
    (record1_value1, record1_value2,……record1_valuesn),
    (record2_value1, record2_value2,……record2_valuesn),
    ……
    (recordn_value1, recordn_value2,……recordn_valuesn)
;
/*field可以省略*/

 

 

(2).更新記錄

更新一個表中的數據:

UPDATE tablename SET field1=value1,field2.=value2,……fieldn=valuen [WHERE CONDITION];

 

更新多個表中的數據:

UPDATE t1,t2…tn set t1.field1=expr1,tn.fieldn=exprn [WHERE CONDITION]; /*t為表名*/

 

 

(3).刪除記錄

刪除一個表中記錄:

DELETE FROM tablename [WHERE CONDITION];

 

刪除多個表中記錄:

DELETE t1,t2…tn FROM t1,t2…tn [WHERE CONDITION];

 

    註意:不管是單表還是多表,不加 where 條件將會把表的所有記錄刪除,所以操作時一定要小心。

(4).查詢記錄

基本的語法:

SELECT * FROM tablename [DISTINCT] [WHERE CONDITION]; /*distinct是消除重覆的記錄,where條件查詢*/

 

 

排序和限制:

SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],……fieldn [DESC|ASC]];
/* DESC 和 ASC 是排序順序關鍵字,DESC 表示按照欄位進行降序排列,ASC 則表示升序排列,如果不寫此關鍵字預設是升序排列。ORDER BY 後面可以跟多個不同的排序欄位,並且每個排序欄位可以有不同的排序順序。*/

 

限制顯示:

SELECT ……[LIMIT offset_start,row_count];

 

    註意:limit 屬於 MySQL 擴展 SQL92 後的語法,在其他資料庫上並不能通用。limit 經常和 order by 一起配合使用來進行記錄的分頁顯示。
聚合:

SELECT [field1,field2,……fieldn] fun_name
FROM tablename
[WHERE where_contition]
[GROUP BY field1,field2,……fieldn
[WITH ROLLUP]]
[HAVING where_contition]

 

對其參數進行以下說明。

 fun_name 表示要做的聚合操作,也就是聚合函數,常用的有 sum(求和)、count(*)(記錄數)、max(最大值)、min(最小值)。

GROUP BY 關鍵字表示要進行分類聚合的欄位,比如要按照部門分類統計員工數量,部門就應該寫在 group by 後面。

 WITH ROLLUP 是可選語法,表明是否對分類聚合後的結果進行再彙總。

 HAVING 關鍵字表示對分類後的結果再進行條件的過濾

    註意:having 和 where 的區別在於 having 是對聚合後的結果進行條件的過濾,而 where 是在聚合前就對記錄進行過濾,如果邏輯允許,我們儘可能用 where 先過濾記錄,
這樣因為結果集減小,將對聚合的效率大大提高,最後再根據邏輯看是否用 having 進行再過濾。

(5).子查詢:

記錄聯合:

SELECT * FROM t1
UNION|UNION ALL
SELECT * FROM t2
……
UNION|UNION ALL
SELECT * FROM tn;

 

    註意:UNION 和 UNION ALL 的主要區別是 UNION ALL 是把結果集直接合併在一起,而 UNION 是將UNION ALL 後的結果進行一次 DISTINCT,去除重覆記錄後的結果。

 

3.DCL


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • TextView屬性大全 今天研究了TextView一天了,發現網上有一篇講TextView屬性的,非常全,收藏一下先。 發現TextView有一個比較大的問題,就是文字排版的問題,遇到數字,字母,符號等就會有問題,目前還沒有什麼解決方法。 如果有高人研究出方法來解決,請指教一下哈。 android ...
  • Codecademy中Learn SQL, SQL: Table Transformaton和SQL: Analyzing Business Metrics三門課程的筆記,以及補充的附加筆記。 Codecademy的課程以SQLite編寫,筆記中改成了MySQL語句。 I. Learn SQL 1. ...
  • ORACLE RAC原理:在一個應用環境當中,所有的伺服器使用和管理同一個資料庫,目的是為了分散每一臺伺服器的工作量,硬體上至少需要兩台以上的伺服器,而且還需 要一個共用存儲設備。同時還需要兩類軟體,一個是集群軟體,另外一個就是Oracle資料庫中的RAC組件。同時所有伺服器上的OS都應該是同一類O ...
  • 一,約束以及修改數據表 約束的作用?1.約束保證數據的完整性、一致性;2.約束分為表級約束、列級約束;3.約束類型包括:NOT NULL(非空約束)、PRIMARY KEY(主鍵約束)、UNIQUE KEY(唯一約束)、DEFAULT(預設約束)、FOREIGN KEY(外鍵約束); 列級約束:只針 ...
  • table 表 --delete table drop table Test1; -- Create table create table TEST1 ( ID NUMBER, T_NAME VARCHAR2(100), DT DATE ); -- 添加註釋 comment on column TE ...
  • Redis 3.x.x系列的安裝於之前的2.x.x略有不同,需要先編譯依賴。 ...
  • 接上一回的話,CentOS7.0下安裝好了Nginx服務,對於我們的CNMP,我們可以開始我們的M啦,就是傳統意義上的MySql服務 MySql簡介 MySQL是一個關係型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。在 WEB 應用方面,MySQL是最好的 R ...
  • 1. 本地連接MySQL資料庫: Mysql –h 連接地址(本地為localhost) -u 用戶名(root) -p[密碼] [資料庫名]; 舉例 :mysql –h localhost –u root –p123456 db_test(註意:-p後不能有空格) 密碼和資料庫名可以不加。密碼不加 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...