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;
原创文章 97 获赞 43 访问量 1万+

猜你喜欢

转载自blog.csdn.net/shao_yc/article/details/106155415