DML和视图分析

本文详细介绍了DML(数据操纵语言),包括增、改、删操作,并对比了`insert`、`update`和`delete`的不同用法。接着讨论了`truncate`与`delete`的区别。此外,还深入探讨了视图的概念、作用和限制,以及如何创建、修改和删除视图。视图在简化操作、提高安全性及逻辑独立性方面具有优势,但也存在性能和修改限制的问题。
摘要由CSDN通过智能技术生成

DML和视图分析

DML数据管理语言

什么是DML语言:
DML语言的意思就是数据操纵语言,在我们的数据库中就是我们的增、删、改的操作。下面就分别介绍MySQL中的DML语言的语法。

一、增

语法1:insert into 表名(字段名,…) values(值,…)

语法2:insert into 表名 set 字段1 = 值,字段2 = 值,…

忽略插入:insert or ignore into 表名() values()

特点:1、值的类型要与字段的类型要一致或兼容
2、字段的个数和顺序可以自定义,但需要保证值与字段的一一对应
3、插入null值,可以字段和值同时忽略,也可以在值上使用null
4、字段名可以省略,默认表中的所有字段

两者语法的区别:

1、语法1可以一次插入多行,insert into 表名(字段名,…) values(值,…),(值,…),()
2、语法1支持子查询,inset into 表名 查询语句

二、改

1、修改单表

语法:update 表名 set 字段1 = 值,字段2 = 值 【where 筛选条件】

2、修改多表

语法:updata 表1 别名 left | right | inner join 表2 别名
on 连接条件
set 字段1 = 值,字段2 = 值,…
【where 筛选条件】

三、删

方式1:delete
1、删除单表的记录

语法:delete from 表名 【where 筛选条件】【limit】

2、级联删除

语法:delete 别名1,别名2 from 表1 别名1
inner | left | right join 表2 别名2
on 连接条件
【where 筛选条件】【limit】

方式2:truncate

语法:truncate table 表名

两种方式的区别:
1、truncate 删除后,如果插入新值,标识列从1开始,delete则会从断点开始
2、delete可以添加筛选条件,truncate不可用
3、truncate效率比delete高些
4、truncate没有返回值,delete可以返回受影响的行数
5、truncate不可用回滚,delete可以回滚

2、插入数据

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

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

INSERT INTO t_mysql_employees(employee_id,last_name,email,hire_date,job_id)
VALUES (300,’Tom’,’tom@126.com’,to_date(‘2012-3-
21’,’yyyy-mm-dd’),’SA_RAP’);

向表中插入空值

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

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

插入指定的值

INSERT INTO t_mysql_employees (employee_id, first_name, last_name, email, phone_number,hire_date, job_id, salary, commission_pct, manager_id,department_id)
VALUES (113, 'Louis', 'Popp', 'LPOPP', '515.124.4567', 
NOW(), 'AC_ACCOUNT', 6900, NULL, 205, 100);

从其它表中拷贝数据

• 在 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%';


• 不必书写 VALUES 子句。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值