1.什么是数据库

DB(电子化的文件柜):安装在操作系统之上的软件 概念:数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 作用:存储数据、管理数据

1.1、数据库分类

关系型数据库(SQL):

  • MySQL,Oracle,SQL Server,DB2,SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储。

非关系型数据库(Not Only SQL):

  • Redis,MongoDB
  • 对象存储,通过对象的自身属性来决定,动态更新。

DBMS(数据库管理系统)

  • 数据库的管理软件,用来科学有效的管理我们的数据,维护和获取数据。
  • MySQL是一个关系型数据库管理系统,属于 Oracle 旗下产品。 MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

1.2、关于MySQL的安装

1.我强烈推荐安装MySQLWorkbench,一开始我也想使用5.7版本用命令行安装,但配置环境时频频报错。 2.关于配置随便搜一下都有,我想提一下要注意的是:先获得管理员权限!! 打开终端输入:sudo open -a "MySQL" 3.这里再推荐一个可视化数据库管理工具:datagrip-link(IDEA的好兄弟,页面美观功能强大) 4.此处再附上一个ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)的解决方法:Link 祝大家都不会遇到配置问题,一次安装成功!

1.3、Mac终端里进入MySQL

1.先在偏好设置里启动mysql服务 2.获取超级权限-->在终端输入代码:sudo su输入完后获取超级权限-->终端显示 sh-3.2# 输入本机密码(Apple ID密码) 3.接着通过绝对路径登陆输入-->/usr/local/mysql/bin/mysql -u root -p 再输入mysql密码 4.登陆成功 5.退出代码quit

2.数据库语言

2.1、SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾;
  2. (比较长的)SQL语句可以使用空格/缩进来增强语句的可读性;
  3. MySQL数据库的SQL语句不区分大小写,关键字建议用大写;
  4. 注释:
    • 单行注释:- -
    • 多行注释:/* */

2.2、SQL分类:DDL、DML、DQL、DCL

1.DDL: Data Definition Language,数据定义语言 它是用于定义和管理 SQL 数据库中的所有对象的语言;DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用; image.png image.png image.png 2.DML: data manipulation language,数据操作语言 它们是SELECT、UPDATE、INSERT、DELETE,就像它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言; 3.DQL: Data Control Language,数据控制语言 它是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL 4.DCL: Data Query Language,数据查询语言 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块: SELECT <字段名表> FROM <表或视图名> WHERE <查询条件> 图例: sql.gif

2.3、数据库的列类型

数值 字符串 时间日期

3.DDL操作

3.1、DDL-数据库操作

SHOW DATABASES; CREATE DATABASE 数据库名; USE 数据库名; SELECT DATABASE(); DROP DATABASE 数据库名;

3.2、DDL-表操作

SHOW TABLES: CREATE TABLES 表名(字段 字段类型,字段 字段类型); DESC 表名; SHOW CREATE TABLE 表名; ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO...; DROP TABLE 表名;

4.DML操作

1.添加数据 关键字:INSERT 2.修改数据 关键字:UPDATE 3.删除数据 关键字:DELETE

5.DQL操作

关键字:SELECT

5.1、DQL-基本查询

1.查询多个字段

select * from employee;
select id, workno, name, gender, age, idcard, workaddress, entrydate from employee;

2.设置别名

-- 起别名(optional)
select workaddress as '工作地址' from employee;

注意:

  • 别名字符串内容外不可以使用单引号,不管搭配什么
  • 只使用双引号时,那么双引号里的别名字符串内容没有限制
  • 不使用双引号时,那么别名字符串内容之间不可以带特殊字符,例如空格

3.去除重复记录(distinct)

-- distinct --> 去除重复记录
select distinct workaddress as '工作地址' from employee;

5.2、条件查询(where)

关键字:WHERE

elect * from employee where idcard is null;
select * from employee where idcard is not null;

select * from employee where age = 20 or age = 24 or age = 29;
select * from employee where age in(20,24,29);

select * from employee where name like '___';
select * from employee where idcard like '%X';

5.3、DQL-聚合函数(count、max、min、avg、sum)

select count(idcard) from employee;

select avg(age) from employee;

select max(age) from employee;
select min(age) from employee;
  • 常见聚合函数:count、max、min、avg、sum
  • 语法:SELECT 聚合函数(字段列表)FROM 表名;
  • 注意:NULL值不参与聚合函数运算。

5.4、DQL-分组查询(group by)

关键字:GROUP BY

-- 根据性别分组,统计男性员工和女性员工的数量
select gender, count(*) from employee group by gender;

-- 根据性别分组,统计男性员工和女性员工的平均年龄
select gender, avg(age) from employee group by gender;

-- 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址;
select workaddress, count(*) from employee where age < 45 group by workaddress having count(*) >= 3;
select workaddress, count(*) as address_count from employee where age < 45 group by workaddress having address_count >= 3;

where和having区别:

  • 执行时机不同;where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。 注意 执行顺序:where > 聚合函数 > having 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

5.5、DQL-排序查询(order by)

1.关键字:ORDER BY

2.排序方式 ASC:升序(默认值)

-- 升序
select * from employee order by age asc;
select * from employee order by age;

DESC:降序 注意:如果多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

-- 降序
select * from employee order by age desc;
select * from employee order by entrydate desc;

5.6、DQL-分页查询(limit)

1.关键字:LIMIT

-- 查询第1页员工数据,每页展示10条记录
select * from employee limit 0,10;
select * from employee limit 10;

-- 查询第2页员工数据,每页展示10条记录
select * from employee limit 10,10;

注意 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数; 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT; 如果查询的是第一页的数据,起始索引可以省略。

5.7、DQL-执行顺序

image.png