mysql 01.三范式,數據類型

01.概念的區分:
mysql是屬于DBMS層次的,sql語句是用于DBMS的語句。

02.sql語句詳細介紹:

SQL的概述Structure Query Language(結構化查詢語言)簡稱SQL,它被美國國家標準局(ANSI)確定為關系型數據庫語言的美國標準,后被國際化標準組織(ISO)采納為關系數據庫語言的國際標準。

數據庫管理系統(DBMS)可以通過SQL管理數據庫(DB);定義和操作數據,維護數據的完整性和安全性。

03.從數據庫開始說起,DB的設計三范式:
在這里插入圖片描述

舉例說明3NF:
1NF

屬性不可再分,即表中的每個列都不可以再進行拆分。

如下學生信息表(student):

id、name(姓名)、sex_code(性別代號)、sex_desc(性別描述)、contact(聯系方式)

primary key(id)

在這里插入圖片描述如果在查詢學生表時經常用到學生的電話號,則應該將聯系方式(contact)這一列分為電話號(phone)和地址(address)兩列,這樣才符合第一范式。

修改使表滿足1NF后:

在這里插入圖片描述

判斷表是否符合第一范式,列是否可以再分,得看需求,

如果將電話號和地址分開才能滿足查詢等需求時,那之前的表設計就是不滿足1NF的,如果電話號和地址拼接作為一個字段也可以滿足查詢、存儲等需求時,那它就滿足1NF。

2NF

在滿足1NF的前提下,表中不存在部分依賴,非主鍵列要完全依賴于主鍵。(主要是說在聯合主鍵的情況下,非主鍵列不能只依賴于主鍵的一部分)

注:聯合主鍵就是用2個或2個以上的字段組成主鍵。 用這個主鍵包含的字段作為主鍵,這個組合在數據表中是唯一,且加了主鍵索引。

如下學生成績表(score):

stu_id(學生id)、kc_id(課程id)、score(分數)、kc_name(課程名)

primary key(stu_id, kc_id)
在這里插入圖片描述

表中主鍵為stu_id和kc_id組成的聯合主鍵。滿足1NF;
非主鍵列score完全依賴于主鍵,stu_id和kc_id兩個值才能決定score的值;

而kc_name只依賴于kc_id,與stu_id沒有依賴關系,它不完全依賴于主鍵,只依賴于主鍵的一部分,不符合2NF。

修改使表滿足2NF后:

成績表(score) ? primary key(stu_id)
在這里插入圖片描述

課程表(kc) ? primary key(kc_id)

在這里插入圖片描述

將原來的成績表(score)拆分為成績表(score)和課程表(kc),而且兩個表都符合2NF。

3NF:

在滿足2NF的前提下,不存在傳遞依賴。(A -> B, B -> C, A->C)

如下學生信息表(student):

primary key(id)
在這里插入圖片描述

表中sex_desc依賴于sex_code,而sex_code依賴于id(主鍵),從而推出sex_desc依賴于id(主鍵);sex_desc不直接依賴于主鍵,而是通過依賴于非主鍵列而依賴于主鍵,屬于傳遞依賴,不符合3NF。

修改表使滿足3NF后:

學生表(student) ? primary key(id)

在這里插入圖片描述

性別代碼表(sexcode) ? primary key(sex_code)

在這里插入圖片描述

將原來的student表進行拆分后,兩個表都滿足3NF。

04.DB中的數據的數據類型
數據庫的數據類型

整數類型
根據數值取值范圍的不同MySQL 中的整數類型可分為5種,分別是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。

在這里插入圖片描述
浮點數類型和定點數類型
在MySQL數據庫中使用浮點數和定點數來存儲小數。浮點數的類型有兩種:單精度浮點數類型(FLOAT)和雙精度浮點數類型(DOUBLE)。而定點數類型只有一種即DECIMAL類型。下圖列舉了 MySQL中浮點數和定點數類型所對應的字節大小及其取值范圍:
在這里插入圖片描述
字符串類型
在MySQL中常用CHAR 和 VARCHAR 表示字符串。兩者不同的是:VARCHAR存儲可變長度的字符串。
當數據為CHAR(M)類型時,不管插入值的長度是實際是多少它所占用的存儲空間都是M個字節;而VARCHAR(M)所對應的數據所占用的字節數為實際長度加1
在這里插入圖片描述
字符串類型
文本類型用于表示大文本數據,例如,文章內容、評論、詳情等,它的類型分為如下4種:
在這里插入圖片描述
日期與時間類型
MySQL提供的表示日期和時間的數據類型分別是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下圖列舉了日期和時間數據類型所對應的字節數、取值范圍、日期格式以及零值:
在這里插入圖片描述
YEAR類型
YEAR類型用于表示年份,在MySQL中,可以使用以下三種格式指定YEAR類型 的值。
1、使用4位字符串或數字表示,范圍為’1901’—'2155’或1901—2155。例如,輸人 ‘2019’或2019插人到數據庫中的值均為2019。
2、使用兩位字符串表示,范圍為’00’—‘99’。其中,‘00’—'69’范圍的值會被轉換為 2000—2069范圍的YEAR值,‘70’—'99’范圍的值會被轉換為1970—1999范圍的YEAR 值。例如,輸人’19’插人到數據庫中的值為2019。

