MySql超詳細(xì)講解表的用法
1. 建表的語法
建表屬于 DDL 語句,DDL 語句包括:create、drop、alter…
create table 表名(字段1 數(shù)據(jù)類型, 字段2 數(shù)據(jù)類型 ... );
表名:建議以 t_ 或者 tbl_ 開始,可讀性強(qiáng)。見名知意。
字段名:見名知意。
表名和字段名都屬于標(biāo)識符。
2. mysql中的數(shù)據(jù)類型
- varchar
最長 255
可變長度的字符串。
比較智能,節(jié)省空間。
會根據(jù)實(shí)際的數(shù)據(jù)長度分配空間。
- char
最長 255
定長字符串
不管實(shí)際的數(shù)據(jù)長度是多少。
分配固定長度的空間去存儲數(shù)據(jù)。
使用不恰當(dāng)?shù)臅r候,可能會導(dǎo)致空間的浪費(fèi)。
varchar 動態(tài)的分配空間,速度慢
char 固定的分配空間,速度快 具體的選擇根據(jù)實(shí)際情況來選擇 比如:姓名:varchar;性別:char
- int
最長 11
數(shù)字中的整數(shù)型。
等同于 java 中的 int。
- bigint
數(shù)字中的長整型。
等同于 java 中的 long 。
- float
單精度浮點(diǎn)型數(shù)據(jù)。
- double
雙精度浮點(diǎn)型數(shù)據(jù)。
- date
短日期類型。
- datetime
長日期類型。
- clob
字符大對象。
最多可以存儲 4G 的字符串。
比如:存儲一篇文章,存儲一個說明。
超過 255 個字符的都要采用 CLOB 字符大對象來存儲。
- blob
二進(jìn)制大對象。
專門用來存儲圖片、聲音、視頻等流媒體數(shù)據(jù)。
往 BLOB 類型的字段上插入數(shù)據(jù)的時候,例如插入一個圖片、視頻等。
你需要使用 IO 流才行。
3. 模擬表
t_movie
電影表(專門存儲電影信息的)no(bigint)
:編號name(varchar)
:名字history(clob)
:故事情節(jié)playtime(date)
:上映日期time(double)
:時長image(blob)
:海報(bào)type(cahr)
:類型
4. 創(chuàng)建一個學(xué)生表
學(xué)號、姓名、年齡、性別、郵箱地址
1. 創(chuàng)建表(create-DDL)
mysql> create table t_student (no int, name varchar(32), sex char(1), age int(3), email varchar(255));
2. 插入數(shù)據(jù)(insert-DML)
語法格式
insert into 表名(字段名1, 字段名2, 字段名3...) values(值1, 值2, 值3...);
注意:字段名和值要一一對應(yīng)。(數(shù)量要對應(yīng)。數(shù)據(jù)類型要對應(yīng)。)
mysql> insert into t_student(no, name, sex, age, email) values(1, 'zhangsan', 'm', 20, 'zhangsan@123.com');
mysql> insert into t_student(no, name, sex, age, email) values(1, 'lisi', 'm', 20, 'lisi@123.com');
mysql> insert into t_student(no) values(3);
沒有給其他字段指定值的時候,默認(rèn)值是 null
insert 語句中的字段名可以省略,省略的話默認(rèn)是全部寫上了,所以按照一一對應(yīng)原則,values 中的值要全部寫上。
3. 插入日期
format
:數(shù)字格式化
format(數(shù)字, '格式')
str_to_date
:將字符串 varchar 類型轉(zhuǎn)換成 date 類型
str_to_date('字符串日期', '日期格式')
date_format
:將 date 類型轉(zhuǎn)換成具有一定格式的 varchar 類型
mysql> create table t_user(id int, name varchar(32), birth date);
插入數(shù)據(jù)?
mysql> insert into t_user(id, name, birth) values(1, 'zhangsan', str_to_date('01-01-1990', '%d-%m-%Y'));
str_to_date 將字符串類型的日期轉(zhuǎn)換成 date 類型的日期
但是!??!如果提供的字符串日期格式是%Y_%m-%d
的話,就不需要str_to_date
函數(shù)了,mysql會自動轉(zhuǎn)換。
mysql> insert into t_user(id, name, birth) values(2, 'lisi', '1990-10-01');
4. date和datetime的區(qū)別
date
:短日期,只包括 年月日
dateime
:長日期,包括 年月日時分秒
短日期默認(rèn)格式:%Y-%m-%d
長日期默認(rèn)格式:%Y-%m-%d %h:%i:%s
在 mysql 中 now()
函數(shù)可以獲取系統(tǒng)當(dāng)前時間,是長時間格式
5. 更新(update-DML)
語法格式
update 表名 set 字段1=值1, 字段2=值2 ... where 條件;
注意:如果沒有限制條件,會導(dǎo)致所有的數(shù)據(jù)全部進(jìn)行更新
mysql> update t_user set name = 'jack', birth = '2022-9-2' where id = 2;
mysql> select * from t_user;
6. 刪除(delete-DML)
語法格式
delete from 表名 where 條件;
注意:如果沒有條件,整張表的數(shù)據(jù)都會被刪除。
mysql> delete from t_user where id = 2;
mysql> delete from t_user;
5. 快速創(chuàng)建表(復(fù)制表)
原理:
將一個查詢結(jié)果當(dāng)做一張表新建!??! 這個可以完成表的快速復(fù)制?。?! 表創(chuàng)建出來,同時表中的數(shù)據(jù)也存在了!??!
mysql> create table emp2 as select * from emp;
6. 快速刪除表中數(shù)據(jù)
delete 語句(DML)刪除數(shù)據(jù)的原理?
- 表中的數(shù)據(jù)被刪除了,但是這個數(shù)據(jù)在硬盤上的真實(shí)存儲空間不會被釋放?。?!
- 這種刪除的缺點(diǎn)是:刪除效率比較低。
- 這種刪除的優(yōu)點(diǎn)是:支持回滾,后悔了可以再恢復(fù)數(shù)據(jù)?。。?/li>
truncate 語句(DDL)刪除數(shù)據(jù)的原理?
- 這種刪除屬于物理刪除。
- 這種刪除的缺點(diǎn)是:不支持回滾。
- 這種刪除的優(yōu)點(diǎn)是:效率較低。
truncate table 表名;
到此這篇關(guān)于MySql超詳細(xì)講解表的用法的文章就介紹到這了,更多相關(guān)MySql表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何使用mysql語句進(jìn)行多表聯(lián)查(以三個表為例)
這篇文章主要介紹了如何使用mysql語句進(jìn)行多表聯(lián)查(以三個表為例),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08Workbench通過遠(yuǎn)程訪問mysql數(shù)據(jù)庫的方法詳解
這篇文章主要給大家介紹了Workbench通過遠(yuǎn)程訪問mysql數(shù)據(jù)庫的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06解決mysql數(shù)據(jù)庫導(dǎo)入sql文件不成功的問題
這篇文章主要介紹了解決mysql數(shù)據(jù)庫導(dǎo)入sql文件不成功的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11