菜鸟笔记
提升您的技术认知

mysql数据库之dml(数据操纵语言)-ag真人游戏

​ 在进行数据库操作时,首先就是要使用dml(数据操纵语言),数据操纵语言主要由插入数据(insert)、更新数据(update)以及删除数据(delete)组成,这些操作主要是针对

数据表中的数据。

当需要向一张表中插入数据时,可以使用insert语句进行插入。具体语法:

语法一:一般用在不插入所有数据时
insert into table_name ([ field1], [field2],...[fieldn] )
                      values
                      ( [value1], [value2],...[valuen] );
                      
语法二:一般用在插入所有数据时
insert into table_name 
                      values
                      ( [value1], [value2],...[valuen] );
或者
insert into table_name ( field1, field2,...fieldn )
                      values
                      ( value1, value2,...valuen );
通俗理解:
insert into 表名([字段1],[字段2],[字段3]....) values(值1,值2,值3......)

2.1 插入全部数据

插入所有数据就是把张表中所包含的所有字段都赋值,插入所有字段的数据,注意值得顺序和字段的顺序一定要一致,同时也要注意下字段的约束条件,否则会报错。

------------->>>>案例: 向emp表中插入一条记录: empno=7369, ename= ‘smith’, job=‘clerk’, mgr=7092, hiredate=1980-12-17, sal=800, comm=null, deptno =20.age=null

语法二:
mysql> insert into emp values (7369,'smith','clerk',7902,'1980-12-17',800,null,20,null);
query ok, 1 row affected
mysql> select * from emp;
 ------- ------- ------- ------ ------------ ----- ------ -------- ------ 
| empno | ename | job   | mgr  | hiredate   | sal | comm | deptno | age  |
 ------- ------- ------- ------ ------------ ----- ------ -------- ------ 
|  7369 | smith | clerk | 7902 | 1980-12-17 | 800 | null |     20 | null |
 ------- ------- ------- ------ ------------ ----- ------ -------- ------ 
1 row in set
语法一:
或者表后面带上字段名,一定要注意顺序一致
mysql> insert into emp ( empno, ename, job, mgr, hiredate, sal, comm,deptno,age) values (7499,'allen','salesman',7698,'1981-02-20',1600,300,30,null);
query ok, 1 row affected
mysql> select * from emp;
 ------- ------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- ------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
 ------- ------- ---------- ------ ------------ ------ ------ -------- ------ 
2 rows in set
如果顺序不一致,则会报错
mysql> insert into emp ( empno, ename, job, mgr, hiredate, sal, comm,deptno,age ) values ( 'ward',7521,'salesman',7698,'1981-02-22',1250,500,30,null); 
1366 - incorrect integer value: 'ward' for column 'empno' at row 1

2.2 插入部分数据

在插入部分数据时要注意字段和插入值得对应关系,最重要的是注意下字段的约束条件

---------->>>>案例:在emp表中插入一条记录:empno=7989

mysql> insert into emp(empno) values (7989);
query ok, 1 row affected
mysql> select * from emp;
 ------- ------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- ------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7989 | null  | null     | null | null       | null | null | null   | null |
 ------- ------- ---------- ------ ------------ ------ ------ -------- ------ 
3 rows in set

2.3 多行同时插入

在进行插入时可以多行同时插入,但是要注意字段和值得一致性以及约束条件。

mysql> insert into emp ( empno, ename, job, mgr, hiredate, sal, comm,deptno,age) values 
									  ( 7566,'jones','manager',7839,'1981-04-02',2975,null,20,null),
									 ( 7654,'martin','salesman',7698,'1981-09-28',1250,1400,30,null); 
query ok, 2 rows affected
records: 2  duplicates: 0  warnings: 0
mysql> select * from emp;
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename  | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith  | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen  | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7566 | jones  | manager  | 7839 | 1981-04-02 | 2975 | null |     20 | null |
|  7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 |     30 | null |
|  7989 | null   | null     | null | null       | null | null | null   | null |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
5 rows in set