二進制類型
在MySQL中常用BLOB存儲二進制類型的數據,例如:圖片、PDF文檔等。BLOB類型分為如下四種:在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40337.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40337.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

神經網絡基礎-神經網絡補充概念-37-其他正則化方法

概念 L1 正則化(Lasso Regularization):L1 正則化通過在損失函數中添加參數的絕對值之和作為懲罰項,促使部分參數變為零,實現特征選擇。適用于稀疏性特征選擇問題。 L2 正則化(Ridge Regularization&…

conda常用命令及國內鏡像源

conda命令使用介紹 啟動conda source ~/.bashrc幫助目錄 conda create -h檢查conda版本 conda --version升級當前版本的conda conda update conda環境管理 列出所有的環境 conda info -e conda env list安裝一個不同版本的python新環境 conda create --name py27 pytho…

PHP FTP的相關函數及簡單使用示例

簡介 FTP是ARPANet的標準文件傳輸協議,該網絡就是現今Internet的前身。 PHP FTP函數是通過文件傳輸協議提供對文件服務器的客戶端訪問,FTP函數用于打開、登陸以及關閉連接,也用于上傳、下載、重命名、刪除以及獲取服務器上文件信息。 安裝 …

Ubuntu下mysql8開啟遠程連接

環境 mysql8ubuntu22.04 更改配置文件 vim /etc/mysql/mysql.conf.d/mysqld.conf找到 bind-address 127.0.0.1 mysqlx-bind-address 127.0.0.1 把這兩行注釋掉,保存退出即可 修改mysql配置 登錄mysql創建一個遠程連接賬戶,名字任意,密碼任意,用戶名…

前端高頻面試題 Day02

面試題 var 和 let const 的區別 var 是 ES5 及之前的語法,let const 是 ES6 語法var 和 let 是變量,可修改;const 是常量,不可修改var 有變量提升,let const 沒有var 沒有塊級作用域,let const 有 &…

JavaWeb-DAO設計模式

目錄 DAO設計模式 1.認識DAO 2.DAO各部分的詳解 3.DAO設計模式流程 DAO設計模式 1.認識DAO DAO(Data Acess Object 數據庫訪問對象)的主要功能是操作數據庫,所以DAO在標準開發架構中數據數據層,以下是標準開發的架構 客戶層:目前使用B/…

vue中style scoped屬性的作用

一、為什么要給style 節點加 scoped 屬性(vue) 1、作用:當style標簽里面有scoped屬性時,它的css只作用于當前組建的元素。在單頁面項目中可以使組件之間互不污染,實現模塊化(實現組件的私有化,不…

Ubuntu安裝mysql5.7

目錄 1. 更新系統軟件包2. 安裝MySQL 5.73. 啟動MySQL 服務4. 設置MySQL root 密碼5. 驗證MySQL 安裝6. 啟用遠程訪問7. 創建新用戶8. 為新用戶授予權限9. mysql命令 以Ubuntu 18.04系統為例,安裝MySQL 5.7。操作步驟如下: 1. 更新系統軟件包 sudo apt…

Openai中的tokens怎么估計

大規模語言模型(LLM)的出現給自然語言處理領域帶來了變革的可能性,Openai開放了chatgpt的API,方便了開發人員使用LLM的推理能力,注冊時贈送5美元的使用額度,有效期3個月。 如果想便捷的使用chatgpt的API&a…

介紹 TensorFlow 的基本概念和使用場景

TensorFlow 是一種開源的機器學習框架,由 Google 開發。它是用來構建和訓練機器學習模型的強大工具,支持很多種不同類型的機器學習算法,并使用數據流圖來表示計算過程。 TensorFlow 的核心是張量 (Tensor) 和計算圖 (Graph)。 張量 (Tensor)…

OpenCV之薄板樣條插值(ThinPlateSpline)

官方文檔&#xff1a;OpenCV: cv::ThinPlateSplineShapeTransformer Class Reference 使用方法&#xff1a; 頭文件&#xff1a;#include <opencv2/shape/shape_transformer.hpp> &#xff08;1&#xff09;點匹配 一般根據有多少個樣本&#xff08;或者點&#xff09;…

6.2 Spring Boot整合MyBatis

1、基于Spring BootMyBatis的學生信息系統的設計與實現案例 基于Spring BootMyBatis實現學生信息的新增、修改、刪除、查詢功能&#xff0c;并實現MySQL數據庫的操作。 MySQL數據庫創建學生表&#xff08;t_student&#xff09;&#xff0c;有主鍵、姓名、年齡、性別、出生日…

npm如何設置淘寶的鏡像源模式

1. 查看當前npm的下載源 npm config get registry2. 全局配置npm使用淘寶鏡像作為默認下載源 npm config set registry https://registry.npm.taobao.org --global3. 安裝依賴包 npm install <package-name> 添加到devDependencies字段中&#xff1a; npm install &l…

Jmeter 二次開發 函數助手 AES加解密

Jmeter 二次開發 函數助手 AES加解密 1. 環境準備2. 關鍵技術說明2.1 離線導包2.2 示例代碼 3. 代碼包4. 結果演示 1. 環境準備 IDE &#xff1a;IntelliJ IDEA 2021.1.1 x64JAVA環境 &#xff1a;jdk1.8.0_251離線導包&#xff1a;導入Jmeter安裝目錄下lib/ext下的ApacheJmet…

Java課題筆記~ SpringMVC的四種跳轉方式

默認的跳轉是請求轉發&#xff0c;直接跳轉到jsp頁面展示 還可以使用框架提供的關鍵字redirect&#xff0c;進行一個重定向操作&#xff0c;包括重定向頁面和重定向action&#xff0c;使用框架提供的關鍵字forward&#xff0c;進行服務器內部轉發操作&#xff0c;包括轉發頁面…

Martin_DHCP_V3.0 (DHCP自動化泛洪攻擊GUI)

Github>https://github.com/MartinxMax/Martin_DHCP_V3.0 首頁 Martin_DHCP_V3.0 自動化DHCP洪泛攻擊 Martin_DHCP_V3.0 使用方法 安裝三方庫 #python3 1.RunMe_Install_Packet.py 攻擊路由器 #python3 Martin_DHCP_Attack.py 填寫網卡 填寫攻擊次數 開始運行

《Go 語言第一課》課程學習筆記(二)

初窺門徑&#xff1a;一個 Go 程序的結構是怎樣的&#xff1f; 創建“hello&#xff0c;world”示例程序 在 Go 語言中編寫一個可以打印出“hello&#xff0c;world”的示例程序&#xff0c;我們只需要簡單兩步&#xff0c;一是創建文件夾&#xff0c;二是開始編寫和運行。通…

高光譜 | 礦物識別和分類標簽數據制作、農作物病蟲害數據分類、土壤有機質含量回歸與制圖、木材含水量評估和制圖

本課程提供一套基于Python編程工具的高光譜數據處理方法和應用案例。 本課程涵蓋高光譜遙感的基礎、方法和實踐。基礎篇以學員為中心&#xff0c;用通俗易懂的語言解釋高光譜的基本概念和理論&#xff0c;旨在幫助學員深入理解科學原理。方法篇結合Python編程工具&#xff0c;…

阿里云服務器部署RabbitMQ流程

阿里云百科分享使用阿里云服務器部署RabbitMQ流程&#xff0c;RabbitMQ是實現了高級消息隊列協議&#xff08;AMQP&#xff09;的開源消息代理軟件&#xff0c;用于在分布式系統中存儲轉發消息&#xff0c;有良好的易用性、擴展性和高可用性。本文介紹如何通過ECS實例部署Rabbi…

CentOS系統環境搭建(四)——Centos7安裝Java

centos系統環境搭建專欄&#x1f517;點擊跳轉 Centos7安裝Java 查看云端yum庫中目前支持安裝的jdk軟件包 yum search java|grep jdk選擇JDK版本&#xff0c;并安裝 yum install -y java-1.8.0-openjdk檢查是否安裝成功 java -version查看JDK的安裝目錄 find / -name jav…