本文是课上资料的总结非原创没有转载地址

目录

  • 引言
    • 为什么需要数据库?
    • 数据库和应用程序的关系
  • MySQL基础使用
    • 一、数据库简介
      • 1.1 简介
      • 1.2 常见数据库管理系统
      • 1.3 MySQL卸载
      • 1.4 MySQL5.5安装
      • 1.5 MySQL5.7安装
    • 二、SQL语言
      • 2.1 概述
      • 2.2 SQL语句分类
      • 2.3 DDL操作数据库
        • 2.3.1 创建数据库
        • 2.3.2 查看
        • 2.3.3 修改
        • 2.3.4 删除
        • 2.3.5 其他语句
      • 2.4 DDL操作表
        • 2.4.1 创建表 CREATE TABLE
        • 2.4.2 删除表 DROP TABLE
        • 2.4.3 当前数据库中的所有表 SHOW TABLE
        • 2.4.4 查看表的字段信息 DESC
        • 2.4.5 增加列 ALTER ... ADD
        • 2.4.6 修改列(字段)属性 ALTER ... MODIFY
        • 2.4.7 删除列(字段)ALTER ... DROP
        • 2.4.8 更改表名 RENAME ... TO
        • 2.4.9 查看表的创建细节 SHOW CREATE
        • 2.4.10 修改表的字符集 ALTER ... CHARACTER SET
        • 2.4.11 修改列名(字段名) ALTER ... CHANGE
      • 2.5 DML操作(重要)
        • 2.5.1 插入操作:INSERT
        • 2.5.2 修改操作:UPDATE
        • 2.5.3 删除操作:DELETE
        • ==2.5.4 DELETE和TRUNCATE区别==
      • 2.6 客户端工具
    • 三、DQL数据查询(重点)
      • 3.1 简单查询
      • 3.2 条件查询
        • ==面试题:==
      • 3.3 模糊查询
      • 3.4 字段控制查询
        • 3.4.1 去除重复记录 DISTINCT
        • 查看数据之和 +、CONCAT
        • 给列名添加别名 [AS]
      • 3.5 排序 ORDER BY
      • 3.6 聚合函数
        • 3.6.1 COUNT
        • 3.6.2 SUM和AVG
        • 3.6.3 MAX和MIN
      • 3.7 分组查询 GROUP BY ... HAVING
        • 3.7.1 分组查询 GROUP BY
        • 3.7.2 HAVING子句 GROUP BY ... HAVING
        • ==3.7.3 HAVING 和 WHERE 的区别==
      • 3.8 LIMIT限制
        • 3.8.1 分页查询
  • 总结
  • 作业题
  • 面试题

引言

为什么需要数据库?

Java中保存数据需要使用集合或数组,但使用集合或数组程序关闭后,所有的数据全部丢失,如何才能持久化保存数据呢?

  1. 文件:存储少量数据,没有严格的格式;
  2. 网盘:需要网络,存储少量数据,没有严格的格式;
  3. 数据库:存储大量数据,按照一定格式存储。

数据库和应用程序的关系

数据库是存放数据的仓库,应用程序主要给用户一个可视的界面以及相关的功能,二者相辅相成。

MySQL基础使用

一、数据库简介

1.1 简介

  • 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。简单理解数据的仓库。
  • 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,堆数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据中的数据。
  • 数据库是通过数据库管理系统创建和操作的。

1.2 常见数据库管理系统

  • 关系型数据库管理系统(RDBMS,Relational Database Management System)

    1. Oracle:Oracle数据库被认为是业界目前比较成功的关系型数据库管理系统。Oracle数据库可以运行UNIX、Windows等主流操作系统平台,完全支持所有的工业标准,并获得最高级别的ISO标准安全性认证。
    2. MySQL:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL是最好RDBMS(Relational Database Management System,关系数据库管理系统)应用软件。
    3. DB2:DB2是IBM公司的产品,DB2数据库系统采用多进程多线索体系结构,其功能足以满足大中公司的需要,并可灵活的服务于中小型电子商务解决方案。
    4. Microsoft SQL Server:SQL Server 是 Microssft公司退出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高的优点。
    5. SQLite:应用在手机端的数据库。
    6. 国产数据库,阿里目前自研数据库分为两个支线,OceanBasePOLARDB
  • 非关系型数据库管理系统(NoSQL)

    Redis、MongoDB等

1.3 MySQL卸载

  1. 关闭MySQL服务

    方式1:win+R -> service.msc -> 关闭MySQL相关服务

    方式2:命令停止

    cmd管理员启动 -> net stop 服务名(默认mysql57)
  2. 控制面板卸载(相关MySQL均卸载)
  3. 删除C盘残留文件(Program Files、Program Files(x86)、ProgramData)
  4. 检查服务是否删除成功(第一步可查看)
  5. 如果未删除服务,手动删除

    使用管理员身份进入cmd命令行,执行:sc delete 服务名

