SQL語言基礎知識(2)

????????在學會創建數據庫之后,在數據庫中需要創建表(實體以表的形式存在),以及對表中存儲的數據記錄進行定義,相當于 Java 語言中對類編寫其屬性。在定義前我們需要了解 SQL 語言有哪些數據類型。

一、數據類型

1.1 數據值類型

????????1.1.1 整型

類型大小說明對應 Java 類型
bit [(M)]默認 bit位值類型。M表示每個值的位數,取值范圍是1~64.如果省略M,則默認是1
tinyint [(M)]1 byte取值范圍 -2? ~ 2?-1(-128到127),無符號取值范圍2?-1Byte
bool1 byte通常用 tinyint(1) 表示true。值為零表示假,非零表示真Boolean
smallint [(M)]2 byte取值范圍 -21? ~ 21?-1,無符號取值范圍 21?-1Short
mediumint [(M)]3 byte取值范圍 -223 ~ 223-1,無符號取值范圍 22?-1
int [(M)]4 byte取值范圍 -231 ~ 231-1,無符號取值范圍 232-1?Int
integer [(M)]4 byteint[(M)] 的同義詞Integer
bigint [(M)]8 byte取值范圍 -2?3 ~ 2?3-1,無符號取值 2??-1Long

????????bigint 一般用來作編號的類型。

????????1.1.2 浮點型

類型大小說明
float [(M,D)]4 byte單精度浮點型,M是總位數,D是小數點后面的位數,大約可以精確到小數點后7位。
double [(M,D)]8 byte單精度浮點型,M是總位數,D是小數點后面的位數,大約可以精確到小數點后15位。
decimal [(M,D)]動態不存在精度損失,M是總位數,D是小數點后面的位數。decimal的最大位數(M) 是65,最大小數位數(D)是30.如果省略M,則默認是10,如果省略D,則默認為0。M中不計算小數點和負數的-號,如果D為0,則值沒有小數點和小數部分。

????????decimal 一般用于表示金額 / 價格,可以存放很大的數,也可以根據項目要求自己設置小數精度,適用范圍廣。

1.2 字符串類型

類型說明
char [(M)]固定長度字符串,M表示長度,以字符為單位,取值范圍0~255,M省略則長度為1
varchar (M)可變長度字符串,M表示字符最大長度,取值范圍0~65535字節,有效字符個數取決于實際指定的字符數和使用的字符集,最常用
tinytext小文本類型,最大長度為255個字節,有效字符個數取決于使用的字符集
text [(M)]文本類型,最大長度為65535個字節,有效字符個數取決于使用的字符集
midiumtext中文本類型,最大長度為16,777,215個字節,有效字符個數取決于使用的字符集
longtext大文本類型,最大長度為4,294,967,295 即4GB個字節,有效字符個數取決于使用的字符集

????????對于 varchar 最常用的字符串類型其大小如果以字符為單位,就需要根據字符的具體情況用 1~4 個字節來表示一個字符。在 utf8mb4 編碼集下,一個 varchar 字段最多可以存放 65535 / 4 = 16383 個字符。

1.3 二進制類型

????????文本類型是人類能直接看懂的,而二進制類型,則是給機器看的。

類型大小
binary [(M)]固定長度二進制字節,與char類似,但存儲的是二進制字節而不是字符串。M表示長度,以字節為單位,取值范圍0~255,M省略則長度為1
varbinary (M)可變長度二進制字節,與varchar類似,但存儲的是二進制字節而不是字符串。M表示長度,以字節為單位
tinyblob小二進制字節類型,最大長度為255個字節
blob [(M)]二進制字節類型,最大長度為65535個字節
midiumblob中二進制字節類型,最大長度為16,777,215個字節
longblob大二進制字節類型,最大長度為 4,294,967,295即4GB個字節

1.4 日期類型

數據類型大小說明對應Java類型
datetime?[(fsp)]8字節

日期類型和時間類型結合

范圍從1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59:59.499999,不會進行時區的檢索及轉換

顯示格式 yyyy-mm-dd hh:mm:ss[.fraction]

0值為 0000-00-00 00:00:00

java.util.Date, java.sql.Timestamp
timestamp4字節