在插入数据时一定要注意字段的约束条件以及字段与值得对应关系。

当数据表的数据需要更新时,就可以使用update语句进行更新,具体语法:

update table_name
set column1=newvalue1,column2=newvalue2,...
where some_column=some_value;
通俗语法:
update 表名 set  字段名1 = 需要更新的内容1,字段名2 = 需要更新的内容2.............[where  条件]

3.1 不加where条件

当不加where是更新的是全表中改字段的记录,如果此时该字段有约束则可能会报错。

mysql> update emp set empno = 8888;
1062 - duplicate entry '8888' for key 'primary'  因为empno为主键,主键唯一且不能为空,所以在不带where条件时会报错

3.2 加where条件

在使用update语句时最好加上限制条件,否则可能会报错,使数据混乱。

 之前的数据:
  ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename  | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith  | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen  | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7566 | jones  | manager  | 7839 | 1981-04-02 | 2975 | null |     20 | null |
|  7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 |     30 | null |
|  7989 | null   | null     | null | null       | null | 2000 | null   | null |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
5 rows in set
更新操作
 mysql> update emp set empno = 8888 where comm = 2000;
query ok, 1 row affected
rows matched: 1  changed: 1  warnings: 0
mysql> select * from emp;
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename  | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith  | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen  | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7566 | jones  | manager  | 7839 | 1981-04-02 | 2975 | null |     20 | null |
|  7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 |     30 | null |
|  8888 | null   | null     | null | null       | null | 2000 | null   | null |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
5 rows in set

3.3 对多个字段更新

-------------->>>>案例:更新emp表中那个comm=2000的员工的工资sal 和mgr

mysql> update emp set mgr  =7902,sal = 1000 where comm = 2000;
query ok, 1 row affected
rows matched: 1  changed: 1  warnings: 0
mysql> select * from emp;
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename  | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith  | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen  | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7566 | jones  | manager  | 7839 | 1981-04-02 | 2975 | null |     20 | null |
|  7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 |     30 | null |
|  7989 | null   | null     | 7902 | null       | 1000 | 2000 | null   | null |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
5 rows in set

当需要删除某条数据时就可以使用delete语句进行删除。具体语法

delete from table_name
where  column=value;
当不加where条件时,会删除整张表中的数据,但是表的结构不会改变。

4.1 不加where条件

当没加where条件时,会将数据表中的数据全部删除,但是不会删除表的结构,此时表还存在,只不过是一张空表。

mysql> delete from emp;
query ok, 4 rows affected
mysql> select * from emp;
empty set

4.2 加where条件

------------->>>>案例1:删除工资为2000的员工。

mysql> delete from emp where comm=2000;
query ok, 1 row affected
mysql> select *from emp;
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename  | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith  | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen  | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7566 | jones  | manager  | 7839 | 1981-04-02 | 2975 | null |     20 | null |
|  7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 |     30 | null |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
4 rows in set

------------->>>>案例2:删除津贴为空的员工信息。

原始数据:
mysql> select *from emp;
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename  | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7369 | smith  | clerk    | 7902 | 1980-12-17 |  800 | null |     20 | null |
|  7499 | allen  | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7566 | jones  | manager  | 7839 | 1981-04-02 | 2975 | null |     20 | null |
|  7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 |     30 | null |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
执行语句
mysql> delete from emp where comm is null;
query ok, 2 rows affected
执行后的数据
mysql> select * from emp;
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
| empno | ename  | job      | mgr  | hiredate   | sal  | comm | deptno | age  |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
|  7499 | allen  | salesman | 7698 | 1981-02-20 | 1600 |  300 |     30 | null |
|  7654 | martin | salesman | 7698 | 1981-09-28 | 1250 | 1400 |     30 | null |
 ------- -------- ---------- ------ ------------ ------ ------ -------- ------ 
2 rows in set
网站地图