六、DML语言
数据操作语言
插入:insert
修改:update
删除:delete
插入语句
语法:
方式一:
insert into 表名(列名,…)
values(值1,…);
方式二:
insert into 表名
set 列名=值,列名=值…
#DML语言
#一、插入语句
/*
方式一:
insert into 表名(列名,...)
values(值1,...);
*/
#1.插入的值的类型要与列的类型一致或兼容
USE girls;
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','1988888888',NULL,2);
SELECT * FROM beauty;
#2.不可以为null的列必须插入值。可以为null的列如何插入值
#方式一:
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1990-4-23','1988888888',NULL,2);
#方式二:
INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(14,'金星','女','1990-4-23','1388888888',9);
INSERT INTO beauty(id,NAME,sex,phone)
VALUES(15,'娜扎','女','1388888889');
#3.列的顺序是否可以调换
INSERT INTO beauty(NAME,sex,id,phone)
VALUES('蒋欣','女',16,'110');
#4.列的个数和值的个数必须一致
/*insert into beauty(name,sex,id,phone,boyfriend_id)
values('关晓彤','女',17,'111');*/
#5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
INSERT INTO beauty
VALUES(18,'张飞','男',NULL,'119',NULL,NULL);
/*
方式二:
insert into 表名
set 列名=值,列名=值...
*/
INSERT INTO beauty
SET id=19,NAME='刘涛',sex='女',phone='999';
#两种方式pk
#1.方式一支持插入多行,但是方式二不支持
INSERT INTO beauty
VALUES(23,'唐艺昕1','女','1990-4-23','1988888888',NULL,2)
,(24,'唐艺昕2','女','1990-4-23','1988888888',NULL,2)
,(25,'唐艺昕3','女','1990-4-23','1988888888',NULL,2);
#2.方式一支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone)
SELECT 26,'宋茜','1180541654';
INSERT INTO beauty(id,NAME,phone)
SELECT id+26,boyname,'1234596'
FROM boys WHERE id<3;
修改语句
1.修改单表的记录
语法:
uodate 表名
set 列=新值,列=新值,…
where 筛选条件;
2.修改多表的记录【补充】
语法:
sql92语法:
update 表1 别名,表2 别名
set 列=值,…
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,…
where 筛选条件;
#二、修改语句
#1.修改单表记录
#案例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;
SELECT * FROM boys;
#2.修改多表的记录
#案例1:修改张无忌的女朋友的手机号为114
UPDATE boys bo
INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id`
SET b.`phone`=114
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;
删除语句
方式一:delete
语法:
1.单表的删除【掌握】
delete from 表名 where 筛选条件
2.多表的删除【补充】
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 表名;
#三、删除语句
#方式一:delete
#1.单表的删除
#案例1:删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
SELECT * FROM beauty;
#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 vs truncate
/*
1.delete可以加where条件,truncate不能加
2.truncate删除,效率高一丢丢
3.加入要删除的表中有自增长列,
如果用delete删除后,在插入数据,自增长列的值从断点开始,
而truncate删除后,在插入数据,自增长列的值从1开始
4.truncate删除没有返回值,而delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚
*/
SELECT * FROM boys;
DELETE FROM boys;
TRUNCATE TABLE boys;
INSERT INTO boys(`boyName`,`userCP`)
VALUES('张飞',100),('刘备',100),('关云长',100);
七、DDL语言
数据定义语言
库和表的管理
1)库的管理
创建、修改、删除
创建:
语法:
create database 【IF NOT EXISTS】 库名;
修改:
rename database books to 新库名;
更改库的字符集:
alter database books character set 字符集;
删除:
drop database if exists 库名;
2)表的管理
创建、修改、删除
创建:create
语法:
create table 【IF NOT EXISTS】 表名(
列名 列的属性 【(长度)约束】,
列名 列的属性 【(长度)约束】,
…
列名 列的属性 【(长度)约束】
);
修改:alter
alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;
删除:drop
drop table if exists 表名;
#1)库的管理
#1.库的创建
#案例:创建库books
CREATE DATABASE IF NOT EXISTS books;
#2.库的修改
#rename database books to 新库名;
#更改库的字符集
ALTER DATABASE books CHARACTER SET utf8;
#3.库的删除
DROP DATABASE IF EXISTS books;
#2)表的管理
#1.表的创建
#案例:创建表book
USE books;
CREATE TABLE book(
id INT,#编号
bName VARCHAR(20),#图书名
price DOUBLE,#价格
authorId INT,#作者编号
publishDate DATETIME#出版日期
);
DESC book;
#案例:创建author
CREATE TABLE author(
id INT,
au_name VARCHAR(20),
nation VARCHAR(10)
);
DESC author;
#2.表的修改
#①修改列名
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;
#②修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;
#③添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;
#④删除列
ALTER TABLE author DROP COLUMN annual;
#⑤修改表名
ALTER TABLE author RENAME TO book_author;
#3.表的删除
DROP TABLE IF EXISTS book_author;
SHOW TABLES;
#通用写法:
/*
drop database if exists 旧库名;
create database 新库名;
drop table if exists 旧表名;
create table 表名();
*/
#4.表的复制
INSERT INTO author VALUES
(1,'村上春树','日本'),
(2,'莫言','中国'),
(3,'冯唐','中国'),
(4,'金庸','中国');
SELECT * FROM author;
#1)仅仅复制表的结构
CREATE TABLE copy LIKE author;
SELECT * FROM copy;
#2)复制表的结构+数据
CREATE TABLE copy2
SELECT * FROM author;
SELECT * FROM copy2;
#只复制部分数据
CREATE TABLE copy3
SELECT * FROM author
WHERE nation='中国';
SELECT * FROM copy3;
#仅仅复制某些字段
CREATE TABLE copy4
SELECT *
FROM author
WHERE 0;
SELECT * FROM copy4;
本文详细介绍了DML语言,包括插入、更新和删除操作的SQL语句实例,以及库和表的管理,如创建、修改和删除数据库与表。重点展示了不同操作方式和SQL语法的应用,适合数据库初学者和开发者参考。
263

被折叠的 条评论
为什么被折叠?