1.4 MySQL5.5安装

  • 安装和配置步骤









































  • 启动MySQL服务
    1. win+R -> service.msc -> 启动MySQL相关服务
    2. 命令停止

      cmd管理员启动 -> net start 服务名(默认mysql57)
  • 验证是否安装成功

    win+R -> cmd -> mysql -uroot -p -> 回车后输入密码
  • 卸载MySQL
    1. 停止服务,使用net stop 服务名命令停止服务。
    2. 在控制面版–>“程序和功能”中,找到“MySQL”程序,点击卸载。
    3. 删除安装目录,一般默认在C:\Program Files\MySQL。
    4. 删除数据库文件 存放目录,一般默认在C:\ProgramData\MySQL

注意:

(1)在运行窗口中,输入services.msc,打开服务窗口查看是否还有“MySQL”服务。

(2)如果卸载后,发现MySQL服务没有删除,手动删除:以管理员身份打开命令行,输入sc delete 服务名

  • MySQL安装目录

    bin文件夹:改文件夹下存放着可执行文件

    include文件夹:该文件夹下存放着头文件

    lib文件夹:该文件夹下存放着库文件

    share文件夹:该文件夹下存放着字符集、语言等信息。
  • MySQL配置文件

    在MySQL安装目录中找到my.ini文件,并打开查看几个常用配置参数
常用的参数名 描述
default-character-set 客户端默认字符集
character-set-server 服务器端默认字符集
port 客户端和服务器端的端口号
default-storage-engine MySQL默认存储引擎 INNODB

1.5 MySQL5.7安装

  • 卸载

    (1)停止服务 net stop mysql57 (2)安装和卸载程序 卸载mysql项目 (3)删除残留文件 C:\ProgramData

注意:

如果MySQL57服务没有删除成功,请手动删除:使用管理原身份进入命令行:sc delete 服务名

  • 安装

    同意协议



    仅仅服务器模式



    请选择安装的位置,如果修改请记住位置,点击下一步



    点击Execute执行



    显示执行进度,请等待执行完毕。



    执行完毕,点击下一步。



    安装完成后,开始准备配置



    进行第一步配置,除了需要设置密码外,后面的步骤基本上都是下一步下一步





    设置 root 密码











    最后一步。把mysql安装目录添加到环境变量,方便使用命令。



  • 验证是否安装成功

    打开:Command Line Client输入root的账号和密码能进入,安装成功。

    修改密码:`set password for ‘root’@‘localhost’=password(‘新密码’);```
  • 安装目录介绍

    bin:二进制文件

    dosc:存放文档

    include:头文件

    lib:链接库

    share:语言文件

    C:\ProgramData\MySQL\MySQL Server 5.7 存放数据库的目录和配置
  • my.ini设置编码

    设置数据库默认编码:default-character-set=utf8mb4

    设置服务器编码:character-setserver=utf8mb4
  • 服务的停止和服务

    (1)使用windows的服务界面停止和启动MySQL57

    (2)管理员命令行停止
# 停止服务
net stop MySQL57
# 启动服务
net start MySQL57
  • 把MySQL的bin目录添加环境变量

    C:\Program Files\MySQL\MySQL Server 5.7\bin添加到path中

    打开命令提示符:(1)输入mysql -uroot -p 回车(2)输入密码

二、SQL语言

2.1 概述

  • SQL:Structure Query Language(结构化查询语言),用来访问和处理数据库的标准计算机语言。后来被国际化标准组织(ISO)采纳为关系型数据库语言的国际标准。
  • SQL作用:SQL是一种标准化的语言,它允许你在数据库上执行操作,如创建数据库、表等等,查询内容,更新内容,并删除条目等操作;CRUD(Create、Read、Update、Delete)操作。
  • 大部分数据库厂商都支持ISO的SQL标准,但是数据库厂商在标准的基础上做了自己的扩展,称为方言

2.2 SQL语句分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。
  • DML(Data Manipulation Language):数据库操作语言,用来定义数据库记录(数据)。
  • DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。

MySQL语法这主意事项:

MySQL每条结尾以“;”结尾。

MySQL语句不区分大小写。

MySQL字符串使用单引号双引号

MySQL注释:(1)单行注释:#开头或者--空格开头(2)多行注释/*多行注释*/

2.3 DDL操作数据库

  • 显示当前MySQL中的数据库
# 显示当前MySQL中的数据库
SHOW DATABASES;

系统默认数据库:

