忙东忙西断断续续停了一个月,争取这周之前把数据库部分写完,不能再拖延了~
目录
一、SELECT基本查询
1. SELECT语句的功能
SELECT 语句从数据库中返回信息。使用一个 SELECT 语句,可以做下面的事:
-
列选择:能够使用 SELECT 语句的列选择功能选择表中的列,这些列是想要用查询返回的。当查询时,能够返回列中的数据。
-
行选择:能够使用 SELECT 语句的行选择功能选择表中的行,这些行是想要用查询返回的。能够使用不同的标准限制看见的行。
-
连接:能够使用 SELECT 语句的连接功能来集合数据,这些数据被存储在不同的表中,在它们之间可以创建连接,查询出我们所关心的数据。
2. SELECT基本语法
3. 基本 SELECT 语句
在最简单的形式中,SELECT 语句必须包含下面的内容:
-
一个 SELECT 子句,指定被显示的列
-
一个 FROM 子句,指定表,该表包含 SELECT 子句中的字段列表
在语法中:
语句 | 含义 |
---|---|
SELECT | 是一个或多个字段的列表 |
* | 选择所有的列 |
DISTINCT | 禁止重复 |
column | expression | 选择指定的字段或表达式 |
alias | 给所选择的列不同的标题 |
FROM table | 指定包含列的表 |
二、查询中的列选择
1. 选择所有列
用跟在 SELECT 关键字后面的星号 (*),你能够显示表中数据的所有列。
示例:查询 departments 表中的所有数据。
select * from departments;
2. 选择指定列
能够用 SELECT 语句来显示表的指定列,指定列名之间用逗号分隔。
示例:查询 departments 表中所有部门名称。
select department_name from departments;
可以用DESC命令看到表的结构
desc departments;
三、查询中的算术表达式
需要修改数据显示方式,如执行计算,或者作假定推测,这些都可能用到算术表达式。一个算术表达式可以包含列名、固定的数字值和算术运算符。
1. 使用算术运算符
示例:查询雇员的年薪,并显示他们的雇员ID,名字。
select employee_id,last_name, 12*salary from employees;
2. 运算符的优先级
如果算术表达式包含有一个以上的运算,乘法和除法先计算。如果在一个表达式中的运算符优先级相同,计算从左到右进行。可以用圆括号强制其中的表达式先计算。
示例一:计算 employees 表中的员工全年薪水加 100 以后的薪水是多少,并显示他们的员工ID与名字。
select employees_id,last_name, 12*salary+100 from employees;
示例二:计算 employees 表中的员工薪水加 100 以后的全年薪水是多少,并显示他们的员工ID与名字。
select employees_id,last_name, 12*(salary+100) from employees;
四、MySQL中定义空值
如果一行中的某个列缺少数据值,该值被置为 null, 或者说包含一个空。
空是一个难以获得的、未分配的、未知的,或不适用的值。空和 0 或者空格不相同。 0 是一个数字,而空格是一个字符。
1. 算术表达式中的空值
示例:计算年薪包含佣金。
select 12*salary*commission_pct from employees;
五、MySQL中的别名
1. 使用列别名
SELECT 列名 AS 列别名 FROM 表名 WHERE 条件;
示例:查询 employees 表将雇员 last_name 列定义别名为 name。
select last_name as name from employees;
select last_name name from employees;
2. 使用表别名
SELECT 表别名.列名 FROM 表名 as 表别名 WHERE 条件;
示例:查询 employees 表为表定义别名为emp,将雇员 last_name 列定义别名为 name。
select emp.last_name name from employees emp;
六、MySQL中去除重复
1. 除去相同的行
SELECT DISTINCT 列名 FROM 表名;
示例:查询 employees 表,显示唯一的部门 ID。
select distinct department_id from employees;
select distinct department_id,salary from employees;
七、查询中的行选择
用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个必须满足的条件,WHERE 子句紧跟着 FROM 子句。如果条件是 true,返回满足条件的行。
在语法中:
WHERE 限制查询满足条件的行
condition 由列名、表达式、常数和比较操作组成
SELECT * | 投影列 FROM 表名 WHERE 选择条件;
示例:查询 departments 表中部门 ID 为 90 的部门名称与工作地点 ID。
select department_name,location_id from departments where department_id =90;
八、MySQL中的比较条件
符号 != 也能够表示 不等于条件。
示例一:查询 employees 表中员工薪水大于等于 3000 的员工的姓名与薪水。
select last_name,salary from employees where salary >= 3000;
示例二:查询 employees 表中员工薪水不等于 5000 的员工的姓名与薪水
select last_name,salary from employees where salary<>5000;
九、其它比较条件
1. 使用BETWEEN条件
示例:查询employees表,薪水在3000-8000之间的雇员ID、名字与薪水。
select employee_id,last_name,salary from employees
where salary between 3000 and 8000;
2. 使用IN条件
示例:查询employees表,找出薪水是5000,6000,8000的雇员ID、名字与薪水。
select employee_id,last_name,salary from employees
where salary in (5000,6000,8000);
3. 使用LIKE条件
示例:查询employees中雇员名字第二个字母是e的雇员名字。
select last_name from employees
where last_name like '_e%';
4. 使用NULL条件
NULL条件,包括ISNULL条件和IS NOT NULL条件。
lS NULL条件用于空值测试。空值的意思是难以获得的、未指定的、未知的或者不适用的。因此,不能用=,因为null不能等于或不等于任何值。
示例一:找出emloyees表中那些没有佣金的雇员雇员ID、名字与佣金。
select employee_id,last_name,commission_pct from employees
where commission_pct is null;
示例二:找出emloyees表中那些没有佣金的雇员雇员ID、名字与佣金。
select employee_id,last_name,commission_pct from employees
where commission_pct is not null;
一、SQL文件的导入(Navicat)
添加测试数据,将data.sql文件(提取码:6767)通过Navicat导入到MySQL中itbz数据库中。该文件包含了下文中所使用的案例表。
二、查询中的列选择(Navicat)
1. 查询所有列
示例:查询 departments 表中的所有数据。
2. 查询指定列
示例:查询 departments 表中所有部门名称。
3. 使用算术运算符
示例:查询雇员的年薪,并显示他们的雇员ID,名字。
示例一:计算 employees 表中的员工全年薪水加 100 以后的薪水是多少,并显示他们的员工ID与名字。
示例二:计算 employees 表中的员工薪水加 100 以后的全年薪水是多少,并显示他们的员工ID与名字。
三、MySQL中定义空值(Navicat)
示例:计算年薪包含佣金。