時間戳類型

范圍從1970-01-01 00:00:01.000000 到2038-01-19 03:14:07.499999,自動檢索當前時區并進行轉換

0值為 0000-00-00 00:00:00

java.util.Date, java.sql.Timestamp
date3 字節

日期類型

支持范圍 1000-01-01 到 9999-12-31

顯示格式 yyyy-mm-dd

0值 0000-00-00

time [(fsp)]3 字節

時間類型

支持范圍 -838:59:59.000000 ~ 838:59:59.000000

顯示格式為 hh:mm:ss[.fraction]

0值 00:00:00

year [(4)]1 字節

4位格式的年份

支持范圍 1901~2155

? ? ? ? fsp 為可選設置,用來指定小數秒精度,范圍從 0~6,值為0表示沒有小數部分,如果省略,默認精度為0;

????????對于 timestamp 時間戳,一旦時間超過2038年就會出現溢出的問題,因此現在普遍使用 datetime 類型。

1.5 枚舉和集合

類型說明
enum('value1', 'value2', ...)

枚舉

從值列表 'value1','value2'或 ''(空字符串)和null中選一個值

最多可以有65535個不同的元素

單個元素的最大長度是 M <= 255 或 (M * w) <= 1020,其中M是元素字符長度,w是字符集中字符所需的最大字節數

enum 的值在內部表示為整數

set('value1', 'value2', ...)

集合

從值列表 'value1','value2'...中選零個或多個值

最多64個元素

單個元素的最大長度是 M <= 255 或 (M * w) <= 1020,其中M是元素字符長度,w是字符集中字符所需的最大字節數

set 值在內部表示為整數

二、表操作指令

????????在操作表之前,應該要選擇要操作的目標數據庫,才能對表進行操作。

2.1 查看所有表指令:show tables;

2.2 創建表

 create [temporary] table [if not exists] tbl_name (field datatype [約束] [comment '注解內容'][, field datatype [約束] [comment '注解內容']] ...) [engine 存儲引擎] [character set 字符集] [collate 排序規則];

? temporary:表示創建的是一個臨時表

? field:列名

? datatype:數據類型

? comment:對列的描述或說明

? engine:存儲引擎,不指定則使?默認存儲引擎

? characterset:字符集,不指定則使?默認字符集

? collate:排序規則,不指定則使?默認排序規則

????????注意:定義字段時,最后一個字段是沒有逗號的,且定義字段用一個小括號括起來,最后要以分號結束。

示例:創建一個學生表,表中包含3個字段,id表示學生號,name表示學生姓名,gender表示性別

2.3 查看表結構指令:desc 表名

2.4 刪除表

drop [temporary] table [if exists] tbl_name [,tab_name]...

????????命令行客戶端工具只執行一些簡單的查詢指令,如果一兩句 SQL 可以解決的可以用命令行工具執行。但對于比較復雜的 SQL,比如表涉及、復雜查詢,建議還是使用可視化工具。MySQL 就提供了快捷方式 MySQL Workbench 工具。以下是使用該工具進行建表的示例:

2.5 修改表 alter

alter table tbl_name [alter_option [, alter_option] ...];alter_option: {table_options| add [COLUMN] col_name column_definition [FIRST | AFTER col_name]| modify [COLUMN] col_name column_definition [FIRST | AFTER col_name]| drop [COLUMN] col_name| rename COLUMN old_col_name TO new_col_name| rename [TO | AS] new_tbl_name
}

2.5.1 add 向表中新增一列

alter table 表名 add 列名 數據類型 [comment '注釋' after 指定列名];

2.5.2?modify 修改某列的長度

alter table 表名 modify?列名 數值長度;

2.5.3 rename 重命名某列

alter table 表名?rename column 要修改的原始列名?to 新列名;

2.5.4 drop 刪除某個字段

alter table 表名 drop 列名;

2.5.5 rename to 修改表名

alter table 舊表名 rename to 新表名;? ? /? ? rename table 舊表名 to 新表名;

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

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

相關文章

響應式編程框架Reactor【1】

