通过阅读本篇文章你将会获得如下数据库知识
三、数据库的建立、数据库普通查询、条件查询、测试题10道
一、 MySQL简介
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
数据库(Database,DB),是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。
数据库管理系统(Database Management Syster,DBMS),用来管理数据库的计算机系统。
DBA:负责数据库的规划、设计、协调、维护和管理等工作
数据库就是一个存放数据的仓库,这个仓库按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失,所以我们就需要将一些程序运行的数据持久化到硬盘之中,以确保数据的安全性。说白了,数据库就是存储数据的仓库
二、MySQL安装、服务启动、链接数据库、数据库中的注释
①mysql安装
这儿我们提供的是MySQL 8.0的版本。百度云提取即可。安装直接在百度上搜索:mysql安装教程。
注意:用户名,密码最好设置成root,防止遗忘。
链接:https://pan.baidu.com/s/1gu967eDmMhugDk5MhQVCfQ
提取码:k1wm
复制这段内容后打开百度网盘手机App,操作更方便哦
②mysql配置文件介绍
这儿我们重点介绍的是my.ini配置文件。
[mysqld]:服务端的配置,可以在这儿修改端口号,默认端口号是3306。
③mysql服务的启动
方式一:右击此电脑,点击管理。手动启动服务或者关闭服务
方式二:命令提示符以管理员的身份启动服务
启动和停止服务:
net stop/start 服务名(不区分大小写)
退出:
③MySQL服务的登录和退出
上面我们已经启动过服务了,现在是数据库用户登录到服务。
④常见的数据库命令
-- 显示所有的数据库,分号结尾
show databases;
-- 使用当前数据库
use database;
--显示表
show tables;
show table from 库名
--查看表的结构
desc table;
--查看数据库版本
select version();
④数据库常见的注释
注意:在使用 -- 作为注释的时候,需要在前面空一格。
三、数据库的建立、数据库普通查询、条件查询
1、我们使用的是myemployees数据库:百度与提取
链接:https://pan.baidu.com/s/15w-MtQDfui6BYNHfq2pwXw
提取码:dmr2
复制这段内容后打开百度网盘手机App,操作更方便哦
对各个表字段的说明:
①员工表employees
②部门表department
③ 位置表locations
④工种表job
2、普通的查询语句
①查询表中单个字段
语法: select 表字段 from 表结构
select last_name from employees;
② 查询表中的多个字段,字段之间用逗号隔开,此逗号为英文的逗号。
select last_name,department_id from employees;
③为字段起别名:
好处:便于理解,如果查询的字段有重名的情况,使用别名区分开来。 别名最好加双引号,防止和关键字冲突。
// 方式一:使用as
select 100 as "结果";
// 方式二:使用空格
select 100 "结果";
④去重,使用distinct关键字,distinct放在需要去重字段的前面
select distinct id from emp;
⑤字符串连接,concat(str1,str2,......)
比如:
-- mysql 里面做字符的拼接使用的是concat(str1,str2)
select concat(name,xing) as 姓名 from table;
-- 查询字段使用逗号隔开
SELECT
CONCAT("employee_id",",","email") "result"
FROM
employees;
// IFNULL(判断的字段,如果为空被赋值的字段)
SELECT IFNULL(commission_pct,0) "奖金率" FROM employees;
3、条件查询语句
ifnull关键字:
ifnull(1,2):如果1的位置为空,那么1位置上的值用2代替
4、测试题
-- 1. 查询工资大于 12000 的员工姓名和工资
SELECT
last_name,salary
FROM
employees
WHERE
salary > 12000;
-- 2. 查询员工号为 176 的员工的姓名和部门号和年薪
SELECT
last_name,
department_id,
salary*12*(1 + IFNULL(commission_pct,0)) AS '年薪'
FROM
employees
WHERE
employee_id = '176';
-- 3. 选择工资不在 5000 到 12000 的员工的姓名和工资
SELECT
last_name,
salary
FROM
employees
WHERE
salary NOT BETWEEN 5000 AND 12000;
-- 4. 选择在 20 或 50 号部门工作的员工姓名和部门号
SELECT
last_name,
department_id
FROM
employees
WHERE
department_id IN ('20','50');
-- 5. 选择公司中没有管理者的员工姓名及 job_id
SELECT
last_name,
job_id
FROM
employees
WHERE
manager_id IS NULL;
-- 6. 选择公司中有奖金的员工姓名,工资和奖金级别
SELECT
last_name,
salary,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;
-- 7. 选择员工姓名的第三个字母是 a 的员工姓名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '__a%';
-- 8. 选择姓名中有字母 a 和 e 的员工姓名
SELECT
last_name
FROM
employees
WHERE
last_name LIKE '%a%e%' OR '%e%a%';
-- 9. 显示出表 employees 表中 first_name 以 'e'结尾的员工信息
SELECT
*
FROM
employees
WHERE
first_name LIKE '%e'
-- 10. 显示出表 employees 部门编号在 80-100 之间 的姓名、职位
SELECT
last_name,
job_id
FROM
employees
WHERE
department_id BETWEEN 80 AND 100;
-- 11. 显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、职位
SELECT
last_name '员工姓名',
job_id '职位id'
FROM
employees
WHERE
manager_id IN ('101','100','110');
5、排序
-- 按照表达式排序,支持别名
SELECT *,salary*12*(1 + IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC
#按照姓名的字节数显示员工的姓名和工资
SELECT LENGTH(last_name) '名字长度',last_name,salary
FROM employees
ORDER BY LENGTH(last_name) DESC;
6、测试
#1. 查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序
SELECT
last_name,
department_id,
salary*12*(1 + IFNULL(commission_pct,0))
FROM
employees
ORDER BY
salary*12*(1 + IFNULL(commission_pct,0)) DESC,
last_name ASC;
#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序
SELECT
last_name,
salary
FROM
employees
WHERE
salary NOT BETWEEN 8000 AND 17000
ORDER BY
salary DESC ;
#3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
SELECT
*
FROM
employees
WHERE
email LIKE '%e%'
ORDER BY
LENGTH(email) DESC,
department_id ASC;