5.2.3插入数据时的默认值处理
如果在插入数据时并未指定该列的值,那么MySQL 会将默认值添加到该列中。如果是 完全项插入需要使用 default 来占位。
示例:
向 emp3 表中添加数据,要求 address 列与job_id 列使用默认值作为该列的值。
insert into emp3 values(default,"oldlu",default,default);
5.3更新数据(UPDATE)
UPDATE 表名 SET 列名=值,列名=值 WHERE 条件;
注意:
更新语句中一定要给定更新条件,否则表中的所有数据都会被更新。
示例:
更新 emp3 表中的 id 为 1 的数据,添加 address 为 BeiJing。
update emp3 set address = "BeiJing" where emp_id = 1;
delete from emp3 where emp_id = 1;
5.4删除数据(DELETE)
5.4.1DELETE删除数据
DELETE FROM 表名 WHERE 条件;
注意:
在DELETE语句中,如果没有给定删除条件则会删除表中的所有数据。
示例:
删除 emp3 表中 emp_id 为 1 的雇员信息。
delete from emp3 where emp_id = 1;
5.4.2TRUNCATE清空表
TRUNCATE TABLE 表名;
示例:
删除 emp3 表中的所有数据。
truncate table emp3;
5.4.3清空表时DELETE与 TRUNCATE 区别
- truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
- truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
- truncate 是会重置自增值,相当于自增列会被置为初始值,又重新从 1 开始记录,而 不是接着原来的值。而 delete 删除以后, 自增值仍然会继续累加。
六、MySQL中的DQL操作
6.1SELECT基本查询
6.1.1SELECT语句的功能
SELECT 语句从数据库中返回信息。使用一个 SELECT 语句,可以做下面的事:
- 列选择:能够使用 SELECT 语句的列选择功能选择表中的列,这些列是想要用查询返回的。当查询时,能够返回列中的数据。
- 行选择:能够使用 SELECT 语句的行选择功能选择表中的行,这些行是想要用查询返回的。能够使用不同的标准限制看见的行。
- 连接:能够使用 SELECT 语句的连接功能来集合数据,这些数据被存储在不同的表中,在它们之间可以创建连接,查询出我们所关心的数据。
6.1.2SELECT基本语法
在最简单的形式中,SELECT 语句必须包含下面的内容:
- 一个 SELECT 子句,指定被显示的列
- 一个 FROM 子句,指定表,该表包含 SELECT 子句中的字段列表
语句 | 含义 |
SELECT | 是一个或多个字段的列表 |
* | 选择所有的列 |
DISTINCT | 禁止重复 |
column | expression | 选择指定的字段或表达式 |
alias | 给所选择的列不同的标题 |
FROM table | 指定包含列的表 |
6.1.3选择所有列
select * from 表名;
示例:
查询 departments 表中的所有数据。
select * from departments;
6.1.4选择指定列
select 列名1,列名2,…… from 表名;
示例:
查询 departments 表中所有部门名称。
select department_name from departments;
6.1.5查询中的算术表达式
需要修改数据显示方式,如执行计算,或者作假定推测,这些都可能用到算术表达式。一个算术表达式可以包含列名、固定的数字值和算术运算符。
示例:
查询雇员的年薪,并显示他们的雇员ID,名字。
select employees_id,last_name, 12*salary from employees;
6.1.6运算符的优先级
6.1.7MySQL中定义空值
如果一行中的某个列缺少数据值,该值被置为 null, 或者说包含一个空。
空是一个难以获得的、未分配的、未知的,或不适用的值。空和 0 或者空格不相同。 0 是一个数字,而空格是一个字符。
6.1.8算数表达式中的空值
6.1.9MySQL中的别名
SELECT 列名 AS 列别名 FROM 表名 WHERE 条件;
示例:
查询 employees 表为表定义别名为emp,将雇员 last_name 列定义别名为 name。
select emp.last_name name from employees emp;
6.1.10MySQL中去除重复
SELECT DISTINCT 列名 FROM 表名;
示例:
查询 employees 表,显示唯一的部门 ID。
select distinct department_id from employees;
6.1.11查询中的行选择
用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个必须满足的条件,WHERE 子句紧跟着 FROM 子句。如果条件是 true,返回满足条件的行。
SELECT * | 投影列 FROM 表名 WHERE 选择条件;
示例:
查询 departments 表中部门 ID 为 90 的部门名称与工作地点 ID。
select department_name,location_id from departments where department_id =4;
6.1.12MySQL中的比较条件
符号 != 也能够表示 不等于条件。
示例一:
查询 employees 表中员工薪水大于等于 3000 的员工的姓名与薪水。
select last_name,salary from employees where salary >= 3000;
6.1.13其他比较条件
使用BETWEEN条件(包含两侧)
可以用 BETWEEN 范围条件显示基于一个值范围的行。指定的范围包含一个下限和一个上限。
示例:
查询 employees 表,薪水在 3000-8000 之间的雇员ID、名字与薪水。
select employee_id,last_name,salary from employees where salary between 3000 and 8000;
使用IN条件
示例:
查询 employees 表,找出薪水是 5000,6000,8000 的雇员ID、名字与薪水。
select employee_id,last_name,salary from employees where salary in(5000,6000,8000);
使用LIKE条件
示例:
查询 employees 中雇员名字第二个字母是 e 的雇员名字。
select last_name from employees where last_name like '_e%';
使用NULL条件
NULL 条件,包括 IS NULL 条件和 IS NOT NULL 条件。
IS NULL 条件用于空值测试。空值的意思是难以获得的、未指定的、未知的或者不适用的。因此,你不能用 = ,因为 null 不能等于或不等于任何值。
示例一:
找出 emloyees 表中那些没有佣金的雇员雇员ID、名字与佣金。
select employee_id,last_name,commission_pct from employees where commission_pct is null