mysql學習之基礎篇03

来源:https://www.cnblogs.com/wanghaoyu666/archive/2019/07/29/11263241.html
-Advertisement-
Play Games

我們今天來進行建表的基本操作: 首先要建表就要瞭解列類型,因為建表就是聲明列的過程,列聲明完成了,表也就建好了。 mysql中列分為三大類: 一、數值型 數值型又分為整型和浮點型兩種。 先來看整型: tinyint:占據空間:1個位元組;存儲範圍:帶符號數:-2^7(-128)~2^7-1(127), ...


我們今天來進行建表的基本操作:

首先要建表就要瞭解列類型,因為建表就是聲明列的過程,列聲明完成了,表也就建好了。

mysql中列分為三大類:

一、數值型

數值型又分為整型和浮點型兩種。

先來看整型:

tinyint:占據空間:1個位元組;存儲範圍:帶符號數:-2^7(-128)~2^7-1(127),無符號數:0~255

smallint:占據空間:2個位元組;存儲範圍:帶符號數:-2^15(-32768)~2^15-1(32767),無符號數:0~65535

mediumint:占據空間:3個位元組;存儲範圍:帶符號數:-2^23(-8388608)~2^23-1(8388607),無符號數:0~16777215

int:占據空間:4個位元組;存儲範圍:帶符號數:-2^31(-2147483648)~2^31-1(2147483647),無符號數:0~4294967295

bigint:占據空間8個位元組;存儲範圍:帶符號數:-2^63(-9,223,372,036,854,775,808)~2^63-1(9,223,372,036,854,775,807),無符號數:0~18446744073709551615

int 系列聲明時的參數:

unsigned:無符號,在MySQL中聲明int類參數為無符號數,如果不聲明unsigned,則預設為帶符號數。

(M)zerofill M只有和zerofill配合在一起使用才有效果,即指定數據的長度,不夠的話用0填充

例如 我們聲明一個 id int(5)zerofill 一個id2 int(5):

我們給裡面插入同樣的數據:

我們可以看到,同樣是500,id就在前面補兩個0,因為我們指定了它的數據長度是5。

那如果我們插入的數據長度超過了5怎麼辦?

我們可以看到如果我們插入的數據長度超過了我們設定的M值,那麼就按實際長度來插入。

然後我們來看浮點型:

M叫做精度,代表這個小數的總位數,D叫做標度,代表小數點後面的位數。

float(M,D)單精度浮點型,占據空間:4個位元組。

double float(M,D) 雙精度浮點型,占據空間:8個位元組。

浮點型在存儲的時候存的是近似值,還有一種小數類型是定點型,它是把整數部分和小數部分分開存儲的 。

定點型:

decimal(M,D)

我們來看具體的區別:我們聲明一個num float(9,2)和一個num2 decimal(9,2):

然後給num插入1234567.23,給num2插入1234567.25,然後我們來看一下結果:

我們發現,num欄下麵的數字變成了1234567.25。原因就是上面說的float類型存儲時是存的近似值。

所以如果涉及到金融,賬戶等等對數字變化比較敏感的時候需要存小數我們就用decimal。

二、字元串型

Char(M) 是定長類型 例如Char(6)只能存儲6個字元,內容不夠6個字元的在尾部用空格補齊,取出時再把右側所有的空格刪除。

Varchar(M) 是變長類型 例如varchar(20),可存儲0~20個字元長度,但是列內容前有1~2個位元組來標誌該列內容長度。

我們聲明兩個變數,分別是name name2,一個用char,一個用varchar

 

插入數據,張三後面有個空格,李四後面也有個空格

直接查看的話看不出來大的差別,我們把它和另一個字元連接起來:

我們可以看到張三後面的空格被刪除了。

Text 文本類型,一般用來儲存文章內容,新聞內容等。聲明text列類型時不用給預設值。

Blob 二進位類型,一般用來存儲圖像音頻等二進位信息。Blob在於防止字元集的問題導致信息丟失。比如:一張圖片中有0xff位元組,這個在ASCII字元集中認為非法,在入庫的時候被過濾。使用blob就可以防止信息丟失。

三、日期時間型

Date 日期 存儲年--日 存儲範圍是1000-01-01~9999-12-31

Time 時間 存儲時:分:秒 存儲範圍是-8385959~8385959

