
哈嘍,大家好!我是保護小周?,本期為大家?guī)淼氖?MySQL 數(shù)據(jù)庫常用的數(shù)據(jù)類型,數(shù)據(jù)表的基本操作:創(chuàng)建、刪除、修改表,針對修改表的結(jié)構(gòu)進行了講解,隨后是如何向數(shù)據(jù)表中添加數(shù)據(jù),淺淺的提了一下表中數(shù)據(jù)的查詢,更多相關(guān)知識敬請期待:保護小周? *★,°*:.☆( ̄▽ ̄)/$:*.°★*

一、常用的數(shù)據(jù)類型
1.1 數(shù)據(jù)庫表的列類型
數(shù)值 1 2 3.14
tinyint 十分小的數(shù)據(jù) 1個字節(jié)
smallint 較小的數(shù)據(jù) 2個字節(jié)
mediumint 中等大小的數(shù)據(jù) 3個字節(jié)
int 標(biāo)準(zhǔn)的整數(shù) 4個字節(jié)
big 較大的數(shù)據(jù) 8個字節(jié)
float 浮點數(shù) 4個字節(jié)
double 浮點數(shù) 小數(shù) 8個字節(jié)(精度問題)
decimal 字符串形式的浮點數(shù) (金融計算的時候一般使用)
字符串
char 固定大小字符串 0-255 char(5) 00001
varchar 可變字符串 0-65535 varchar(5) 1
tinytext 微型文本 2^8 - 1
text 文本串 2^16 -1 保存大文本
時間日期
date YYYY-MM-DD,日期 (year,month,day)
time HH: MM : SS 時間格式(hour:minutes,seconds)
datetime YYYY-MM-DD HH: MM:SS (年月日,時分秒)最常用的時間格式
timestamp 時間戳, 1970.1.1到現(xiàn)在的毫秒數(shù)!
year 年份
null
沒有值, 未知
注意,不要使用null進行運算,結(jié)果肯定為null
上面看到的這類基本數(shù)值數(shù)據(jù)類型都是有符號的,MySql 也是支持無符號的數(shù)據(jù)類型,unsigned 作為前綴,但是 官方也建議無符號類型不建議使用,特定情況下會產(chǎn)生很嚴重的誤差,例如,a - b, b > a,但是由于沒有符號限制,兩者相減反而會產(chǎn)生一個很大的數(shù),在MySql 后續(xù)的版本中也不會在支持無符號類型了。
在使用浮點型數(shù)據(jù)時,最好選擇decimal ,他的精度比 float 、double 更高,語法: decimal(M,N) M : 整個數(shù)據(jù)的總長度,N:數(shù)據(jù)小數(shù)的位數(shù)。例如: 3.14, M = 3, N = 2; 在表示貨幣的時候我們可以采用 int 類型,這樣就不會有精度的問題,采用”分“為單位。例 :123,表示 1.23 元。
我們在使用時間類型是,不知道該用什么樣的格式插入時間,在插入時間的時候,是通過特定的字符串來表示時間日期的,例如: "2023-02-9 16:12:00", 對于字符串來講 英文單引號或者雙引號都可以。日期年月日之間用 '-' 減號連接,與時間之間隔一個空格,時間之間用 ':' 連接。以這樣的形式輸入的字符串,服務(wù)器就會識別為時間。如果我們想使用當(dāng)前系統(tǒng)時間,SQL 提供了一個返回當(dāng)前系統(tǒng)時間的函數(shù) now(),這個函數(shù)賦值即可。
二、數(shù)據(jù)表的基本操作
書接上篇,我們已經(jīng)學(xué)習(xí)了如何操作數(shù)據(jù)庫,本篇學(xué)習(xí)如何操作數(shù)據(jù)表,在操作數(shù)據(jù)表的時候,需要選中數(shù)據(jù)庫;
2.1 創(chuàng)建和刪除表
聲明:本篇博客講述的是基礎(chǔ)操作,關(guān)于數(shù)據(jù)庫的字段屬性盡請期待下一篇博客。
基礎(chǔ)語法 :
create table table_name (
`字段名` [屬性] [索引] [注釋],
`字段名` [屬性] [索引] [注釋],
...
`字段名` [屬性] [索引] [注釋],
…… ……
);
那么在創(chuàng)建一個表之前呢,也可以判斷一下這個表是否存在,就像創(chuàng)建數(shù)據(jù)庫時的操作一樣。
create table if not exists student (
……
);
可以使用 comment 增加字段說明,只是給 sql語句提供一個注釋作用,在創(chuàng)建的時候。
例如:
create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密碼',
);
例題:
-- 創(chuàng)建學(xué)生表(列,字段) 使用SQL創(chuàng)建
-- 學(xué)號int 姓名 varchar(10),varchar性別sex('男','女'),身高decimal(3,2),加入時間 datetime。
-- 字符串使用 單引號括起來!
-- 所有語句后面加,(英文的),最后一個不用加

目前我們已經(jīng)創(chuàng)建好了一個student 的數(shù)據(jù)表,接下來的操作是查看一下這個表的結(jié)構(gòu)。
desc teble_name;
desc ->describe 的縮寫,描述一個表的結(jié)構(gòu)。

