1 DML数据操作语言

1.1 添加数据

insert关键字是用来向数据表中添加数据的

# 插入所有列
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2);

# 插入部分列
INSERT INTO beauty(id,NAME,sex,phone) VALUES(15,'娜扎','女','1388888888');

# 可以交换列的顺序,列数和值的个数必须一致
INSERT INTO beauty(NAME,sex,id,phone) VALUES('蒋欣','女',16,'110');

# 可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty VALUES(18,'张飞','男',NULL,'119',NULL,NULL);

1.2 更新数据

update关键字是用来修改数据表中的数据的

# 修改单表的记录
# 案例1:修改beauty表中姓唐的女神的电话为13899888899
UPDATE beauty SET phone = '13899888899' WHERE NAME LIKE '唐%';

# 案例2:修改boys表中id为2的名称为张飞,魅力值10
UPDATE boys SET boyname = '张飞', usercp = 10 WHERE id = 2;

# 修改多表连接查询的记录
# 案例 1:修改张无忌的女朋友的手机号为119
UPDATE boys bo
INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='119',bo.`userCP`=1000
WHERE bo.`boyName`='张无忌';

# 案例2:修改没有男朋友的女神的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b ON bo.`id` = b.`boyfriend_id`
SET b.`boyfriend_id` = 2
WHERE bo.`id IS NULL;

1.3 删除数据

删除数据可以使用delete和truncate两个关键字

# 删除单表语法:
delete from 表名 where 筛选条件

# 案例1:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';

# 删除多表语法:
# sql92语法:
delete 表1的别名, 表2的别名
from 表1 别名, 表2 别名
where 连接条件
and 筛选条件;

# sql99语法:
delete 表1的别名, 表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;

# 案例2:删除张无忌的女朋友的信息
DELETE b
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='张无忌';

# 案例3:删除黄晓明的信息以及他女朋友的信息
DELETE b,bo
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id` = bo.`id`
WHERE bo.`boyName`='黄晓明';

# 清空表的所有数据
TRUNCATE TABLE boys;

2 DDL数据定义语言

2.1 数据库操作

# 创建数据库
CREATE DATABASE IF NOT EXISTS books ;

# 数据库重命名
RENAME DATABASE books TO 新库名;

# 更改数据库的字符集
ALTER DATABASE books CHARACTER SET gbk;

# 删除数据库
DROP DATABASE IF EXISTS books;

2.2 数据表操作

创建数据表

# 案例:创建表Book
CREATE TABLE book(
	id INT,	#编号
	bName VARCHAR(20),	#图书名
	price DOUBLE,	#价格
	authorId  INT,	#作者编号
	publishDate DATETIME	#出版日期
);

# 案例:创建表author
CREATE TABLE IF NOT EXISTS author(
	id INT,
	au_name VARCHAR(20),
	nation VARCHAR(10)
);

# 查看数据表详情
DESC author;

修改数据表

# 修改列名
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;

# 修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;

# 添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE; 

# 删除列
ALTER TABLE book_author DROP COLUMN  annual;

# 修改表名
ALTER TABLE author RENAME TO book_author;
DESC book;

删除数据表

DROP TABLE IF EXISTS book_author;

复制数据表

# 1.仅仅复制表的结构
CREATE TABLE copy LIKE author;

# 2.复制表的结构+数据
CREATE TABLE copy2 SELECT * FROM author;

# 只复制部分数据
CREATE TABLE copy3 SELECT id, au_name FROM author WHERE nation='中国';

# 仅仅复制某些字段
CREATE TABLE copy4 SELECT id, au_name FROM author WHERE 0;