Datetime 日期時間類型年--日 時:分:秒 範圍是1000-01-01 000000~9999-12-31 235959

Year 年類型 YYYYYY(不推薦)範圍是1901~2155 還能存一個特殊的0000

 

建表的語法不重要,重要的是要學會合理的選擇列類型併為其聲明參數。

 建表的語法:

Create table 表名 (

1 列類型 列參數,

2 列類型 列參數,

......

n 列類型 列參數

engine myisam charset utf8;

 最後一句是聲明引擎和字元集的,那個我們會在後面講到。

如果一張表建好了,我們需要增加列怎麼辦?

alter table 表名 add 列名 列類型 列參數

我們就給上面的test2表增加一列:

由於之前沒有salary列,因此增加後原來的行在salary列的值為空。

這是預設增加在最後一列的,我們想在birth後面增加一列怎麼辦?

alter table 表名 add 列名 列類型 列參數 after birth;

我們想在把列增加最前面,該怎麼辦?

alter table 表名 add 列名 列類型 列參數 first;

刪除列:

alter table 表名 drop 列名;

修改列類型:

alter table 表名 modify 列名 新列類型 列參數;

 

 我們看到這張表的結構:star是varchar(20)。

我們給它改成varchar(30):

 

修改列名:

 alter table 表名 change 舊列名 新列名 列類型 列參數;

 


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

-Advertisement-
Play Games
更多相關文章
  • Elasticsearch中如何進行數值範圍查詢? 日期範圍查詢又是怎麼實現的?關於日期的數學表達式、四捨五入規則都是什麼? 還有怎樣根據不同的時區查詢?本篇文章告訴你答案O(∩_∩)O~ ...
  • 用戶管理: 1、新建用戶: CREATE USER name IDENTIFIED BY 'zhangsan' 2、更改密碼: SET PASSWORD FOR name=PASSWORD('zhangsan123') 3、許可權管理: //查看name用戶許可權 SHOW GRANTS FOR nam ...
  • 一、資料庫對象: 模式對象: 資料庫對象是邏輯結構的集合,最基本的資料庫對象是表; 其他對象包括:create增、drop刪、改alter 同義詞、序列、視圖、索引 1、同義詞: ①、 現有對象的一個別名: 簡化SQL語句,隱藏對象的名稱和所有者,提供對對象的公共訪問; ②、類型: 私有同義詞: 只 ...
  • 一、操作符: 1、分類: 算術、比較、邏輯、集合、連接; 2、算術操作符: 執行數值計算; 3、比較操作符: (不等於是!= , 在mysql中是<> ) 4、邏輯操作符:and or not 5、集合操作符: 將兩個查詢的結果組合成一個結果: ①、intersect 返回兩個查詢的公共行; ②、u ...
  • 1.項目背景 因監控需要,我們需要在既有的每個MySQL實例上創建一個賬號。公司有數百台 MySQL 實例,如果手動登入來創建賬號很麻煩,也不現實。所以,我們寫了一個簡單的shell腳本,用來創建批量伺服器的mysql 賬號。 2.執行腳本內容; 3. 執行舉例 Step 1 將代碼放置到執行文件中 ...
  • 一、Spark提交應用任務的四個階段: 總共提交的任務分為四個階段,提交+執行: 1、在分配完畢executor以後,解析代碼生成DAG有向無環圖; 2、將生成的DAG圖提交給DAGScheduler,這個組件在driver內,DAGScheduler負責切分階段,按照DAG圖中的shuffle運算元 ...
  • 一、單表簡單查詢: 1、 2、去重: 3、別名: 4、排序: 5、模糊查詢: 二、多表連接查詢: 1、交叉連接:若查詢共有欄位,需要制定該欄位來自哪個表格; 自然連接 2、外連接: 三、分組聚合: 1、group by: 2、 where 放在group 之前,分組之後條件用having; 四、子查 ...
  • 業務實體,客戶名稱,訂單類型,價目表,業務員,付款條件,客戶採購定訂單,發貨組織,訂購項目,訂購數量,單位,單價,稅分類代碼 上面這個是導入的列 PROCEDURE IMPORT_SALE_ORDER AS CURSOR SALES_LINES_CURSOR IS SELECT ID, TRIM(C ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...