首頁 > 軟體

MySql超詳細講解表的用法

2022-09-16 22:04:09

1. 建表的語法

建表屬於 DDL 語句,DDL 語句包括:create、drop、alter…

create table 表名(欄位1 資料型別, 欄位2 資料型別 ... );

表名:建議以 t_ 或者 tbl_ 開始,可讀性強。見名知意。

欄位名:見名知意。

表名和欄位名都屬於識別符號。

2. mysql中的資料型別

  • varchar

最長 255

可變長度的字串。

比較智慧,節省空間。

會根據實際的資料長度分配空間。

  • char

最長 255

定長字串

不管實際的資料長度是多少。

分配固定長度的空間去儲存資料。

使用不恰當的時候,可能會導致空間的浪費。

varchar 動態的分配空間,速度慢

char 固定的分配空間,速度快 具體的選擇根據實際情況來選擇 比如:姓名:varchar;性別:char

  • int

最長 11

數位中的整數型。

等同於 java 中的 int。

  • bigint

數位中的長整型。

等同於 java 中的 long 。

  • float

單精度浮點型資料。

  • double

雙精度浮點型資料。

  • date

短日期型別。

  • datetime

長日期型別。

  • clob

字元大物件。

最多可以儲存 4G 的字串。

比如:儲存一篇文章,儲存一個說明。

超過 255 個字元的都要採用 CLOB 字元大物件來儲存。

  • blob

二進位制大物件。

專門用來儲存圖片、聲音、視訊等串流媒體資料。

往 BLOB 型別的欄位上插入資料的時候,例如插入一個圖片、視訊等。

你需要使用 IO 流才行。

3. 模擬表

  • t_movie 電影表(專門儲存電影資訊的)
  • no(bigint):編號
  • name(varchar):名字
  • history(clob):故事情節
  • playtime(date):上映日期
  • time(double):時長
  • image(blob):海報
  • type(cahr):型別

4. 建立一個學生表

學號、姓名、年齡、性別、郵箱地址

1. 建立表(create-DDL)

mysql> create table t_student (no int, name varchar(32), sex char(1), age int(3), email varchar(255));

2. 插入資料(insert-DML)

語法格式

insert into 表名(欄位名1, 欄位名2, 欄位名3...) values(值1, 值2, 值3...);

注意:欄位名和值要一一對應。(數量要對應。資料型別要對應。)

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);

沒有給其他欄位指定值的時候,預設值是 null

insert 語句中的欄位名可以省略,省略的話預設是全部寫上了,所以按照一一對應原則,values 中的值要全部寫上。

3. 插入日期

format:數位格式化

format(數位, '格式')

str_to_date:將字串 varchar 型別轉換成 date 型別

str_to_date('字串日期', '日期格式')

date_format:將 date 型別轉換成具有一定格式的 varchar 型別

mysql> create table t_user(id int, name varchar(32), birth date);

插入資料?

mysql> insert into t_user(id, name, birth) values(1, 'zhangsan', str_to_date('01-01-1990', '%d-%m-%Y'));

str_to_date 將字串型別的日期轉換成 date 型別的日期

但是!!!如果提供的字串日期格式是%Y_%m-%d的話,就不需要str_to_date函數了,mysql會自動轉換。

mysql> insert into t_user(id, name, birth) values(2, 'lisi', '1990-10-01');

4. date和datetime的區別

date:短日期,只包括 年月日

dateime:長日期,包括 年月日時分秒

短日期預設格式:%Y-%m-%d

長日期預設格式:%Y-%m-%d %h:%i:%s

在 mysql 中 now() 函數可以獲取系統當前時間,是長時間格式

5. 更新(update-DML)

語法格式

update 表名 set 欄位1=值1, 欄位2=值2 ... where 條件;

注意:如果沒有限制條件,會導致所有的資料全部進行更新

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 條件;

注意:如果沒有條件,整張表的資料都會被刪除。

mysql> delete from t_user where id = 2;

mysql> delete from t_user;

5. 快速建立表(複製表)

原理:

將一個查詢結果當做一張表新建!!! 這個可以完成表的快速複製!!! 表建立出來,同時表中的資料也存在了!!!

mysql> create table emp2 as select * from emp;

6. 快速刪除表中資料

delete 語句(DML)刪除資料的原理?

  1. 表中的資料被刪除了,但是這個資料在硬碟上的真實儲存空間不會被釋放!!!
  2. 這種刪除的缺點是:刪除效率比較低。
  3. 這種刪除的優點是:支援回滾,後悔了可以再恢復資料!!!

truncate 語句(DDL)刪除資料的原理?

  • 這種刪除屬於物理刪除。
  • 這種刪除的缺點是:不支援回滾。
  • 這種刪除的優點是:效率較低。

truncate table 表名;

到此這篇關於MySql超詳細講解表的用法的文章就介紹到這了,更多相關MySql表內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com