1、保存数据的容器
- 数组、集合等,把数据保存到内存,缺点一断电就没了。
- 文件,保存到硬盘,缺点不太适合查询。
2、数据库的好处
- 实现数据持久化
- 使用完整的管理系统统一管理,易于查询。
3、概念
- DB:数据库,存储了大量有组织的数据
- DBMS:数据库管理系统,数据库是通过数据库管理系统创建和操作的容器
常见的DBMS:Mysql,DB2,Oracle,sqlServer。 - sql 结构化查询语言,专门用来与数据库通信的语言。特点:几乎所有dbms都支持sql
4、Mysql的卸载
1、控制面板卸载Mysql
2、找到安装Mysql的安装路径,整个删除
3、找到c盘的ProgramData的隐藏文件夹里找到Mysql,整个删除
4、最后还是装不上就清空注册表
image.png
5、Mysql安装
typical,自带服务端和自带的客户端
custom,自定义。一般选自定义
按照之后,mysql配置一直下一步就行了。
选择字符集
image.png
运行dos命令行方式去操作mysql,把bin加入path
image.png
设置密码,并且允许远程机访问
image.png
6、Mysql启动与停止
- 计算机,管理服务
- 命令行方式,管理员方式启动cmd,
输入net stop Mysql名称或者net start Mysql名称。
7、连接mysql,端口要大写,与密码区分,退出mysql。
mysql -h localhost -P 3306 -u root -p 123456
exit或者ctrl c
8、mysql常用命令
查看当前所有的数据库
show databases;
打开指定的库
use 库名;
查看当前数据库的所有表
show tables;
查看其他库的所有表
show tables from 库名;
查看当前的数据库
select database();
查看表结构
desc 表名;
查看mysql服务器版本
select version();
9、Mysql的语法规范
- 不区分大小写 建议关键字大写,表名列名小写
- 每条命令分号结尾或者/g
- 如果要换行,关键字在一行
- 注释
单行
#注释文字
-- 注释文字(注意要有空格)
多行
/** 注释文字 **/
10、图形化的常用操作
查询然后写sql语句之后可以保存到.sql文件里。
调整sql语句字体,按住ctrl+鼠标的滚动
11、sql的分类
- DQL Data Query Language
基础查询
条件查询
排序查询
常见函数
分组函数
分组查询
连接查询
子查询
分页查询
union联合查询 - DML Data Manipulation Language
插入语句
删除语句
修改语句 - DDL Data Definition Language
库和表的管理
常见数据类型介绍
常见约束 - TCL Transaction Control Language
事务和事务处理 - DQL也可以包含在DML里。
- 视图,存储过程,函数,流程控制结构这些属于psql部分。
12、
-
员工表employees
员工编号,名,姓,邮箱,电话号码,工种编号,月薪,奖金率,上级领导的员工编号,部门编号,入职时间。
其中,job_id和manager_id和department_id使用id,而不用部门名字,减少了数据冗余,节省空间
image.png -
部门表department
部门编号,部门名字,部门领导的员工编号,位置编号。
-
位置表location
位置编号,街道,邮编,城市,州/省,国家编号
image.png -
工种表job
工种编号,工种名称,最低工资,最高工资
image.png
13、基础查询
# 进阶1:基础查询
/*
语法:
select 查询列表(可以多个) from 表名
特点:
1、查询列表可以是:表中的字段,常量值,表达式,函数
2、查询的结果是一个虚拟的表格
*/
USE employees;
#1、查询单个字段
SELECT last_name FROM employees;
#2、查询表中的多个字段
SELECT last_name,salary,email FROM employees;
#3、查询表中的所有字段
#sqlyog这个可以靠点左边某个字段就会自动加上,navicat找不到在哪点
#按住f12可以自动对齐,f9运行,*号缺点只能按照它的顺序查出来
SELECT
`first_name`,
`last_name`,
`email`,
`job_id`,
`phone_number`,
`salary`,
`commission_pct`
FROM
employees ;
SELECT * FROM employees;
# 4、查询的字段可以加着重号或者不加,记住不是单引号,加了只为了区别关键字
# 例如有个name字段,而关键字也有name,加了就可以区分了。
# 5、想要执行哪条命令鼠标选中就行
# 6、查询常量值,就不用选择表
SELECT 100;
SELECT 'John';
# 7、查询表达式
SELECT 100/10;
# 8、查询函数
SELECT VERSION();
# 9、为我们字段起别名,注意别起关键字,如果使用关键字使用双引号括起来
/*
1、便于理解
2、如果要查询的字段有重名例如连表查询,可以使用别名区分开来
方式一:AS
方式二:空格
*/
SELECT 100/10 AS 结果;
SELECT last_name 姓, first_name 名 FROM employees;
SELECT last_name AS 姓, first_name AS 名 FROM employees;
# 10、去重
# 案例:查询员工表中涉及的所有员工部门编号
SELECT department_id FROM employees;
SELECT DISTINCT department_id FROM employees;
# 11、+号的作用
# 案例:查询员工名和姓连接成一个字段,并显示姓名
/*
mysql的加号只有一个功能,运算符,所以下面虽然不报错但是查询出来为0。
SELECT 100+90; 两个操作数做+法运算
SELECT '123' + 90; 如果有字符型就将字符型转换为数字,如果转换成功就做加法运算
如果转换失败,字符串转换为0然后再做加法运算
select null+10; 只要一方为null,结果为null
*/
SELECT last_name+first_name AS 姓名 FROM employees;
# 12、真正的拼接,concat函数
SELECT CONCAT(last_name, first_name) AS 姓名 FROM employees;
# 13、基础查询的案例
#下面的语句是否可以执行成功
SELECT last_name , job_id , salary AS sal
FROM employees;
#下面的语句是否可以执行成功
SELECT * FROM employees;
# 找出下面语句中的错误
# 逗号和双引号都要英文下的
SELECT employee_id , last_name,
salary * 12 AS “ANNUAL SALARY”
FROM employees;
# 显示表departments的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM `departments`;
# 显示出表employees中的全部job_id(不能重复)
SELECT DISTINCT job_id FROM employees;
# 显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
# concat拼接如果有null最后会显示null,需要使用ifnull函数判断
SELECT
IFNULL(commission_pct,0) AS 奖金率,
commission_pct
FROM
employees;
#-------------------------------------------
SELECT
CONCAT(`first_name`,',',`last_name`,',',`job_id`,',',IFNULL(commission_pct,0)) AS out_put
FROM
employees;