一、了解表
1.1.概述
表是處理數據和建立關系型數據庫及應用程序的基本單元,是構成數據庫的基本元素之一,是數據庫中數據組織并儲存的單元,所有的數據都能以表格的形式組織,目的是可讀性強。
1.2.表結構簡述
一個表中包括行和列:
-
行:被稱為數據/記錄(data)
-
列:被稱為字段(column)
簡而言之,所謂表其表現形式和我們平時所使用的Excel表格是一樣的
Excel表:
MySQL表:
1.3.連接、庫、表
數據庫中我們操作最多的就是數據庫表,但是在操作表之前我們需要了解一些前置信息,這些有助于我們更好的了解數據庫!
1.3.1.連接
Navicat是一套快速、可靠并價格相當便宜的數據庫管理工具,專為簡化數據庫的管理及降低系統管理成本而設。Navicat 是以直覺化的圖形用戶界面而建的,讓你可以以安全并且簡單的方式創建、組織、訪問并共用信息。簡而言之就是我們可以通過navicat將數據庫表的信息以excel表格的形式來展示在我們面前!
1.3.2.庫
數據庫是存放數據的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是數據庫并不是隨意地將數據進行存放,是有一定的規則的,否則查詢的效率會很低。當今世界是一個充滿著數據的互聯網世界,充斥著大量的數據。即這個互聯網世界就是數據世界。數據的來源有很多,比如出行記錄、消費記錄、瀏覽的網頁、發送的消息等等。除了文本類型的數據,圖像、音樂、聲音都是數據。
1.3.3.表
表是數據庫中用來存儲數據的對象,是有結構的數據的集合,是整個數據庫系統的基礎。是SQL數據庫中用于存儲數據的工具。
表是包含數據庫中所有數據的數據庫對象。
表定義為列的集合。與電子表格相似,數據在表中式按行和列的格式組織排列的。表中的每一列都設計為存儲某種類型的信息(例如日期、名稱、美元金額或數字)。表上有幾種控制(約束、規則、默認值和自定義用戶數據類型)用于確保數據的有效性。如圖所示:
二、DDL-數據表的定義
DDL(data definition language):對數據表的定義,通過sql語句創建數據表,并對其進行操作
2.1.創建數據表
數據表實際就是一個二維的表格,由多列組成,表格中的每一列稱之為表格的一個字段
create table students(stu_num char(8) not null unique,stu_name varchar(20) not null,stu_gender char(2) not null,stu_age int not null,stu_tel char(11) not null unique,stu_qq varchar(11) not null unique
);
在dos命令窗口運行結束顯示:
在navicat中運行后的效果如圖所示:
2.2.數據表的操作
通過sql語句,來對數據表進行操作,使其達到我們想要的效果
2.2.1.查詢數據表
-- 查詢數據表的sql語句
show tables;
dos命令窗口查詢結果如下:
2.2.2.查詢表結構
-- 查詢表結構的sql語句
desc <表名>;
dos命令窗口查詢結果如下:
2.2.3.刪除數據表
-- 用于刪除數據表的sql語句
drop table <表名>;
-- 判斷該表是否存在,存在就執行刪除操作
drop table if exists <表名>;
其執行結果為:
2.2.4.修改數據表
-- 修改數據表名
alter table <原表名> rename to <新表名>;
-- 修改數據表的字符集,其默認字符集和數據庫一致
alter table <表名> character set utf8;
-- 添加字段(列)
alter table <表名> add <字段名> varchar(200);
-- 修改字段的列名和類型
alter table <表名> change <原字段名> <新字段名> <新字段類型>;
-- 只修改字段類型
alter table <表名> modify <字段名> <新類型>;
-- 刪除字段
alter table <表名> drop <字段名>;
上述sql語句成功運行之后的結果均為:
2.3.數據類型
數據類型,指的是數據表中的列所支持存放的數據的類型
在mysql中有多種數據類型可以存放數據,不同的類型存放的數據的范圍或者形式是不同的
2.3.1.數值類型
所謂數值類型其實就是我們所學的數學當中的數字,包括整數、小數
類型 | 內存空間大小 | 范圍 | 說明 |
---|---|---|---|
tinyint | 1byte | 有符號 -128~127 無符號 0~255 | 特小型整數(年齡) |
smalint | 2byte(16bit) | 有符號 -32768~32767 無符號 0~65535 | 小型整數 |
mediumint | 3byte | 有符號 -2^31~2^31-1 無符號 0~2^32-1 | 中型整數 |
int/integer | 4byte | 整數 | |
bigint | 8byte | 大型整數 | |
float | 4byte | 單精度 | |
double | 8byte | 雙精度 | |
decimal | 第一參數+2 | decimal(10,2) 表示數值一共有10位 小數位有兩位 |
2.3.2.字符串類型
存儲字符序列的類型,簡單來說就是非數字類型(包括漢字、英文等)
類型 | 字符長度 | 說明 |
---|---|---|
char | 0~255字節 | 定長字符串最多可以存儲255個字符;當我們指定數據表字段為char(n)時,此列中的數據最長為n個字符,如果添加的數據少于n,則補'\u0000'至n長度 |
varchar | 0~65536字節 | 可變長度字符串,此類型的類最大長度為65535 |
tinyblob | 0~255字節 | 存儲二進制字符串 |
blob | 0~65535字節 | 存儲二進制字符串 |
mediumblob | 0~1677215字節 | 存儲二進制字符串 |
longblob | 0~4294967295字節 | 存儲二進制字符串 |
tinytext | 0~255字節 | 文本數據(字符串) |
text | 0~65535字節 | 文本數據(字符串) |
mediumtext | 0~1677215字節 | 文本數據(字符串) |
longtext | 0~4294967295字節 | 文本數據(字符串) |
2.3.3.日期類型
在mysql數據庫中,我們可以使用字符串來存儲時間,但是我們需要基于字段進行查詢操作(查詢在某個時間段內的數據)就不便于查詢實現,簡而言之就是當我們需要對時間進行計算的時候無法通過字符串來進行計算,就和我們無法計算 “你好”-“哈哈”=?一樣
類型 | 格式 | 說明 |
---|---|---|
date | 2022-10-15 | 日期,只存儲年月日 |
time | 11:12:13 | 時間,只存儲時分秒 |
year | 2022 | 年份 |
datetime | 2022-10-15 11:12:13 | 日期+時間,存儲年月日時分秒 |
timestamp | 20221015 111213 | 日期+時間(時間戳) |
ps:在mysql中有豐富的數據類型供我們選擇使用,但是常用的數據類型其實并不是很多(都加粗了哦!)
2.4.字段約束
在創建數據表的時候,指定的對數據表的列的數據限制性的要求(對表的列中的數據進行限制),簡單來說就是對數據表中字段的要求
為什么要給表中的列添加約束呢
-
保證數據的有效性
-
保證數據的完整性
-
保證數據的正確性
字段常見的約束有哪些呢
-
非空約束(not null)∶限制此列的值必須提供,不能為null
-
唯一約束(unique)∶在表中的多條數據,此列的值不能重復
-
主鍵約束(primary key)∶非空+唯一,能夠唯一標識數據表中的一條數據
-
外鍵約束(foreign key)∶建立不同表之間的關聯關系
其在navicat中的表現形式為: