SQL教學
SQL RDBMS概念
SQL簡介
SQL NOT NULL約束
SQL DEFAULT約束
SQL唯一約束
SQL主鍵
SQL外鍵
SQL CHECK約束
SQL示例數據庫
SQL索引約束
SQL NULL值
數據庫 - 第一範式(1NF)
數據庫 - 第二範式(2NF)
數據庫 - 第三範式(3NF)
SQL RDBMS數據庫
SQL語法
SQL數據類型
SQL操運算符
SQL算術運算符
SQL比較運算符
SQL邏輯運算符
SQL表達式
SQL創建數據庫(CREATE DATABASE)
SQL丟棄或刪除數據庫(DROP DATABASE)
SQL選擇數據庫(SELECT Database, USE語句)
SQL創建表(CREATE Table)
SQL從現有表創建表
SQL刪除表(DROP或DELETE Table)
SQL INSERT INTO插入查詢
SQL SELECT查詢語句
SQL WHERE子句
SQL AND和OR運算符
SQL UPDATE更新查詢
SQL DELETE刪除查詢
SQL LIKE子句
SQL TOP,LIMIT,ROWNUM子句
SQL ORDER BY排序子句
SQL GROUP BY(分組)
SQL Distinct關鍵字
SQL排序結果
SQL約束
SQL Join聯接
SQL INNER JOIN(內部連接)
SQL LEFT JOIN(左連接)
SQL RIGHT JOIN(右連接)
SQL FULL JOIN(全連接)
SQL自連接
SQL笛卡爾或交叉連接
SQL UNION子句/操作符
SQL INTERSECT子句
SQL EXCEPT子句
SQL別名語法
SQL索引
SQL ALTER TABLE(修改表)
SQL TRUNCATE TABLE(截斷表)
SQL View(視圖)
SQL Having子句
SQL事務
SQL通配符運算符
SQL日期函數
SQL ADDDATE()函數
SQL ADDTIME()函數
SQL CONVERT_TZ()函數
SQL CURDATE()函數
SQL CURRENT_DATE()函數
SQL CURTIME()函數
SQL CURRENT_TIME()函數
SQL CURRENT_TIMESTAMP()方法
SQL DATE(expr)函數
SQL DATEDIFF()方法
SQL DATE_ADD()和DATE_SUB()方法
SQL DATE_FORMAT()函數
SQL DATE_SUB()方法
SQL DAY()函數
SQL DAYNAME()函數
SQL DAYOFMONTH()函數
SQL DAYOFWEEK()函數
SQL DAYOFYEAR()函數
SQL EXTRACT()函數
SQL FROM_DAYS()函數
SQL FROM_UNIXTIME()函數
SQL HOUR()方法
SQL LAST_DAY()函數
SQL LOCALTIME和LOCALTIME()函數
SQL LOCALTIMESTAMP和LOCALTIMESTAMP()函數
SQL MAKEDATE()函數
SQL MAKETIME()函數
SQL MICROSECOND()函數
SQL MINUTE()函數
SQL MONTH()函數
SQL MONTHNAME()函數
SQL NOW()函數
SQL PERIOD_ADD()函數
SQL PERIOD_DIFF()函數
SQL QUARTER()函數
SQL SECOND()函數
SQL SEC_TO_TIME()函數
SQL STR_TO_DATE()函數
SQL SUBDATE()函數
SQL SUBTIME()函數
SQL SYSDATE()函數
SQL TIME()函數
SQL TIMEDIFF()函數
SQL TIMESTAMP()函數
SQL TIMESTAMPADD()函數
SQL TIMESTAMPDIFF()函數
SQL TIME_FORMAT()函數
SQL TIME_TO_SEC()函數
SQL TO_DAYS()函數
SQL UNIX_TIMESTAMP()函數
SQL UTC_DATE()函數
SQL UTC_TIME()函數
SQL UTC_TIMESTAMP()函數
SQL WEEK()函數
SQL WEEKDAY()函數
SQL WEEKOFYEAR()函數
SQL YEAR()函數
SQL YEARWEEK()函數
SQL臨時表
SQL克隆表
SQL子查詢
SQL使用序列(自動遞增)
SQL DISTINCT重複處理
SQL注入
SQL實用函數
SQL MAX()函數
SQL MIN()函數
SQL AVG()函數
SQL SUM()函數
SQL SQRT()函數
SQL RAND()函數
SQL CONCAT()函數
SQL數值函數
SQL ABS()函數
SQL ACOS()函數
SQL ASIN(X)函數
SQL ATAN(X)函數
SQL ATAN2()函數
SQL BIT_AND()函數
SQL BIT_COUNT()函數
SQL BIT_OR()函數
SQL CEIL()函數
SQL CONV()函數
SQL COS()函數
SQL COT()函數
SQL DEGREES()函數
SQL EXP(X)函數
SQL FLOOR(X)函數
SQL FORMAT(X,D)函數
SQL GREATEST()函數
SQL INTERVAL()函數
SQL LEAST()函數
SQL LOG()函數
SQL LOG10(X)函數
SQL MOD()函數
SQL OCT(N)函數
SQL PI()函數
SQL POW()函數
SQL RADIANS()函數
SQL ROUND()函數
SQL SIGN(X)函數
SQL SIN(X)函數
SQL SQRT(X)函數
SQL STD()函數
SQL TAN(X)函數
SQL TRUNCATE()函數
SQL字符串函數
SQL ASCII(str)函數
SQL BIN(N)函數
SQL BIT_LENGTH()函數
SQL CHAR()函數
SQL CHAR_LENGTH()函數
SQL CHARACTER_LENGTH()函數
SQL字符串CONCAT()函數
SQL CONCAT_WS()函數
SQL CONV(N,from_base,to_base)函數
SQL ELT()函數
SQL EXPORT_SET()函數
SQL FIELD()函數
SQL FIND_IN_SET()函數
SQL FORMAT()函數
SQL HEX()函數
SQL INSERT()函數
SQL INSTR()函數
SQL LCASE()函數
SQL LEFT()函數
SQL LENGTH()函數
SQL LOAD_FILE()函數
SQL LOCATE()函數
SQL LOWER()函數
SQL LPAD()函數
SQL LTRIM()函數
SQL MAKE_SET()函數
SQL MID()函數
SQL OCT()函數
SQL OCTET_LENGTH()函數
SQL ORD()函數
SQL POSITION()函數
SQL QUOTE()函數
SQL REGEXP模式
SQL REPEAT()函數
SQL REPLACE()函數
SQL REVERSE()函數
SQL RIGHT()函數
SQL RPAD()函數
SQL SOUNDEX()函數
SQL SPACE()函數
SQL STRCMP()函數
SQL SUBSTRING()函數
SQL SUBSTRING_INDEX()函數
SQL TRIM()函數
SQL UCASE()函數
SQL UNHEX()函數
SQL UPPER()函數

