MySQL之senior(七)——資料庫DDL與DML
阿新 • • 發佈:2021-10-22
DDL (針對表結構)create drop alter
-
create table 表名( 欄位名1 資料型別, 欄位名2 資料型別, 欄位名3 資料型別 ); drop table (if exists) 表名; alter(少用) 第一:在實際的開發中,需求一旦確定之後,表一旦設計好之後,很少的進行表結構的修改。因為開發進行中的時候,修改表結構,成本比較高。修改表的結構,對應的java程式碼就需要進行大量的修改。成本是比較高的。這個責任應該由設計人員來承擔! 第二:由於修改表結構的操作很少,所以我們不需要掌握,如果有一天真的要修改表結構,可以使用工具! 修改表結構的操作是不需要寫到java程式中的。實際上也不是java程式設計師的範疇。
-
mysql資料型別
varchar(最長255) 比較智慧,節省空間。 會根據實際的資料長度動態分配空間。 優點:節省空間 缺點:需要動態分配空間,速度慢。 char(最長255) 定長字串 不管實際的資料長度是多少。 分配固定長度的空間去儲存資料。 使用不恰當的時候,可能會導致空間的浪費。 優點:不需要動態分配空間,速度快。 缺點:使用不當可能會導致空間的浪費。 varchar和char我們應該怎麼選擇? 性別欄位你選什麼?因為性別是固定長度的字串,所以選擇char。 姓名欄位你選什麼?每一個人的名字長度不同,所以選擇varchar。 int(最長11) 數字中的整數型。等同於java的int。 bigint 數字中的長整型。等同於java中的long。 float 單精度浮點型資料 double 雙精度浮點型資料 date 短日期型別 datetime 長日期型別 clob 字元大物件 最多可以儲存4G的字串。 比如:儲存一篇文章,儲存一個說明。 超過255個字元的都要採用CLOB字元大物件來儲存。 Character Large OBject:CLOB blob 二進位制大物件 Binary Large OBject 專門用來儲存圖片、聲音、視訊等流媒體資料。 往BLOB型別的欄位上插入資料的時候,例如插入一個圖片、視訊等, 你需要使用IO流才行。
DML(針對表資料) insert,delete,update
-
三個函式
# format(欄位名, '格式') 格式化數字 select ename,format(sal, '$999,999') as sal from emp; # str_to_date:將字串varchar型別轉換成date型別 (通常使用在插入insert方面) #語法格式:str_to_date('字串日期', '日期格式') # mysql的日期格式: # %Y 年 # %m 月 # %d 日 # %h 時 # %i 分 # %s 秒 錯誤:insert into t_user(id,name,birth) values(1, 'zhangsan', '01-10-1990'); #birth為date型 正確:insert into t_user(id,name,birth) values(1, 'zhangsan', str_to_date('01-10-1990','%d-%m-%Y')); # date_format:將date型別轉換成具有一定格式的varchar字串型別。(這個函式通常使用在查詢日期方面) # date_format(日期型別資料, '日期格式') select id,name,date_format(birth, '%m/%d/%Y') as birth from t_user; #如果提供的日期字串是 %Y-%m-%d 格式,str_to_date與date_format 函式就不需要了,自動轉換
-
insert,update,delete
insert 語法格式: 一條: insert into 表名(欄位名1,欄位名2,欄位名3...) values(值1,值2,值3); 多條: insert into t_user(欄位名1,欄位名2) values(),(),(),(); update 語法格式: update 表名 set 欄位名1=值1,欄位名2=值2,欄位名3=值3... where 條件; //沒有條件限制會導致所有資料全部更新 delete 語法格式: delete from 表名 where 條件; //沒有條件,整張表的資料會全部刪除!
其他
date和datetime兩個型別的區別?
date是短日期:只包括年月日資訊。
datetime是長日期:包括年月日時分秒資訊。
在mysql當中怎麼獲取系統當前時間?
now() 函式,並且獲取的時間帶有:時分秒資訊,是datetime型別的。
對錶的快速操作
# 快速建立表(瞭解)
create table emp2 as select * from emp; # as可省略
# 原理:
# 將一個查詢結果當做一張表新建;這個可以完成表的快速複製;表創建出來,表中的資料也存在。
# 將查詢結果插入到一張表當中(瞭解)
insert into dept_bak select * from dept; # 查詢結果與待插入表列屬性需要匹配
# 快速刪除表中的資料(掌握)
truncate table dept_bak;
# delete語句刪除資料的原理?(delete屬於DML語句)
# 表中的資料被刪除了,但是這個資料在硬碟上的真實儲存空間不會被釋放
# 這種刪除缺點是:刪除效率比較低。
# 這種刪除優點是:支援回滾,後悔了可以再恢復資料
# truncate語句刪除資料的原理?
# 這種刪除效率比較高,表被一次截斷,物理刪除。
# 這種刪除缺點:不支援回滾。
# 這種刪除優點:快速。