文章目錄一、Reactor 框架概述與理論基礎1.1 響應式編程&#xff08;Reactive Programming&#xff09;是什么&#xff1f;1.2 Reactive Streams 規范1.3 響應式編程與 Reactor 的誕生1.4 Reactor核心特性1.5 Reactor與其它響應式框架比較二、Reactor核心類型2.1 Reactor 核心概…

【LeetCode】29. 兩數相除(Divide Two Integers)

文章目錄29. 兩數相除&#xff08;Divide Two Integers&#xff09;1. 題目重述與約束解析2. 算法選擇與總體設計3. 核心難點與關鍵技巧4. 解法一&#xff1a;快倍增&#xff08;重復加倍減法&#xff09;4.1 思路4.2 流程圖4.3 正確性要點5. 解法二&#xff1a;位移長除法&…

智能物聯網(AIoT)核心技術落地路徑與企業數字化轉型適配方案

一、行業現狀&#xff1a;AIoT 落地潛力與企業轉型痛點并存根據中國信通院《2023 年中國物聯網發展白皮書》數據&#xff0c;截至 2023 年&#xff0c;我國物聯網設備連接數已突破 300 億&#xff0c;龐大的設備基數為企業數字化轉型奠定了技術基礎。但與之形成鮮明對比的是&am…

前端文件下載的三種方式:URL、二進制與 Base64 的深度解析

前言在 Web 應用開發中&#xff0c;文件下載是一個常見的功能需求。從簡單的圖片保存到復雜的報表導出&#xff0c;前端開發者需要根據后端返回的數據格式選擇合適的處理方式。本文探討三種主流的文件下載方式 —— 基于 URL、二進制數據和 Base64 編碼的實現原理、區別對比及通…

B站 XMCVE Pwn入門課程學習筆記(8)

這個視頻講的比較難&#xff0c;我花了比較長時間來分析&#xff0c;甚至一個點反復很多次&#xff0c;這也是在學PWN的過程中不可避免的&#xff0c;需要堅持和毅力pwn3:沒有system&#xff0c;通過ROP調用write的plt入口&#xff0c;執行write函數&#xff0c;并且將gots里的…

AMGCL介紹和使用

文章目錄一、AMGCL 簡介1.1 什么是 AMG&#xff1f;1.2 AMGCL 特點二、安裝與配置2.1 獲取源碼2.2 編譯依賴&#xff08;可選&#xff09;三、基本使用示例3.1 構造稀疏矩陣&#xff08;以 1D Poisson 為例&#xff09;四、核心組件介紹4.1 后端&#xff08;Backend&#xff09…

AI解決生活小事系列——用AI給我的電腦做一次“深度體檢”

哈嘍&#xff0c;大家好&#xff0c;這里是Ai極客團長&#xff0c;我打算做一個用AI解決生活實際問題的系列專欄。 決定做這個系列的初衷很簡單&#xff1a;現在打開手機、電腦&#xff0c;到處都是 "AI 改變世界" 的宏大敘事&#xff0c;但對普通人來說&#xff0c…

JavaWeb 30 天入門:第二十一天 ——AJAX 異步交互技術

在前二十天的學習中&#xff0c;我們掌握了 JavaWeb 開發的核心技術&#xff0c;包括 Servlet、JSP、會話管理、過濾器、監聽器、文件操作、數據庫交互、連接池、分頁與排序等。今天我們將學習一項徹底改變 Web 應用交互方式的技術 ——AJAX&#xff08;Asynchronous JavaScrip…

從枯燥C++到趣味音樂:我的Windows系統底層探索之旅

一段穿越計算機抽象層次的旅程&#xff0c;從高級語言到底層硬件&#xff0c;探索代碼如何創造美妙旋律第一章&#xff1a;初學C的枯燥與靈感閃現 當我第一次打開《C Primer Plus》這本厚重的教程時&#xff0c;面對那些晦澀的語法規則和抽象概念&#xff0c;確實感到有些枯燥乏…

taro+vue3+vite項目 tailwind 踩坑記,附修復后的模板源碼地址

tailwind 踩坑記 這&#xff0c;是taro官網地址&#xff1a;taro引入tailwind的教程 我完全按照上面的步驟來&#xff0c;結果根本無效&#xff08;文檔太過時了&#xff09; 我后來又按照 weapp-tailwindcss 的官方文檔做了一番修正&#xff1a; weapp-tailwindcss Taro (所…

