四时宝库

程序员的知识宝库

MySQL数据处理之增删改(mysql简单的增删改查)

通过本章学习,您将可以:

? 使用 DML 语句

? 向表中插入数据

? 更新表中数据

? 从表中删除数据

数据操纵语言

? DML(Data Manipulation Language 一 数据操纵语言) 可以在下列条件下执行:

-向表中插入数据

-修改现存数据

-删除现存数据

?事务是由完成若干项工作的DML语句组成的

插入数据

DEPARTMENTJD j

DEPARTMENT NAME

manager id|

LOCATIONJD

10

.Administration

200

1700

20

Marketing

201

1800

60

Shipping

124

1500

60

IT

103

1400

80

Sales

149

2500

90

E::::e cutive

100

1700

110

.Accounting

205

1700

190

Contra 匚ting


1700

向 DEPARTMENTS 表中插入新的记录

INSERT 语句语法

? 使用 INSERT 语句向表中插入数据。

INSERT INTO table [(column [, column...])] 1
VALUES (valu^e [, value...]);

? 使用这种语法一次只能向表中插入一条数据。

? 为每一列添加一个新值。

插入数据

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

INSERT INTO departments(department_id, department_name, manager_id, location_id) VALUES (70, 'Public Relations', 100, 1700);

1 row created.

INSERT INTO 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’);

1 row created.

向表中插入空值

? 隐式方式 : 在列名表中省略该列的值。

INSERT INTO departments (department_id, department_name ) VALUES (30, 'Purchasing');

1 row created.

? 显示方式 : 在 VALUES 子句中指定空值。

INSERT INTO departments VALUES (100, 'Finance', NULL, NULL);

1 row created.

插入指定的值

NOW()函数:记录当前系统的日期和时间。

INSERT INTO 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);

1 row created.

从其它表中拷贝数据

? 在 INSERT 语句中加入子查询。

INSERT INTO emp2 SELECT * FROM employees WHERE department_id = 90;

3 rows created.

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

4 rows created.

?不必书写VALUES子句。

? 子查询中的值列表应与 INSERT 子句中的列名对 应

更新数据

UPDATE 语句语法

?使用UPDATE语句更新数据。

UPDATE table

SET column = value [, column = value, ...]

[WHERE con^d^ition];

? 可以一次更新多条数据。

?如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT = FALSE;

更新数据

? 使用 WHERE 子句指定需要更新的数据。

UPDATE employees

SET department_id = 70 WHERE employee_id = 113;

1 row updated.

? 如果省略 WHERE 子句,则表中的所有数据都将被更新

UPDATE copy_emp

SET department_id = 110;

22 rows updated.

更新中的数据完整性错误

UPDATE employees

SET department_id = 55

WHERE department_id = 110;

错误代码:1452

Cannot add or update a child row: a foreign key constraint fails ('myemployees'.'employees', CONSTRAINT 'dept_id_fk' FOREIGN KEY ('department_id') REFERENCES 'departments' ('department id'))

不存在55号部门

另例:

update employees set manager_id = 299 where employee_id = 203;

DELETE 语句

使用 DELETE 语句从表中删除数据。

DELETE FROM table

[WHERE condition];

删除数据

? 使用 WHERE 子句删除指定的记录。

DELETE FROM departments

WHERE department_name = 'Finance';

1 row deleted.

? 如果省略 WHERE 子句,则表中的全部数据将被删除

DELETE FROM copy_emp;

22 rows deleted.

删除中的数据完整性错误

DELETE FROM departments WHERE department_id = 60;

错误代码:1451

Cannot delete or update a parent row: a foreign key constraint fails ('myemployees'.'employees', CONSTRAINT 'dept_id_fk' FOREIGN KEY ('department_id') REFERENCES 'departments' ('department_id'))

You cannot delete a row that contains a primary key that is used as a foreign key in another table?

总结

通过本章学习,您应学会如何使用DML语句改变数据和事务控制

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接