MySQL基本操作整理(六)、數據操縱語言DML與數據定義語言DDL

在整理完數據查詢語言DQL後,接着整理DML與DDL語言。相對於數據查詢語言(很重要,內容也很多),數據操縱語言與數據定義語言內容相對較少,本文就放在一篇文章進行整理。

一、數據操縱語言DML

DML語言主要有三種形式:插入:insert,修改:update,刪除:delete。下面依次用案例的形式進行介紹。

1. 插入語句

實現插入記錄的兩種方式:
方式一:insert into 表名(列名,...) values(值1,...);
方式二:insert into 表名 set 列名 = 值,列名 = 值,...
案例1:向女神表中插入一條記錄

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐藝昕','女','1990-4-23','1898888888',NULL,2);

說明:

  1. 插入的值的類型要與列的類型一致或兼容
  2. 不可以爲null的列必須插入值,可以爲null的列插入空值1)可以插入null;2)可以不寫該列字段
  3. 列的順序可以調換
  4. 列數和值的個數必須一致

案例2:向女神表中插入一條包含所有字段的記錄

INSERT INTO beauty
VALUES(18,'劉詩詩','女',NULL,'15856498715',NULL,NULL);

案例3:向女神表中插入一條記錄,其中姓名爲劉濤,id爲19,phone爲999

INSERT INTO beauty
SET id=19,NAME='劉濤',phone='999'; #該種方式插入id值不能重複

兩種插入方式大PK

  1. 方式一支持插入多行,方式二不支持
INSERT INTO beauty
VALUES(23,'唐藝昕1','女','1990-4-23','1898888888',NULL,2)
,(24,'唐藝昕2','女','1990-4-23','1898888888',NULL,2)
,(25,'唐藝昕3','女','1990-4-23','1898888888',NULL,2);
  1. 方式一支持子查詢,方式二不支持
#例1
INSERT INTO beauty(id,NAME,phone)
SELECT 26,'宋茜','11809866';
#例2
INSERT INTO beauty(id,NAME,phone)
SELECT id,boyname,'1234567'
FROM boys WHERE id<3;
  1. 大多用第一種方式

2. 修改語句

修改語句涉及到單表修改與多表修改,其中單表修改爲重點。
(1)修改單表記錄

update 表名
set= 新值,= 新值,...
where 篩選條件;

(2)修改多表記錄

#sql92語法:
update 表1 別名,表2 別名
set 列=值,…
where 連接條件
and 篩選條件;

#sql99語法:
update 表1 別名
inner|left|right join 表2 別名
on 連接條件
set 列=值,…
where 篩選條件;

案例1(修改單表記錄):修改beauty表中姓唐的女神的電話爲13899888899

UPDATE beauty SET phone = '13899888899'
WHERE NAME LIKE '唐%';

案例2(修改多表記錄):修改張無忌的女朋友的手機號爲114

UPDATE boys bo
INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='114'
WHERE bo.`boyName`='張無忌';

案例3(修改多表記錄):修改沒有男朋友的女神的男朋友編號都爲2號

UPDATE beauty b
LEFT JOIN boys bo
ON b.`boyfriend_id` = bo.`id`
SET b.`boyfriend_id` = '2'
WHERE bo.`id` IS NULL;

3. 刪除語句

方式一:delete方式刪除

  • 單表刪除(★)
    delete from 表名 where 篩選條件
  • 多表刪除
    sql92語法:delete 表1的別名, 表2的別名 from 表1 別名, 表2 別名 where 連接條件 and 篩選條件
    sql99語法:delete 表1的別名, 表2的別名 from 表1 別名 inner|left|right join 表2 別名 on 連接條件 where 篩選條件;

方式二:truncate方式刪除
語法:truncate table 表名;

案例1(單表刪除):刪除手機號以9結尾的女神信息

DELETE FROM beauty WHERE phone LIKE '%9';

案例2(多表刪除,sql99語法):刪除張無忌的女朋友的信息

