MySQL基礎知識總結2/3(DML)

目錄

插入語句

方式一

方式二

兩種插入方式的比較 

修改語句

修改單表的記錄

修改多表的記錄【瞭解】

刪除語句

方式一:delete

1、單表的刪除【牢記】

2、多表的刪除【補充】

方式二 :truncate

delete與truncate的比較【重要】

案例練習 


DML語言(Data Manipulation Language

數據操作語言:

插入:insert

修改:update

刪除:delete

插入語句

方式一

語法:

insert  into  表名(列名...) values (值1,.....);

#1、插入的值的類型要與列的類型一致或兼容

INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `photo`, `boyfriend_id`) 
VALUES(13, '唐嫣', '女', '1990-09-21', '15137745620',NULL, 2)

 

#2、不可以爲null的列,必須插入值,可以爲null的列如何插入值?兩種方式

方式一:插入的值直接爲空

INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `photo`, `boyfriend_id`) 
VALUES(13, '唐嫣', '女', '1990-09-21', '15137745620',NULL, 2)

方式二:可以爲空的那一列忽略 

INSERT INTO `beauty` (`id`, `name`, `sex`, `borndate`, `phone`, `boyfriend_id`) 
VALUES(14, '甄姬', '女', '1990-09-21', '15137745620', 2)

 

#3、列的順序是否可以顛倒 ?  可以

INSERT INTO `beauty` (`phone`, `borndate`, `name`, `id`, `sex`, `boyfriend_id`) 
VALUES('15912347510', '1990-09-21', '妲己', 15, '女', 1)

 

#4、列數和值的個數必須一致 

 

#5、可以省略列名、默認所有列,而且列的順序和表的順序一致

INSERT INTO `beauty`
VALUES(16, '孫尚香', '女', '1997-09-11', '15942647024', NULL, 2)

方式二

 語法:

insert  into  表名  set  列名=值, 列名=值,....

insert into `beauty`
set id=17, name='虞姬', sex='女', borndate='1998-06-15', phone='14562384

兩種插入方式的比較 

1、方式一支持插入多行

INSERT INTO `beauty`
VALUES(18, '阿珂', '女', '1998-09-11', '15942000704', NULL, 2)
,(19, '瑤', '女', '1999-09-11', '15942678024', NULL, 3)
,(20, '娜可露露', '女', '1910-09-11', '15942457024', NULL, 4)

2、方式一支持子查詢(去掉values),方式二不支持

INSERT INTO `beauty`(id, `name`, phone)
SELECT 21, '小喬', '15144547120'

修改語句

修改單表的記錄

語法:

update  表名

set  列=新值, 列=新值,...

where  篩選條件 

案例1:修改beauty表中姓唐的人的電話號爲15137742650(單個信息的修改)

UPDATE 
  `beauty` 
SET
  `phone` = '15137742650' 
WHERE NAME LIKE '唐%' 

 案例2:修改boys表中id號爲2的名稱爲張飛,魅力值爲10

UPDATE 
  `boys` 
SET
  boyName = '久森',
  userCP = 900 
WHERE id = 2 

 

修改多表的記錄【瞭解】

語法:

sql92語法

update  表1  別名, 表2, 別名

set  列=值,...

where  連接條件

and  篩選條件

 

sql99語法:

update  表1  別名

inner | left | right  join  表2  別名

on  連接條件

set   列=值, ...

where  篩選條件 

 

案例1:修改張無忌的女朋友的手機號爲114

UPDATE 
  `beauty` b 
  INNER JOIN `boys` bo 
    ON b.`boyfriend_id` = bo.`id` SET `phone` = '114' 
WHERE bo.`id` = 1 

案例2:修改沒有男朋友的女神的男朋友編號都爲2號

update 
  `beauty` b 
  left outer join `boys` bo 
    on b.`boyfriend_id` = bo.`id` SET `boyfriend_id`=2
where bo.`id` is null

 

刪除語句

方式一:delete

1、單表的刪除【牢記】

delete   from   表名  where    篩選條件;

案例1:刪除手機號以9結尾的女生的信息

DELETE 
FROM
  `beauty` 
WHERE phone LIKE '%9' 

 

 

2、多表的刪除【補充】

sql92語法:

delete  表1的別名 / 表2的別名 

from  表1  別名, 表2, 別名 

where  連接條件 

and  篩選條件 

 

sql99語法