創(chuàng)建了一個表,那自然要學(xué)習(xí)如何刪除一個表,。
刪除表(drop):(如果表存在再刪除)
drop table if exists student;
--當(dāng)然最穩(wěn)妥的操作是 指定數(shù)據(jù)庫之后再選擇表,這樣就可以避免誤操作
drop table if exists school.student;
--這樣刪也是可以的,但是更容易報錯
drop table student;
因為我們是student 數(shù)據(jù)表是創(chuàng)建在 school 數(shù)據(jù)庫里面,然后可以通過 ‘.’這個符號來約束一下,避免誤操作,這也是一種精確表示的方法。
==所有的創(chuàng)建和刪除操作,盡量加上判斷以免報錯==
2.2 修改表的結(jié)構(gòu)(alter)
-- 修改表結(jié)構(gòu)
依據(jù)上表 student 表為例,如果我們在創(chuàng)建好表的結(jié)構(gòu)之后,難免在會有所紕漏,比如說少添加了一個字段,又或者是發(fā)現(xiàn)某個字段不合適需要刪除,還有修改字段屬性等等……
2.2.1-- 添加字段
student 表 新增一個叫做 telephone (手機號)的字段,它的類型是可變字符串。
語法:add 是關(guān)鍵字
alter table 【表名】 add 【新增字段名】【屬性】 ;

2.2.2 -- 修改字段 (注意本條語句不修改字段名)
假如我們發(fā)現(xiàn)表中的telephone (手機號)的字段 屬性的長度給少了,所以我們需要修改一下這個字段。
語法:modify 是關(guān)鍵字
alter table 【表名】 modify 【字段名】【修改后的屬性】 ;

2.2.3 -- 修改字段名
假如我們發(fā)現(xiàn)表中的某個字段的 字段名沒取好名,也是可以修改的,例如將 sex 修改為 gender (性別)
語法: change 是關(guān)鍵字
alter table 【表名】 change 【原字段名】【修改后的字段名】【屬性】 ;

2.2.4 -- 刪除字段
這個就很好理解了,刪除某個字段(列名), 本次刪除 telephone 字段。
語法:
alter table 【表名】 drop 【字段名】;

2.2.5 -- 修改表名
將student 數(shù)據(jù)表 表名修改為 stud。
語法:關(guān)鍵字 rename
alter table 【表名】 rename 【修改后的表名】;

執(zhí)行語句后表名已經(jīng)被修改,以上操作,輕易不要操作,容易造成一系列的連鎖反應(yīng)(蝴蝶效應(yīng),動了一個表,可能需要修改多個表的數(shù)據(jù),關(guān)系型數(shù)據(jù)庫),在創(chuàng)建的時候就將表的結(jié)構(gòu)計劃好,盡可能的減少表結(jié)構(gòu)的修改。
2.3 添加數(shù)據(jù)(insert into )插入
語法:
insert into 表名([字段名1,字段名2,字段名3])values('值1'),('值2)',('值3')...
into 其實可以不用寫,可以根據(jù)個人意愿決定。
2.3.1-- 插入時匹配對應(yīng)的值

這種方式插入數(shù)據(jù),需要指定需要插入的列名(字段),然后根據(jù)列名(在記錄沒有約束的情況下)插入數(shù)據(jù)。
意思就是你可以只插入“李四" 獨占一行。注意觀察插入日期的格式。
2.3.2 -- 不聲明字段新增數(shù)據(jù),必須把所有字段的值都寫上

此處使用now() 函數(shù)來插入日期時間。
2.3.3 -- insert語句后面可以加多個VALUES,可以添加多個數(shù)據(jù)

多行插入只需要寫一個 values 即可,多行插入的性能也是優(yōu)于 單行插入的,因為MySql 本質(zhì)上就是客服端服務(wù)器的程序,客服端發(fā)出指令,服務(wù)器進行相應(yīng)的處理,一行一行的插入意味著反復(fù)發(fā)送指令,這個點不知道大家能否能 get 到呢?
注意事項:
字段和字段之間使用英文逗號隔開
字段是可以省略的,但是后面的值必須要一一對應(yīng)
可以同時插入多條數(shù)據(jù),VALUES后面的值需要使用,隔開即可。
value,是一個具體的值,也可以是一個函數(shù)
2.4 基礎(chǔ)查詢
語法:
SELECT 字段,...FROM 表
以student 表為例。
-- 查詢所有的員工 SELECT 字段 FROM 表
如果我們需要一次性查找所有的字段,其實不用講所有字段全部列舉出來,可以使用 ”*“ 來替代。

可以看出兩者的結(jié)果是一樣的。
-- 查詢指定字段,ID + Name

-- 別名,給查詢結(jié)果起一個名字 AS, 可以給字段取別名,也可以給表取別名
-- as可以加也可以不加

這樣看起來舒服多了吧,哈哈,as 不加也可以運行,但是最好是加上,避免將別名看成字段。
-- 別名可以簡化字段或者表的名稱,更精準(zhǔn)的輸入
-- 給student表起別名為stu

不使用 as 也是可以的,在復(fù)雜的查詢中,使用別名查詢,能提升效率。
好了好了,關(guān)于查詢就淺淺的說一一下啦,關(guān)于查詢還有許多知識,一篇寫不下,下篇博客將著重講解查詢語句。
至此,Mysql 系列的第二篇內(nèi)容博主已經(jīng)分享完了,希望對大家有所幫助,如有不妥之處歡迎批評指正。

本期收錄于博主的專欄——Java & MySQL,適用于編程初學(xué)者,感興趣的朋友們可以訂閱,查看其它“MySQL 數(shù)據(jù)庫以及Java JDBC 編程的相關(guān)知識”。
下一期:MySQL 字段的基本屬性,數(shù)據(jù)表的修改、刪除、然后重點—— 查詢。
感謝每一個觀看本篇文章的朋友,更多精彩敬請期待:保護小周? *★,°*:.☆( ̄▽ ̄)/$:*.°★* 文章來源:http://www.zghlxwxcb.cn/news/detail-781101.html
遇見你,所有的星星都落在我的頭上……文章來源地址http://www.zghlxwxcb.cn/news/detail-781101.html
到了這里,關(guān)于[MySQL]基本數(shù)據(jù)類型及表的基本操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!