DELETE b
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName`='張無忌';

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

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

案例4(truncate刪除):刪除boys表的信息

TRUNCATE TABLE boys ;

注意:TRUNCATE刪除方式直接將整個表清空

delete PK truncate 【面試題 ★】

  1. delete 可以加where 條件,truncate不能加

  2. truncate刪除,效率高一丟丟

  3. 假如要刪除的表中有自增長列(*)
    如果用delete刪除後,再插入數據,自增長列的值從斷點開始
    而truncate刪除後,再插入數據,自增長列的值從1開始

  4. truncate刪除沒有返回值,delete刪除有返回值(*)

  5. truncate刪除不能回滾,delete刪除可以回滾(*)

二、數據定義語言DDL

數據定義語言 (Data Definition Language, DDL) 是SQL語言集中負責數據結構定義數據庫對象定義的語言,主要包括庫和表的管理,包括庫和表的創建(create)、修改(alter)和刪除(drop)。

(一)庫的管理

1. 庫的創建

語法:create database [if not exists] 庫名;
案例:創建庫Books

CREATE DATABASE IF NOT EXISTS books ;

2. 庫的修改

庫的修改操作主要爲修改數據庫的名稱和字符集
(1)修改庫的名稱

  • RENAME DATABASE books TO 新庫名;(5.1之前的版本可用,現在已經不能使用了,不安全,會導致數據丟失)

  • 現在的修改方法:修改數據庫的對應文件夾的名字,然後重啓數據庫服務

(2)修改庫的字符集

將數據庫的字符集更改爲GBK

ALTER DATABASE books CHARACTER SET gbk;

3. 庫的刪除

案例:刪除庫Books

DROP DATABASE IF EXISTS books;

(二)表的管理

1. 表的創建

語法:

create table [if not exists] 表名(
	列名 列的類型【(長度) 約束】,
	列名 列的類型【(長度) 約束】,
	列名 列的類型【(長度) 約束】,
	...
	列名 列的類型【(長度) 約束】
);

案例:創建表Book

CREATE TABLE book(
	id INT,#編號
	bName VARCHAR(20),#圖書名
	price DOUBLE,#價格
	authorId  INT,#作者編號
	publishDate DATETIME#出版日期
);
DESC book;

2. 表的修改【★】

語法:alter table 表名 add | drop | modify | change column 列名 【列類型 約束】;

#(1)修改列名,*必須加上列的類型*
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;

#(2)修改列的類型或約束
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;

#(3)添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE; 
#說明:添加新列時可以指定添加新列的位置,如 first/ after 字段名
ALTER TABLE author ADD COLUMN pubPlace VARCHAR(20) FIRST; #建在第一個字段
ALTER TABLE author ADD COLUMN pubPlace2 VARCHAR(20) AFTER pubPalce; #建在pubPlace後

#(4)刪除列
ALTER TABLE book_author DROP COLUMN  annual;

#(5)修改表名
ALTER TABLE author RENAME TO book_author;

3. 表的刪除

語法:drop table if exists 表名;
案例:刪除book_author表

DROP TABLE IF EXISTS book_author;

庫和表創建刪除的通用寫法:

DROP DATABASE IF EXISTS 舊庫名;
CREATE DATABASE 新庫名;

DROP TABLE IF EXISTS 舊錶名;
CREATE TABLE 新表名;

4. 表的複製

(1)僅僅複製表的結構

CREATE TABLE copy LIKE author;

(2)複製表的結構+數據

CREATE TABLE copy2 
SELECT * FROM author;

(3)只複製部分列的部分數據

CREATE TABLE copy3
SELECT id, au_name
FROM author
WHERE nation='中國';

(4)只複製部分列的字段,不復制數據(劃重點)

#添加一個永遠不滿足條件的篩選條件
#方式 1
CREATE TABLE copy4 
SELECT id,au_name
FROM author
WHERE 1 = 2;

#方式 2
CREATE TABLE copy4 
SELECT id,au_name
FROM author
WHERE 0;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章