1. 程式人生 > 其它 >SQL/資料操縱語言DML(Data Manipulation Language)

SQL/資料操縱語言DML(Data Manipulation Language)

  資料操縱語言DML主要有三種形式:

  插入:INSERT
  更新:UPDATE
  刪除:DELETE

#DML語言
/*
資料操作語言:

插入:insert
修改:update
刪除:delete

*/

#一、插入語句
/*
語法:
insert into 表名( 列名,... ) values( 值1,... );

表名
列名
新值

*/

SELECT * FROM beauty;

#1、插入的值的型別要與列的型別一致或相容
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
        VALUES
(13, '唐藝昕', '', '1990-4-23', '18988888888', NULL, 2); #2、不可以為null的列必須插入值,可以為null的列是如何插入值的 #方式一: INSERT INTO beauty(id, NAME, sex, borndate, phone, photo, boyfriend_id) VALUES(13, '唐藝昕', '', '1990-4-23', '18988888888', NULL, 2); #方式二: INSERT INTO beauty(id, NAME, sex, borndate) # phone 列值為空 ?!
VALUES(14, '金星', '', '1990-4-23'); INSERT INTO beauty(id, NAME, sex, phone) # 出生日期列為何會有預設值 ? 設定了預設值! VALUES(15, '娜扎', '', '13888888888'); #3、列的順序是可以調換的 INSERT INTO beauty(NAME,sex,id,phone) VALUES('蔣欣','',16,'110'); #4、列的個數與值的個數要一致 INSERT INTO beauty(NAME,sex,id,phone) #, boyfriend_id) VALUES('
關曉彤','',17,'110'); #方式二: /* 語法: insert into 表名 set 列名 = 值, 列名 = 值, ... */ INSERT INTO beauty SET id = 19, NAME = '劉濤', phone = '999'; #兩種方式大PK #1、方式一支援插入多行,方式二不支援 INSERT INTO beauty VALUES(23, '唐藝昕1', '', '1990-4-23', '18988888888', NULL, 2) ,(24, '唐藝昕2', '', '1990-4-23', '18988888888', NULL, 2) ,(25, '唐藝昕3', '', '1990-4-23', '18988888888', NULL, 2); #2、方式一支援子查詢,方式二不支援 INSERT INTO beauty(id,NAME,phone) SELECT 26, '宋茜', '1234567'; INSERT INTO beauty(id,NAME,phone) SELECT id,boyname, '1234567' FROM boys WHERE id < 3; #把id 主鍵修改下,否則會有主鍵重複項的錯誤 #二、修改語句 /* 1、修改單表的記錄 語法: update 表名 set 列 = 新值, 列 = 新值, ... where 篩選條件; 2、修改多表的記錄【補充】 語法: sql92語法 update 表1 別名,表2 別名 set 列 = 值, ... where 連線條件 and 篩選條件 sql 99語法 update 表1 別名 inner|left|right join 表2 別名 on 連線條件 set 列 = 值,... where 篩選條件; */ #1、修改單表的記錄 #修改beauty表中姓唐的女神的電話為138888999 UPDATE beauty SET phone = '1388888999' WHERE NAME LIKE '唐%'; #修改boys表中id為2的名稱為張飛,魅力值 10 UPDATE boys SET boyname = '張飛', usercp = 10 WHERE id = 2; #修改多表的記錄 #修改張無忌的女朋友的手機號為114 UPDATE boys bo INNER JOIN beauty b ON bo.`id` = b.`boyfriend_id` SET b.phone = '114' WHERE bo.`boyName` = '張無忌'; #修改沒有男朋友的女神的男朋友編號都為2號 UPDATE boys bo RIGHT OUTER JOIN beauty b ON bo.`id` = b.`boyfriend_id` SET b.`boyfriend_id` = 2 WHERE b.`boyfriend_id` IS NULL; # 沒有男朋友 #刪除語句 /* 方式一:delete 語法: 1、單表的刪除 delete from 表名 where 篩選條件 2、多表的刪除【補充】 sql 92語法 delete 表1的別名【,表2的別名】 from 表1 別名,表2 別名 where 連線條件 and 篩選條件; sql 99語法 delete 表1的別名【,表2的別名】 from 表1 別名 inner|left|right join 表2 別名 on 連線條件 where 篩選條件 方式二: truncate 語法: truncate table 表名; */ #方式一: delete #1、單表的刪除 #刪除手機號以9結尾的女神資訊 DELETE FROM beauty WHERE phone LIKE '%9%'; #2、多表的刪除 #刪除張無忌的女朋友的資訊 DELETE b FROM beauty b INNER JOIN boys bo ON b.`boyfriend_id` = bo.`id` WHERE bo.`boyName` = '張無忌'; #刪除黃曉明的資訊及他女朋友的資訊 DELETE b,bo FROM beauty b INNER JOIN boys bo ON b.`boyfriend_id` = bo.`id` WHERE bo.`boyName` = '黃曉明'; #方式二: truncate語句 #將魅力值 >100的男神資訊刪除 TRUNCATE TABLE boys; #清空資料, 刪除整個表 #delete PK truncate /* 1、delete 可以加where 條件,truncate 不能加 2、truncate 刪除,效率高點 3、假如要刪除的表中有自增長列 如果用delete刪除後,再插入資料,自增長列的值從斷點開始,而truncate刪除後,再插入資料 自增長列的值從1開始 4、truncate 刪除沒有返回值,delete刪除有返回值 5、truncate刪除不能回滾,delete刪除可以回滾 */ DELETE FROM boys; TRUNCATE TABLE boys; INSERT INTO boys (boyname,usercp) VALUE('張飛',100),('劉備',100),('關雲長',100); #1、執行以下指令碼建立表 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 ); #顯示錶 my_employees的結構 DESCRIBE my_employees; #向 my_employees 表中插入下列資料 #方式一: INSERT INTO my_employees VALUE(1,'patel','Ralph','Rpatel',895), (2,'Dancs','Betty','Bdancs',860), (3,'Biri','Ben','Bbiri',1100), (4,'Newman','Chad','Cnewman',750), (5,'Ropeburn','Audrey','Aropeburn',1550); DELETE FROM my_employees; #方式二 INSERT INTO my_employees SELECT 1,'patel','Ralph','Rpatel',895 UNION # select 後面是空格 SELECT 2,'Dancs','Betty','Bdancs',860 UNION SELECT 3,'Biri','Ben','Bbiri',1100 UNION SELECT 4,'Newman','Chad','Cnewman',750 UNION SELECT 5,'Ropeburn','Audrey','Aropeburn',1550; #向users表中插入資料 INSERT INTO users VALUES(1,'Rpatel',10), (2,'Bdancs',10), (3,'Bbiri',20); #將3號員工的last_name 修改 為 'drelxer' UPDATE my_employees SET last_name = 'drelxer' WHERE id = 3; #將所有工資少於900的員工的工資修改為1000 UPDATE my_employees SET salary = 1000 WHERE salary < 900; #將userid 為 Bbiri 的users表和my_employees表的記錄全部刪除 DELETE users, my_employees # delete 後面直接跟 fromFROM users INNER JOIN my_employees ON users.`userid` = my_employees.`userid` WHERE users.`userid` = 'Bbiri'; #刪除所有資料 DELETE FROM users; # delete + from +DELETE FROM my_employees; #檢查所作的修正 SELECT * FROM users; SELECT * FROM my_employees; #清空表 my_employees TRUNCATE TABLE my_employees; # truncate + table +
View Code