SQL RDBMS概念

RDBMS是什麼?

RDBMS代表關係數據庫管理系統。 RDBMS是SQL的基礎,對於像MS SQL Server,IBM DB2,Oracle,MySQL和Microsoft Access等所有現代數據庫系統。

一個關係數據庫管理系統(RDBMS)是一個數據庫管理系統(DBMS),基於關係模型如通過 E. F. Codd 引入。

什麼是表?

在RDBMS中的數據存儲在數據庫對象稱爲表。表是相關數據條目的集合,它由列和行的組成。

記住,表是數據存儲在關係數據庫中最常見和最簡單的形式。以下是CUSTOMERS表的例子:

+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+

什麼是字段?

每個表被分成較小的實體稱爲字段。在CUSTOMERS表中的字段組成是:ID, NAME, AGE, ADDRESS 和 SALARY。

字段旨在維護有關表中的每個記錄特定信息表中的列。

什麼是記錄或行?

一個記錄,也被稱爲一行數據,是存在於一個表中的每個單獨的條目。比如有7條記錄在上面的CUSTOMERS表。以下是在CUSTOMERS表中的數據或記錄中的一行:

+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+

記錄是表中的一個水平的實體。

什麼是列?

列是包含在一個表中的特定字段相關聯的所有信息表的垂直實體。

例如,在CUSTOMERS表中的一列是ADDRESS,它代表位置描述,並會包括以下內容:

+-----------+
| ADDRESS |
+-----------+
| Ahmedabad |
| Delhi |
| Kota |
| Mumbai |
| Bhopal |
| MP |
| Indore |
+----+------+

什麼是NULL值?

在表中的NULL值是一個字段顯示爲空值,這意味着使用一個NULL值的字段是表示一個沒有值的字段。

這是非常重要的是要明白,一個NULL值不同於零值或包含空格的字段。NULL值字段是一個記錄創建過程中已經留爲空白。

SQL 約束:

約束是對錶執行對數據的列的規則。這些用於限制數據的類型進入表中。這確保數據庫中的數據的準確性和可靠性。

約束可能是列級或表級。列級約束僅應用於一列,表級約束應用於整個表。

下面是常用的SQL約束:

  • NOT NULL約束 - 確保列不能有NULL值

  • 默認值約束 - 提供未指定時爲列的值時的默認值

  • 唯一值約束 - 確保了在一列中的所有的值是唯一的

  • 主鍵 - 唯一標識數據庫表中的每一行/記錄

  • 外鍵 - 唯一標識任何其他數據庫表中的行/記錄

  • 檢查約束 - CHECK約束可以確保列中的所有值滿足一定的條件

  • 索引 - 使用非常快速地創建和檢索數據庫中的數據。

數據完整性:

數據的完整性有以下幾類存在於每個RDBMS:

  • 實體完整性: 表中沒有重複行

  • 域完整性: 通過限制的類型,格式或值的範圍強制對於一個給定列的有效條目

  • 參考完整性: 行不能被刪除,被其他記錄使用

  • 用戶定義的完整性: 強制執行不屬於實體,域和參照完整性一些具體的業務規則

數據庫規範化

數據庫正常化是有效地組織數據庫中的數據的過程。歸一化處理的兩個原因:

  • 消除冗餘數據,例如,存儲了一個以上的相同的數據在同一個表。

  • 確保數據的相關性意義。

這兩者都是值得追求的目標,因爲它們減少的空間的數據庫消耗的量,並確保數據在邏輯上存儲。規範化由一系列指導方針,幫助指導您創建一個良好的數據庫結構。

標準化準則分爲正常形態;認爲形式的格式或數據庫結構的佈局方式。 正常形態的目的是組織數據庫結構,使其符合第一範式,然後第二範式,最後第三範式的規則。

這是你的選擇,把它進一步去第四範式,第五範式等,但總體來講,滿足第三範式就夠了。

  • 第一範式(1NF)

  • 第二範式(2NF)

  • 第三範式 (3NF)