delete  表1的別名 / 表2 的別名

from  表1 別名

inner | left | right join 表2 別名  on 連接條件

where  篩選條件

案例:刪除張無忌的女朋友的信息(單表刪除)

delete 
  b 
from
  `beauty` b 
  inner join `boys` bo 
    on b.`boyfriend_id` = bo.`id` 
where bo.`id` = 1 

 

案例:刪除黃曉明的信息以及他女朋友的信息(多表刪除)

DELETE 
  b, bo 
FROM
  `beauty` b 
  INNER JOIN `boys` bo 
    ON b.`boyfriend_id` = bo.`id` 
WHERE bo.`boyName`='黃曉明'

方式二 :truncate

truncate   table   表名;   -- 清空/刪除表數據

delete與truncate的比較【重要

1、delete可以加WHERE條件,TRUNCATE不能加

2、truncate刪除,效率高一點

3、假如要刪除的表中有自增長列,

如果用delete刪除後,再插入數據,自增長列的值從斷點開始,

而truncate刪除後,再插入數據,自增長列的值從1開始

4、truncate刪除沒有返回值,delete刪除有返回值

5、truncate刪除不能回滾,delete刪除可以回滾 

案例練習 

運行以下腳本創建表my_employees

USE `myemployees` ;

CREATE TABLE My_employees(
	ID INT(10),
	first_name VARCHAR(10),
	last_name VARCHAR(10),
	Userid VARCHAR(10),
	Salary DOUBLE(10,2)
);
CREATE TABLE users(
	id INT,
	userid VARCHAR(10),
	department_id INT
);

#習題1:顯示錶my_employees的結構

DESC `my_employees`

 

#習題2:向my_employees表中插入下列數據

ID            FIRST_NAME            LAST_NAME               USERID        SALARY

1             patel                             Ralph                          Rpatel            895

2             Dancs                           Betty                          Bdancs            860

3             Biri                                Ben                            Bbiri                1100

4             Newman                       Chad                         Cnewman        750

5            Ropeburn                      Audrey                       Aropebur         1550

INSERT INTO `my_employees`
VALUES(1,'patel', 'Ralph', 'Rpatel', 895),
(2,'Dancs', 'Betty', 'Bdancs', 860),
(3,'Bin', 'Ben', 'Bbiri', 1100),
(4,'Newman', 'Chad', 'Cnewman', 750),
(5,'Ropeburn', 'Audrey', 'Aropebur', 1550)

方式2:

INSERT INTO `my_employees` 
SELECT 1,'patel', 'Ralph', 'Rpatel', 895 UNION
SELECT 2,'Dancs', 'Betty', 'Bdancs', 860 UNION
SELECT 3,'Bin', 'Ben', 'Bbiri', 1100 UNION
SELECT 4,'Newman', 'Chad', 'Cnewman', 750 UNION
SELECT 5,'Ropeburn', 'Audrey', 'Aropebur', 1550

 

 

習題3:向user表中插入數據

向user表中插入數據

1    Rpatel         10

2    Bdancs        10

3    Bbiri             20

4   Cnewman     30

5   Aropebur       40 

INSERT INTO `users`  -- 注意中文空格
VALUES(1, 'Rpatel', 10),
(2, 'Bdancs', 10),
(3, 'Bbiri', 20),
(4, 'Cnewman', 30),
(5, 'Aropebur', 40)

 

習題4:將3號員工的last_name修改爲'drelxer'

UPDATE 
  `my_employees` 
SET
  `last_name` = 'drelxer' 
WHERE ID = 3 

 

習題5:將所有工資少於900 的員工的工資修改爲1000

UPDATE 
  `my_employees` 
SET
  `Salary` = 1000 
WHERE `Salary` < 900 

 

習題6:將userid爲Bbiri 的user表和my_employees表的記錄全部刪除

思路:先根據userid連接兩個表,然後再加上刪除條件就OK 

DELETE 
  m,
  u 
FROM
  `my_employees` m 
  INNER JOIN `users` u 
    ON m.`Userid` = u.`userid`
    WHERE u.`userid`='Bbiri';

 

習題7:刪除所有數據

DELETE FROM `my_employees`;
DELETE FROM `users`;

習題8:檢查所有的修改

SELECT * FROM `my_employees`;
SELECT * FROM `users`;

習題9:清空my_employees表結構

TRUNCATE TABLE `my_employees`;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章