MySQL中的DML,视图

1.DML

1.1DML简介

DML是一种数据管理语言

• DML(Data Manipulation Language –
数据操纵语言) 可以在下列条件下执行: – 向表中插入数据
– 修改现存数据
– 删除现存数据
• 事务是由完成若干项工作的DML语句组成的

1.2插入数据

• 使用 INSERT 语句向表中插入数据。
• 使用这种语法一次只能向表中插入一条数据。
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);

• 为每一列添加一个新值。
• 按列的默认顺序列出各个列的值。
• 在 INSERT 子句中随意列出列名和他们的值。
• 字符和日期型数据应包含在单引号中。
INSERT INTO 表名(列字段,列字段,列字段,列字段)
VALUES (70, 'Public Relations', 100, 1700);

1.2.1向表中插入空值

• 隐式方式: 在列名表中省略该列的值。
department_id, department_name指的是列字段
INSERT INTO 表名 (department_id, department_name )
VALUES (30, 'Purchasing');

显示方式: 在VALUES 子句中指定空值。
INSERT INTO 表名
VALUES (100, 'Finance', NULL, NULL);

1.2.2插入指定的值

对指定的列字段增加指定的值
INSERT INTO 表名(字段名)values(指定的值)

1.2.3从其它表中拷贝数据

仅供参考
• 不必书写 VALUES 子句。
• 子查询中的值列表应与 INSERT 子句中的列名对应

• 在 INSERT 语句中加入子查询。
INSERT INTO emp2 
SELECT * 
FROM t_mysql_employees
WHERE department_id = 90;

INSERT INTO sales_reps(id, name, salary, commission_pct)
SELECT employee_id, last_name, salary, commission_pct
FROM t_mysql_employees
WHERE job_id LIKE '%REP%';

1.2.4更新数据

• 使用 UPDATE 语句更新数据。
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];

• 可以一次更新多条数据。
• 如果需要回滚数据,需要保证在DML前,进行
设置:SET AUTOCOMMIT = FALSE;

• 使用 WHERE 子句指定需要更新的数据。
UPDATE t_mysql_employees
SET department_id = 70
WHERE employee_id = 113;

• 如果省略 WHERE 子句,则表中的所有数据都将被更新
UPDATE copy_emp
SET department_id = 110;

1.2.5删除数据

使用 DELETE 语句从表中删除数据。
DELETE FROM table
[WHERE condition];

• 使用 WHERE 子句删除指定的记录。
DELETE FROM t_mysql_departments
WHERE department_name = 'Finance';

• 如果省略 WHERE 子句,则表中的全部数据将被删除
DELETE FROM copy_emp;

1.2.6delete与truncate的区别

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

2.视图

2.1视图的含义

含义:虚拟表,和普通表一样使用
mysql5.1版本出现的新特性,是通过表动态生成的数据

比如:舞蹈班和普通班级的对比
	创建语法的关键字	是否实际占用物理空间	使用

视图	create view		只是保存了sql逻辑	增删改查,只是一般不能增删改

表	create table		保存了数据		增删改查

2.2创建视图

语法:
create view 视图名
as
查询语句;

实例:
查询姓张的学生名和专业名
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.`majorid`= m.`id`
WHERE s.`stuname` LIKE '张%';

CREATE VIEW v1
AS
SELECT stuname,majorname
FROM stuinfo s
INNER JOIN major m ON s.`majorid`= m.`id`;

SELECT * FROM v1 WHERE stuname LIKE '张%';

3.总结

欢迎大家观看,有什么不足之处欢迎大家指正!

猜你喜欢

转载自blog.csdn.net/Smootht/article/details/106834363