数据库名 描述
information_schema information_schema数据库是MySQL自带的,他提供了访问数据库元数据 1的方式。
mysql 这是个MySQL的核心数据库,主要负责存储数据库的用户、权限设置、关键字等MySQL自己需要使用的控制和管理信息,不可删除。
performance_schema 收集数据库服务器性能参数,性能优化的数据库。
test(5.5版本) 这个是安装时候创建的一个测试数据库,和它的名字一样,是一个完全的空数据库,没有任何表,可以删除。
sys(5.7版本) sys系统数据库,保存系统的元数据信息,数据来源information——schema库。
这个库可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助。

2.3.1 创建数据库

CREATE DATABASE语句用于创建新的数据库:

  • 语法
CREATE DATABASE [IF NOT EXISTS] db_name;
  • 练习:
# 创建mydb1数据库
CREATE DATABASE mydb1;
# 创建GBK字符集的mydb2数据库
CREATE DATABASE IF NOT EXISTS mydb2 character SET GBK;
# 创建字符集为GBK,校验规则是gbk_chinese_ci的mydb3数据库
CREATE DATABASE mydb3 character SET GBK COLLATE gbk_chinese_ci;

2.3.2 查看

  • 查看当前数据库服务器中的所有数据库
SHOW DATABASES;
  • 查看前面创建的mydb2数据库定义信息
SHOW CREATE DATABASE mydb2;

2.3.3 修改

  • 查看服务器中的数据库,并把mydb2的字符集修改为utf8;
ALTER DATABASE mydb2 character SET utf8;

2.3.4 删除

  • 语法
DROP DATABASE [IF EXISTS] db_name;
  • 练习:
# 判断mydb3数据库是否存在存在就直接删除
DROP DATABASE IF EXISTS mydb3;

2.3.5 其他语句

  • 查看当前使用的数据库
SELECT DATABASES();	# 没有选择数据 null
  • 切换数据库
USE mydb2;
  • 退出MySQL
quit;
# OR
exit;
# OR
\q

2.4 DDL操作表

2.4.1 创建表 CREATE TABLE

  • CREATE TABLE语句用于创建新表。
  • 语法
CREATE TABLE [IF NOT EXISTS] db_name(
字段1 字段类型(长度) 约束,
字段2 字段类型(长度) 约束,
...
字段n 字段类型(长度) 约束
)[CHARSET=utf8];
  • 实例:
CREATE TABLE IF NOT EXISTS student(
id INT NOT NULL,
name VARCHAR(50),
age INT,
address VARCHAR(100)
) CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `student`(
`id` INT NOT NULL,
`name` VARCHAR(50),
`age` INT,
`address` VARCHAR(100)
)CHARSET=utf8;

