一、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,我们有缘再见。