LCEDA電氣規則

MARK點普通問題 鋪銅太靠近MARK點放置一個禁止區域&#xff0c;圓形編輯封裝

無人機Remote ID:天空中的數字車牌與未來空域管理

一架沒有牌照的汽車上路會被交管部門處罰,那么一架沒有“數字車牌”的無人機升空呢?隨著無人機Remote ID技術的推廣,未來天空中的每架無人機都將擁有自己的身份標識。 近年來,無人機呈爆炸式增長,從航拍攝影到物流配送,從農業植保到應急救援,應用場景不斷拓展。但隨著無…

自下而上的樹形dp

最大獨立集 1.藍橋舞會 link:1.藍橋舞會 - 藍橋云課 分析&#xff1a; code #include <bits/stdc.h> using namespace std; using ll long long; const ll MAXN 1e5 7; ll hpy[MAXN], fa[MAXN], dp[MAXN][2]; vector<ll> sons[MAXN];void dfs(ll u, ll fa) {…

Docker 詳解+示例

介 紹Docker 是一個開源的容器化平臺&#xff0c;它的核心目標是解決 “軟件在不同環境下運行不一致” 的問題&#xff0c;實現 “一次構建&#xff0c;到處運行” 。它基于 Linux 內核的底層技術&#xff0c;將應用程序及其依賴&#xff08;如庫文件、配置、運行環境等&#x…

洛谷 P2568 GCD-提高+/省選?

題目描述 給定正整數 nnn&#xff0c;求 1≤x,y≤n1\le x,y\le n1≤x,y≤n 且 gcd?(x,y)\gcd(x,y)gcd(x,y) 為素數的數對 (x,y)(x,y)(x,y) 有多少對。 輸入格式 只有一行一個整數&#xff0c;代表 nnn。 輸出格式 一行一個整數表示答案。 輸入輸出樣例 #1 輸入 #1 4輸…

軟件測試覆蓋率與質量保障專業經驗分享報告

測試覆蓋率的核心維度與評估標準 多維度定義與核心內涵 測試覆蓋率是衡量軟件測試完整性的關鍵指標體系,分為測試覆蓋率(黑盒視角:需求驗證程度)和代碼覆蓋率(白盒視角:代碼執行占比)兩大基礎類型。現代測試覆蓋體系已擴展至產品覆蓋、風險覆蓋、平臺/設備覆蓋、數據覆…

使用CCProxy搭建http/https代理服務器

下載 https://user.youngzsoft.com/ccproxy/update/ccproxysetup.exe 我們使用免費的即可&#xff0c;3個人。 啟動軟件 設置 更改局域網IP 我的電腦有多個IP&#xff0c;所以要手工指定。

ICCV 2025|TRACE:無需標注,用3D高斯直接學習物理參數,從視頻“預知”未來!

論文鏈接&#xff1a;https://arxiv.org/pdf/2507.01484導讀 準確預測道路智能體的運動對于自動駕駛的安全性至關重要。當前&#xff0c;現有的數據驅動方法直接預測未來軌跡&#xff0c;缺乏對駕駛行為的充分考慮&#xff0c;限制了可解釋性和可靠性。為此&#xff0c;本文引入…

TypeScript:symbol類型

symbol是TypeScript和JavaScript中的一種基本數據類型&#xff0c;表示唯一的、不可變的標識符。作為專業的前端工程師&#xff0c;理解symbol的特性對于構建安全可靠的代碼至關重要。1. symbol的核心特性唯一性&#xff1a;每個symbol值都是唯一的&#xff0c;即使創建時使用相…

【深度學習新浪潮】顯著性檢測最新研究進展(2022-2025)

1. 弱監督與主動學習 ASTE-AL框架(TPAMI 2024):提出對抗性時空集成主動學習方法,通過點標記數據集(每張圖像僅需10個標注點)達到全監督模型98%-99%的性能。其核心模塊包括: FPGD-PA對抗攻擊:通過無額外計算成本的自由梯度下降攻擊定位不確定像素。 時空集成策略:減少模…