注意:数据库名、表名、字段名可以使用反勾号“`”括住,也可以不括。如果SQL关键字或者数字开头标识符一般要括住。

反勾号即键盘ESC下方的案结案

  • 常用数据类型
数据类型名称 描述
int 整型(4个字节)
double 浮点想(8个字节),近似值
例如double(5,2)表示最多5位,其中必须由2位小鼠,取值范围位-999.99到999.99。
decimal 精确数值数据,最大位数可以是65
例如decimal(5,2)能够存储具有五位数和两位小数的任何值,因此可以存储范围位-999.99至999.99。
char 固定长度字符串类型;
char(10)——'aaa '最多存储10个字符
缺点:浪费空间;优点:查询速度快。
varchar 可变长度字符串类型;
varchar(10)——'aaa’最多存储10个字符
缺点:查询速度慢;优点:节省空间。
text 大文本字符串类型;有字符编码,存储比较大的文本数据。
blob Binary Large Object二进制大对象数据;可以存储图片、音频、视频。
date 日期类型,格式为:yyyy-MM-dd。
time 时间类型,格式为:hh:mm:ss。
timestamp 时间戳类型yyyy-MM-dd hh:mm:ss会自动赋值。
datetime 日期时间类型yyyy-MM-dd hh:mm:ss。

2.4.2 删除表 DROP TABLE

  • DROP TABLE语句用于删除现有表。
  • 语法
DROP TABLE [IF EXISTS] table_name;

2.4.3 当前数据库中的所有表 SHOW TABLE

SHOW TABLES;

2.4.4 查看表的字段信息 DESC

  • 语法
DESC table_name;
  • 练习:查询student表的字段信息
DESC student;

2.4.5 增加列 ALTER … ADD

  • 语法
ALTER TABLE table_name ADD 列名(字段名) 数据类型;
  • 练习:在上面学生表的基础上增加一个image列(数据类型blob)
# 在上面学生表的基础上增加一个image列(数据类型blob)
ALTER TABLE student ADD image blob;

2.4.6 修改列(字段)属性 ALTER … MODIFY

  • 语法
ALTER TABLE table_name MODIFY 列名(字段名) 数据类型;
  • 练习:修改student表中address列,使其长度为60
# 修改student表中address列,使其长度为60
ALTER TABLE student MODIFY address varchar(60);

2.4.7 删除列(字段)ALTER … DROP

  • 语法
ALTER TABLE table_name DROP 列名(字段名);
  • 练习:删除student表中image列,一次只能删除一列
# 删除student表中image列,一次只能删除一列
ALTER TABLE student DORP image;

2.4.8 更改表名 RENAME … TO

  • 语法
RENAME TABLE old_table_name TO new_table_name;
  • 练习:把student表名改为user
# 把student表名改为user
RENAME TABLE student TO `user`;

2.4.9 查看表的创建细节 SHOW CREATE

  • 语法
SHOW CREATE TABLE table_name;
  • 练习:查看user表的创建细节
# 查看user表的创建细节
SHOW CREATE TBALE user;

2.4.10 修改表的字符集 ALTER … CHARACTER SET

  • 语法
ALTER TABLE table_name CHARACTER SET 字符集;
  • 练习:修改user表的字符集为gbk
# 修改user表中的字符集为gbk
ALTER TABLE user CHARACTER SET gbk;

2.4.11 修改列名(字段名) ALTER … CHANGE

  • 语法
ALTER TABLE table_name CHANGE old列名 new列名 数据类型;
  • 练习:将user表中name列名改为username
# 将user表中name列名改为username
ALTER TABLE user CHANGE name username varchar(100);

2.5 DML操作(重要)

DML是对表中的数据进行增、删、改的操作。不要与DDL混淆了。

主要包括:INSERT、UPDATE、DELETE

  • 小知识

    在MySQL中,字符串类型和日期类型都要用单引号括起来。

    空值:null
  • 被操作表
CREATE TABLE student(
id INT NOT NULL,
name VARCHAR(50),
age INT

2.1 MySQL基础使用的更多相关文章

  1. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  2. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  3. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  4. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  5. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  6. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

  7. MySQL:基础—数据分组

    MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...

  8. MySQL基础学习总结

    1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...

  9. MySQL基础(五)——视图

    MySQL基础(五)--视图

  10. MySQL基础(四)——索引

    MySQL基础(四)--索引

随机推荐

  1. C#中DataSet、SqlDataAdapter的使用-关于数据库操作

    本文链接:https://blog.csdn.net/xubaifu1997/article/details/51816785 DataSet 表示数据在内存中的缓存. 我的理解是,在内存中的数据表, ...

  2. nfs 动态文件挂载读写权限设置

    nfs 动态文件挂载读写权限设置 待办 ll 命令查看文件夹权限 参考设置共享文件夹https://www.linuxidc.com/Linux/2018-11/155331.htm

  3. 深度学习之tensorflow框架(中)

    会话 开启会话 tf.Session用于完整的程序中 tf.InteractiveSession用于交互式上下文中的tensorflow 查看张量的值 都必须在会话里面 c_new_value=new ...

  4. Linux实现树莓派3B的国密SM9算法交叉编译——(二)miracl库的测试与静态库的生成

    先参考这篇文章 Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署.简单测试与eclipse工程项目测试 部署好环境,并简单测试交叉编译环境是否安装成功,最后实现在Eclipse上进行 ...

  5. 解决wps for linux缺失windows字体

    操作步骤 1.下载缺失字体 链接: https://pan.baidu.com/s/1ZUbtQ96b8RVbH0LrXb_GlQ  密码: nsr4 2.解压字体 unzip wps-font-sy ...

  6. 连接查询:inner join,left join,right join

    感谢原创:https://blog.csdn.net/plg17/article/details/78758593 准备工作: 1)新建两张表a_table和b_table: create table ...

  7. http://localhost:8080/sockjs-node/info?t=1556418283950 net:: ERR_CONNECTION_REFUSED(亲测有效~!)

    如果你的项目没有用到sockjs,vuecli3 运行npm run serve 之后network里面一直调用一个接口:http://localhost:8080/sockjs-node/info? ...

  8. SVN代码迁移到GITlab

    ==================================================================================================== ...

  9. linux 磁盘100% 清理

    df -h  查看磁盘使用有一个vdb满了 df   -i 查看inode 使用率 显示文件大小: du -sh /* du参数: -a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而 ...

  10. 蓝桥杯2016年省赛C/C++大学A组

    网友年龄 某君新认识一网友. 当问及年龄时,他的网友说: "我的年龄是个2位数,我比儿子大27岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄" 请你计算:网友的年龄一 ...