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 子句。
•