2.1 MySQL基础使用
本文是课上资料的总结非原创没有转载地址
目录
- 引言
- 为什么需要数据库?
- 数据库和应用程序的关系
- 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中保存数据需要使用集合或数组,但使用集合或数组程序关闭后,所有的数据全部丢失,如何才能持久化保存数据呢?
- 文件:存储少量数据,没有严格的格式;
- 网盘:需要网络,存储少量数据,没有严格的格式;
- 数据库:存储大量数据,按照一定格式存储。
数据库和应用程序的关系
数据库是存放数据的仓库,应用程序主要给用户一个可视的界面以及相关的功能,二者相辅相成。
MySQL基础使用
一、数据库简介
1.1 简介
- 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。简单理解数据的仓库。
- 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,堆数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据中的数据。
- 数据库是通过数据库管理系统创建和操作的。
1.2 常见数据库管理系统
- 关系型数据库管理系统(RDBMS,Relational Database Management System)
- Oracle:Oracle数据库被认为是业界目前比较成功的关系型数据库管理系统。Oracle数据库可以运行UNIX、Windows等主流操作系统平台,完全支持所有的工业标准,并获得最高级别的ISO标准安全性认证。
- MySQL:MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL是最好RDBMS(Relational Database Management System,关系数据库管理系统)应用软件。
- DB2:DB2是IBM公司的产品,DB2数据库系统采用多进程多线索体系结构,其功能足以满足大中公司的需要,并可灵活的服务于中小型电子商务解决方案。
- Microsoft SQL Server:SQL Server 是 Microssft公司退出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高的优点。
- SQLite:应用在手机端的数据库。
- 国产数据库,阿里目前自研数据库分为两个支线,OceanBase和POLARDB。
- 非关系型数据库管理系统(NoSQL)
Redis、MongoDB等
1.3 MySQL卸载
- 关闭MySQL服务
方式1:win+R -> service.msc -> 关闭MySQL相关服务
方式2:命令停止
cmd管理员启动 ->net stop 服务名(默认mysql57)
- 控制面板卸载(相关MySQL均卸载)
- 删除C盘残留文件(Program Files、Program Files(x86)、ProgramData)
- 检查服务是否删除成功(第一步可查看)
- 如果未删除服务,手动删除
使用管理员身份进入cmd命令行,执行:sc delete 服务名
1.4 MySQL5.5安装
- 安装和配置步骤:
- 启动MySQL服务
- win+R -> service.msc -> 启动MySQL相关服务
- 命令停止
cmd管理员启动 ->net start 服务名(默认mysql57)
- 验证是否安装成功
win+R -> cmd ->mysql -uroot -p
-> 回车后输入密码 - 卸载MySQL
- 停止服务,使用
net stop 服务名
命令停止服务。 - 在控制面版–>“程序和功能”中,找到“MySQL”程序,点击卸载。
- 删除安装目录,一般默认在C:\Program Files\MySQL。
- 删除数据库文件 存放目录,一般默认在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基础使用的更多相关文章
- Mysql基础代码(不断完善中)
Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- 【夯实Mysql基础】记一次mysql语句的优化过程
1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...
- MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- mysql 基础篇5(mysql语法---数据)
6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...
- MySQL 基础语句
MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...
- MySQL:基础—数据分组
MySQL:基础-数据分组 1.为什么要分组: 比如一个表中有多条订单记录,如上图,每条记录对应着一个商品,现在我要查询 每个商品被订购的单数 准备出货?也就是找到每个商品被订购的数量. 如果只找一个 ...
- MySQL基础学习总结
1.MySQL基础概念 mysql逻辑架构如下: 每个客户端连接都会在服务器中拥有一个线程,这个连接的查询只会在这个单独的线程中执行. MySQL是分层的架构.上层是服务器层的服务和查询执行引擎,下层 ...
- MySQL基础(五)——视图
MySQL基础(五)--视图
- MySQL基础(四)——索引
MySQL基础(四)--索引
随机推荐
- C#中DataSet、SqlDataAdapter的使用-关于数据库操作
本文链接:https://blog.csdn.net/xubaifu1997/article/details/51816785 DataSet 表示数据在内存中的缓存. 我的理解是,在内存中的数据表, ...
- nfs 动态文件挂载读写权限设置
nfs 动态文件挂载读写权限设置 待办 ll 命令查看文件夹权限 参考设置共享文件夹https://www.linuxidc.com/Linux/2018-11/155331.htm
- 深度学习之tensorflow框架(中)
会话 开启会话 tf.Session用于完整的程序中 tf.InteractiveSession用于交互式上下文中的tensorflow 查看张量的值 都必须在会话里面 c_new_value=new ...
- Linux实现树莓派3B的国密SM9算法交叉编译——(二)miracl库的测试与静态库的生成
先参考这篇文章 Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署.简单测试与eclipse工程项目测试 部署好环境,并简单测试交叉编译环境是否安装成功,最后实现在Eclipse上进行 ...
- 解决wps for linux缺失windows字体
操作步骤 1.下载缺失字体 链接: https://pan.baidu.com/s/1ZUbtQ96b8RVbH0LrXb_GlQ 密码: nsr4 2.解压字体 unzip wps-font-sy ...
- 连接查询:inner join,left join,right join
感谢原创:https://blog.csdn.net/plg17/article/details/78758593 准备工作: 1)新建两张表a_table和b_table: create table ...
- http://localhost:8080/sockjs-node/info?t=1556418283950 net:: ERR_CONNECTION_REFUSED(亲测有效~!)
如果你的项目没有用到sockjs,vuecli3 运行npm run serve 之后network里面一直调用一个接口:http://localhost:8080/sockjs-node/info? ...
- SVN代码迁移到GITlab
==================================================================================================== ...
- linux 磁盘100% 清理
df -h 查看磁盘使用有一个vdb满了 df -i 查看inode 使用率 显示文件大小: du -sh /* du参数: -a : 列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而 ...
- 蓝桥杯2016年省赛C/C++大学A组
网友年龄 某君新认识一网友. 当问及年龄时,他的网友说: "我的年龄是个2位数,我比儿子大27岁, 如果把我的年龄的两位数字交换位置,刚好就是我儿子的年龄" 请你计算:网友的年龄一 ...