MySQL的DML和视图学好了,老板都哭了

这篇博客详细介绍了MySQL的DML(数据管理语言),包括插入、更新和删除数据的语法及实例,并探讨了视图的概念、创建、修改、删除和更新。还提醒了哪些类型的视图不允许更新。
摘要由CSDN通过智能技术生成

一、DML

在数据库语言中比较重要的就是DDL(数据定义语言)DQL(数据查询语言)DML(数据管理语言)DCL(数据控制语言)TCL(事务控制语言) 这五种语言了。

那这第一部分主要讲的就是DML数据管理语言了。

1、简介

  • DML(Data Manipulation Language——数据操纵语言),它能够完成数据库的增删改,作用相当于java的增删改。
  • 它的一切事务是由完成若干项工作的DML语句组成的。

2、插入数据

方法:MySQL 表中使用 INSERT INTO SQL语句来插入数据。你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。

语法如下:

INSERT INTO 表名(列名1,列名2,列名3……,列名4) VALUES (数据1,数据2,数据3,……,数据4)

注意:
1、为每一列添加一个新值。
2、按列的默认顺序列出各个列的值。
3、在 INSERT 子句中随意列出列名和他们的值。
4、字符和日期型数据应包含在单引号中。

实例:

//zouyan   我使用的表是student  列名是id,name,age

//插入指定的值
INSERT INTO student(id, name, age)
VALUES (70, 'Public Relations', 18);

//插入空值   
	//隐藏方式
	INSERT INTO student(id, name )
	VALUES (70, 'Public Relations' );
	//显示方式
	INSERT INTO student
	VALUES (70, 'Public Relations', null);

//从其他表中拷贝数据
INSERT INTO student0 
SELECT * FROM student
WHERE id = 90;//记住这个位置需要跟两个表里的一样。
INSERT INTO student(id, name,age)
SELECT id, name,age FROM student
WHERE bz LIKE '%REP%';
//在这其中不需要书写VALUES子句
//子查询中的值列表应与 INSERT 子句中的列名对应

3、更新数据

方法:使用UPDATE 语句更新数据。

  • 可以一次更新多条数据。
  • 如果需要回滚数据,需要保证在DML前,进行
    设置:SET AUTOCOMMIT = FALSE;
    语法如下:
UPDATE 表名 、SET st
udent = 【原数据】 
WHERE 【旧数据】

案例如下:

//zouyan   使用 WHERE 子句指定需要更新的数据
UPDATE student SET id = 70
WHERE id = 113;
//注意不要省略WHERE子句,不然去数据都会被更新

4、删除数据

方法:使用DELETE语句从表中删除数据。
语法如下:

DELETE FROM 表名
WHERE 列名1= '数据1';

案例如下:

//zouyan 使用 WHERE 子句删除指定的记录。
DELETE FROM student
WHERE name = 'zouyan';
//注意不要省略WHERE子句,不然去数据都会被删除

拓展:delete pk truncate

  • 1.delete 可以加where 条件,truncate不能加。
  • 2.truncate删除,效率高一丢丢。
  • 3.假如要删除的表中有自增长列,
    如果用delete删除后,再插入数据,自增长列的值从断点开始。
    而truncate删除后,再插入数据,自增长列的值从1开始。
  • 4.truncate删除没有返回值,delete删除有返回值。
  • 5.truncate删除不能回滚,delete删除可以回滚。

二、视图

然后,我们来看到第二个——视图。

1、含义

含义:虚拟表,和普通表一样使用
mysql5.1版本出现的新特性,是通过表动态生成的数据
在这里插入图片描述
比如:舞蹈班和普通班级的对比

创建语法的关键字是否实际占用物理空间使用
视图 create view只是保存了sql逻辑增删改查,只是一般不能增删改
表 create table保存了数据增删改查

2、创建视图

创建视图语法如下:

CREATE VIEW 视图名
AS
查询语句;

案例如下:

//zouyan 创建
CREATE VIEW nc1
AS

SELECT last_name,department_name,job_title
FROM employees e
JOIN departments d ON e.department_id  = d.department_id
JOIN jobs j ON j.job_id  = e.job_id;
//使用视图 直接根据前面创建的视图名去操作
SELECT * FROM nc1 WHERE last_name LIKE '%a%';

3、视图的修改

视图修改语法如下:

方式一:
CREATE OR REPLACE VIEW  视图名
AS
查询语句;

方式二:
语法:
ALTER VIEW 视图名
AS
查询语句;

案例如下:

//zouyan
//方式一案例演示
SELECT * FROM nc2 

CREATE OR REPLACE VIEW nc2
AS
SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id;

//方式二案例演示
ALTER VIEW nc3
AS
SELECT * FROM employees;

4、删除视图

删除视图语法如下;

DROP VIEW 视图名,视图名,...;

案例如下:

//zouyan
DROP VIEW nc_1,nc_2,nc3;

5、查看视图

查看视图:
语法如下:

DESC nc3;

SHOW CREATE VIEW nc3;

案例如下:

//zouyan
DESC nc3;

SHOW CREATE VIEW nc3;

6、视图更新

视图更新直接看到案例去了解:

//zouyan
//1、
CREATE OR REPLACE VIEW nc1
AS
SELECT last_name,email,salary*12*(1+IFNULL(commission_pct,0)) "annual salary"
FROM employees;

//2、
CREATE OR REPLACE VIEW nc1
AS
SELECT last_name,email
FROM employees;

//视图展示
SELECT * FROM nc1;
SELECT * FROM employees;

注:具备以下特点的视图不允许更新

  • ①包含以下关键字的sql语句:分组函数、distinct、group by、having、union或者union all
  • ②常量视图
  • ③Select中包含子查询
  • ④join
  • ⑤from一个不能更新的视图
  • ⑥where子句的子查询引用了from子句中的表

三、总结

基本上DML和视图的相关知识就是这些了,大家好好消化。
我是南橙,一个逐渐秃头的橙子Orange,我们有缘再见。
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值