5 《MySQL必知必會》插入,更新,刪除與建立

2021-07-31 01:15:55 字數 4690 閱讀 8625

注:部落格中總結《mysql必知必會》中的知識點,第19,20,21章的核心內容;

涉及到的操作符:insert into,update, delete,create;

書中用到的表的介紹及其指令碼檔案:《mysql必知必會》中表的介紹

1.插入完整的行

也可以省略某些列行,但是需要滿足這些列定義為允許null值,或者表定義給出預設值;

-- 這種語法簡單,但是不安全,因為高度依賴表中列的定義次序;

insert

into customers

values(null,

'pep e. lapew',

'100 main street',

'los angeles',

'ca',

'90046',

'usa',

null,

null)

-- 下面更安全,但是相對繁瑣;

insert

into customers(cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country,

cust_contact,

cust_email)

values('pep e. lapew',

'100 main street',

'los angeles',

'ca',

'90046',

'usa',

null,

null)

2.插入多個列
insert

into customer

( cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country

)values

( 'pep e. lapew',

'100 main street',

'los angeles',

'ca',

'90046',

'usa'),(

'm. martian',

'42 galaxy way',

'new york',

'ny',

'11213',

'usa'

)

3.插入檢索出的資料
insert

into customer

( cust_id,

cust_contact,

cust_email,

cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country

)select cust_id,

cust_contact,

cust_email,

cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country

from custnew;

1.更新資料

update和delete的使用要盡可能的小心,要遵循一些知道原則;

-- 不要省略where,否則會改整列;

update customers

set cust_email = '[email protected]'

where cust_id = 10005;

2.刪除資料
-- 不要省略where,否則會改整列;

delete

from customers

where cust_id = 10006;

3.刪除表中所有行
-- delete是刪除表中的行,甚至是表中所有行,而不是刪除表本身;

delete

from customers;

-- truncate

table 刪除所有行,實際上刪除原來的表並重新建立乙個表,速度更快;

truncate

table customers;

1.表建立基礎
create

table customers

( cust_id int

notnull auto_increment,

cust_name char(50) not

null ,

cust_address char(50) null ,

cust_city char(50) null ,

cust_state char(5) null ,

cust_zip char(10) null ,

cust_country char(50) null ,

cust_contact char(50) null ,

cust_email char(255) null ,

primary

key (cust_id)

) engine=innodb;

2.使用null值
-- 允許null值的列允許在插入行時不給出該列的值;

-- 不允許null值的列不接受該列沒有值的行。

create

table vendors

( vend_id int

notnull auto_increment,

vend_name char(50) not

null , -- 不允許null

vend_address char(50) null , -- 允許null

vend_city char(50) null ,

vend_state char(5) null ,

vend_zip char(10) null ,

vend_country char(50) null ,

primary

key (vend_id)

) engine=innodb;

3.主鍵在介紹
-- 主鍵值必須唯一,主鍵可以是單列,也可以是多個列;

-- 在定義表時通過 primary key () 指定列;

例如:create

table orderitems

( order_num int

notnull ,

order_item int

notnull ,

prod_id char(10) not

null ,

quantity int

notnull ,

item_price decimal(8,2) not

null ,

primary

key (order_num, order_item)

) engine=innodb;

4.使用auto_increment
cust_id       int     not

null auto_increment,

-- auto_increment告訴mysql,本列每當增加一行時自動增量。

-- 並且每行分配唯一的cust_id,從而可以作為主鍵;

5.指定預設值

使用default指定;

create

table orderitems

( order_num int

notnull ,

order_item int

notnull ,

prod_id char(10) not

null ,

quantity int

notnull

default

1, item_price decimal(8,2) not

null ,

primary

key (order_num, order_item)

) engine=innodb;

-- mysql不允許使用函式作為預設值,它支援常量;

6.更新表
-- 新增新的列

alter

table vendors

add vend_phone char(20);

-- 刪除剛剛新增的列

alter

table vendors

drop

column vend_phone;

7.刪除表
-- 刪除整個表,而不是刪除其中的行;

drop

table customers2

8.重新命名表
rename table customers2 to customers;

-- 對多個表重新命名

rename table back_customers to customers,

back_vendors to vendors,

back_products to products;

mysql必知必會 5

like 操作符 1.百分號 任何字元出現任意次數 以jet開頭的 select 列名1 from 表名 where 列名 like jet 可以對兩端進行搜尋 long 也可以是中間位置s e 2.下劃線單個字元 select 列名1 from 表名 where 列名 like jet 模糊查詢會...

mysql必知必會 mysql必知必會(四)

十四 理解子查詢 1 通過子查詢過濾 這本書在所有的章節都關連到了資料庫表,訂單資料是儲存在兩個表中,orders表儲存著 訂單號碼 顧客id和訂單日期。個人的訂單列表關連著orderitems表,訂單表沒有儲存顧客資訊,它只是儲存著顧客id,這實際的顧客資訊是儲存在customers表中。現在假設...

mysql的必知必會 mysql 必知必會 筆記

好久沒有寫了。1 show columns from table 等同於describe table顯示的是表的結構。而select from table 則顯示的是整個表中插入的資料。2 select distinct c1,c2 from table除非列不相同,否則所有行將被檢索出來,即不能對...