mysql数据库入门到精通-Windows版本mysql安装(1)

文章目录

  • 一、数据库介绍
    • 1.1、数据库概念
    • 1.2、为什么要使用数据库
    • 1.3、关系型数据库与非关系型数据库
    • 1.4、数据库术语
    • 1.5、mysql下载及地址
  • 二、安装mysql数据库
  • 三、mysql的管理工具
    • 3.1、mysql command line client使用
  • 四、SQL结构化查询语言
    • 4.1、SQL概述
    • 4.2、SQL发展
    • 4.3、SQL分类
    • 4.4、数据定义语言
      • 4.4.1、DDL数据库操作
      • 4.4.2、DDL数据表操作
    • 4.5、mysql数据类型
      • 4.5.1、数值类型
      • 4.5.2、字符串类型
      • 4.5.3、日期类型
    • 4.6、字段约束
      • 4.6.1、唯一约束
      • 4.6.2、主键约束
      • 4.6.3、主键自动增长
      • 4.6.4、联合主键
      • 4.6.5、DML数据操作语言
      • 4.6.7、DQL数据查询语言
      • 4.6.8、模糊查询
      • 4.6.9、排序
      • 4.6.10、聚合函数
      • 4.6.11、日期函数


一、数据库介绍

1.1、数据库概念

数据库是按照数据结构来组织、存储和管理数据的仓库。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

数据库软件还提供了高效的增加、删除、修改、查询数据的解决方案

数据库:存放数据的仓库

数据库(Database,简称DB)是长期存储在计算机内部有结构的、大量的、共享的数据集合

  • 长期存储:持久化(不删除,永久存储)

  • 有结构:

    类型:数据库不仅可以存放数据,而且存放的数据环视有类型的
    关系:存储数据与数据之间的关系

  • 大量:大多数据库都是文件系统的,也就是说存储在数据库中的数据实际上就是存储在磁盘的文件中(存储大量的数据)

  • 共享:多个应用程序可以通过数据库实现数据的共享

1.2、为什么要使用数据库

使用数据库的原因多种多样,但主要可以归结为以下几个方面:首先,数据库提供了一个使用数据库的原因多种多样,但主要可以归结为以下几个方面:首先,数据库提供了一个结构化的方式来存储和管理大量数据。例如,如果你正在创建一个电影信息检索的网站,需要查询演员信息和电影信息,这时候如果所有的数据都存在普通文件中,那么检索的效率将会非常低。而如果使用数据库,就可以有效地解决这个问题。其次,数据库可以帮助用户快速且方便地存取和检索数据。此外,数据库还能确保数据的安全性和一致性。总的来说,数据库的存在极大地提高了我们处理和利用数据的效率。

1.3、关系型数据库与非关系型数据库

  • 关系型数据库

关系型数据库,采用了关系模型来组织数据的存储,以行和列的形式存储数据并记录数据之间的关系,将数据存放在表格中,可以通过建立表格与表格之间的关联来维护数据与数据之间的关系
学生信息 ------ 学生表
班级信息 ------ 班级表
常见的关系型数据库有:MySQL,SQL Server,Oracle,达梦数据库等

  • 非关系型数据库

非关系型数据库,采用键值对的模型来存储数据,只完成数据的记录,不会记录数据与数据之间的关系
在非关系型数据库中基于其特定的存储结构来解决一些大数据应用的难题
NoSQL(Not only SQL )数据库来指代非关系型数据库

1.4、数据库术语

  • 数据库(Database):存储的数据的集合,提供数据存储的服务
  • 数据(Data):实际上指的是描述事物的符号记录
  • 数据库管理系统(Database Management System,DBMS):数据库管理系统,是位于用户与操作系统之间的一层数据管理软件
  • 数据库系统管理员(Database Anministrator,简称DBA):负责数据库创建、使用与维护的专门人员
  • 数据库系统(Database System,DBS):数据库系统管理员,数据库管理系统及数据库组成整个单元

1.5、mysql下载及地址

mysql下载地址:https://www.mysql.com/
在这里插入图片描述

点击DOWNLOADS,学习的时候选择社区版本就行
在这里插入图片描述
点击红色方框中的链接
在这里插入图片描述
然后选择Windows版本的下载,第一个是线上版本,第二个是有安装包的安装方式
在这里插入图片描述

二、安装mysql数据库

打开安装包后出现的是以下界面
在这里插入图片描述

  • Server only:服务端安装
  • Client only:客户端安装
  • Full:安装包内所有插件
  • Custom:自定义安装

我这里选择的是自定义安装
在这里插入图片描述

上图中选择安装的第一个MySQL Server 8.0.35 - x64是mysql服务,是必须安装的

第二个则是mysql推出的可视化软件,这个根据自己选择是否安装

注意:mysql默认安装在C盘,要修改到其他盘符,必须点击一下,然后选择那一段较短的蓝色字体进行修改安装位置
在这里插入图片描述
下一步
在这里插入图片描述
下一步,点击execute,等进度完成后点击下一步
在这里插入图片描述
在这里插入图片描述
下一步
在这里插入图片描述
下一步
在这里插入图片描述
设置管理员密码
在这里插入图片描述
输入密码后点击下一步
在这里插入图片描述
点击no,然后下一步
在这里插入图片描述
我这里是全选,然后下一步
在这里插入图片描述
下一步
在这里插入图片描述
点击执行,完成安装
在这里插入图片描述
最后在进行两次完成就彻底安装完成

三、mysql的管理工具

当完成数据库的安装之后,mysql是以服务的形式运行在Windows或linux操作系统上的,用户可以通过DBMS工具来对mysql数据库进行操作

当安装完成mysql之后,默认安装了mysql command line client,此工具是一个命令行形式的工具,通常我们会单独安装可视化的DBMS工具

常用工具

  • SQLyog
  • Navicat for MySQL
  • DBeaver

3.1、mysql command line client使用

  • 开始菜单–>mysql 8.0 command line client
  • 输入密码(如果密码输入错误,或者mysql服务没有启动,窗口会自动闪退)
    在这里插入图片描述

四、SQL结构化查询语言

4.1、SQL概述

SQL结构化查询语言,用于存取、查询、更新数据以及管理关系型数据库系统

4.2、SQL发展

SQL的发展历史可以追溯到20世纪70年代初,当时由IBM公司的San Jose, CaliforniaSQL的发展历史可以追溯到20世纪70年代初,当时由IBM公司的San Jose, California研究实验室的埃德加·科德发表将数据组成表格的应用原则,通常被称为Codd’s Relational Algebra。1974年,唐纳德·克努特首先提出了SQL语言,并在美国国家标准局(ANSI)的支持下,于1986年10月通过了SQL语言的美国标准,称为SQL86。

自那时以来,SQL经历了多次更新和扩展。例如,在1988年,微软与Ashton-Tate合作开发了Sybase SQL Server for IBM OS/2,并在次年发布了SQL Server 1.0。此外,SQL Server使用了ANSI SQL-92的扩展集,称为T-SQL,这也遵循了ANSI制定的SQL-92标准。

4.3、SQL分类

根据SQL指令完成的数据库操作的不同,可以将SQL指令分为四类

  • DDL Data Definition Language 数据定义语言

用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改

  • DML Date Manipulation Language 数据操作/操纵语言

用于完成对数据表中的数据的添加、删除、修改操作
添加:将数据存储到数据表中
删除:将数据从数据表移除
修改:对数据表中的数据进行修改

  • DQL Data Query Language 数据查询语言

用于数据表中的数据查询

  • DCL Data Control Language 数据控制语言

用于完成事物管理等控制性操作

4.4、数据定义语言

4.4.1、DDL数据库操作

查询数据库

## 显示当前mysql中的数据库列表
mysql> show databases;
# 显示指定命令的数据库创建时的SQL指令
mysql> show create database test1_db;

创建数据库

# 创建数据库,数据库名称可以自定义
mysql> create database test_db;
# 创建数据库时指定数据库的字符集,一般默认就是utf-8
mysql> create database test1_db character set utf8;
# 判断数据库是否存在,不存在则直接创建该数据库,存在,也不会报错
mysql> create database if not exists test1_db;

修改数据库

# 修改test_db的字符集为gbk
mysql> alter database test_db character set gbk;

删除数据库

# 删除数据库
mysql> drop database test1_db;
# 判断是否已经删除test1_db数据库,未删除,直接删除,删除,不报错
mysql> drop database if exists test1_db;

使用/切换数据库

# 使用/切换test_db数据库
mysql> use test_db;

4.4.2、DDL数据表操作

创建数据表

mysql> create table students(--创建编号列-> stu_num char(8) not null unique,-- 创建名字列-> stu_name varchar(20) not null unique,-- 创建性别列-> stu_gender char(2) not null unique,-- 创建年龄列,年龄为整数-> stu_age int not null unique,-- 创建电话列-> stu_tel char(11) not null unique,-- 创建qq号列-> stu_qq varchar(11) not null unique,-- 创建微信号列-> stu_weixin varchar(100) not null unique);

char(10):字符串类型的意思,10代表10个字节
varchar(20):可变字符串,一个字节占两个字符
not null:约束不能为空
unique:约束不可重复
约束不能重复和为空:如:电话号和编号不能是空着的,也不能编号和电话号是重复的同一个

查看数据表
从这里开始不在用cmd

# 查看所有的数据表
show tables;
# 查看数据表结构
desc students;

删除数据表

# 删除数据表
drop table students;
# 判断是否已删除,自行删除
drop table if exists students;
# 删除字段名(列)
alter table students drop stu_num;

修改数据表

# 修改表名
alter table students rename to studebts_db;
# 修改表的字符集是gbk还是utf-8
alter table students character set utf-8;
# 在表中新加一个字段(列)
alter table students add stu_bj varchar(10);
# 修改字段名和类型
alter table students change stu_num stu_num1 int ;
# 只修改字段类型
alter table students modify stu_num int;

4.5、mysql数据类型

数据类型:指的是数据表中的列中支持存放的数据的类型

4.5.1、数值类型

在mysql中有多种类型可以存放数值,不同的类型存放的数值范围或形式是不同的

类型内存空间大小范围说明
tinyint1byte有符号:-128 ~ 127 无符号:0 ~ 255特小型整数(年龄)
smalint2byte(16bit)有符号:-32768 ~ 32767 无符号:0 ~ 65535小型整数
mediumint3byte有符号:-2^31 ~ 2^31 - 1 无符号:0 ~ 2^32 - 1中型整数
int/integer4byte整数
bigint8byte大型整数
float4byte单精度
double8byte双精度
decimal一般情况,第一参数+2decimal(10,2),表示数值一共有10位,小数有两位

注意:前三种一般用的很少,一般整数类型会直接使用int/integer类型,过大就会使用bigint类型,浮点数会使用double类型

4.5.2、字符串类型

存储字符串序列的类型

类型字符长度说明
char0 ~ 255字节定长字符串,最多可以存储255个字符;当我们指定数据表字段为char(n),此列中的数据最长为n个字符,如果添加的数据少于n,则补’\u0000’至n长度
varchar0 ~ 65536字节可变长度字符串,此类型的类最大长度为65535
tinyblob0 ~ 255字节存储二进制字符串
blob0 ~ 65535字节存储二进制字符串
mediumblob0 ~ 1677215字节存储二进制字符串
longblob0 ~ 4294967295字节存储二进制字符串
tinytext0 ~ 255字节文本数据 (字符串)
text0 ~ 65535字节文本数据 (字符串)
mediumtext0 ~ 1677215字节文本数据 (字符串)
longtext0 ~ 4294967295字节文本数据 (字符串)

注意:在数据库中存储图片或者视频音频等内容,一般是存储,文件在服务器上的路径,当然如果非要存储就需要将图片等数据转成二进制进行存储,所以blob类型是可以存储所有类型的,但是前提是需要转换成二进制,所以此类型用的很少

longtext类型一般用于varchar类型存储不下的时候

常用类型也就是char和varchar这两种

4.5.3、日期类型

在mysql数据库中,我们可以使用字符串来存储时间,但是如果我们需要基于时间字段进行查询操作就便于查询实现

类型格式说明
date2024 - 01 - 01日期,只存储年月日
time12:12:12时间,只存储时分秒
year2024年份
datetime2024 - 01 - 01 12:12:12日期 + 时间,存储年月日时分秒
timestamp20240101 121212日期 + 时间(时间戳)

4.6、字段约束

在创建数据表的时候,指定的对数据表的列的数据限制性的要求(对表的列中的数据进行限制)

常见的约束

  • 非空约束:限制此列的值必须提供,不能为null
  • 唯一约束:在表中的多条数据,此列的值不能重复
  • 主键约束:非空+唯一,能够唯一标识数据表中的一条数据
  • 外键约束:建立不同表之间的关联关系

4.6.1、唯一约束

在表中的多条数据,此列的值不能重复

设置book_id不可重复

CREATE TABLE books (book_id CHAR(5) UNIQUE,book_name VARCHAR(10) NOT NULL,book_author VARCHAR(5)
);

4.6.2、主键约束

主键就是数据表中记录的唯一标识,在一张表中只能有一个主键(主键可以是一个列,也可以是多个列的组合)
当一个字段声明为主键之后,添加数据时:
1.此字段数据不能为null
2.此字段数据不能重复

设置book_id为主键约束

CREATE TABLE books1 (book_id CHAR(5) PRIMARY KEY,book_name VARCHAR(10) NOT NULL,book_author VARCHAR(5)
);

删除主键约束

alter table books1 drop primary key

创建表之后添加主键约束

alter table books1 modify book_id char(5) primary key;

4.6.3、主键自动增长

  • 定义int类型字段自动增加:auto_increment

字符类型必须为int类型

CREATE TABLE books (book_id int(5) PRIMARY KEY auto_increment,book_name VARCHAR(10) NOT NULL,book_author VARCHAR(5)
);

:主键自动增长,只能保证唯一性,不能保证连续性,如:从1开始,中间删除2,不会再次出现2,会直接到数字3

4.6.4、联合主键

联合主键就是将数据表中的多列组合在一起设置为表的主键

CREATE TABLE grades (stu_num CHAR(8),course_id INT,score INT,PRIMARY KEY (stu_num, course_id)
);

4.6.5、DML数据操作语言

用于完成对数据表中数据的插入、删除、修改操作

创建表

create table students(stu_num char(8) primary key,stu_name varchar(20) not null,stu_gender char(2) not null,stu_age int not null,stu_tel char(11) not null unique,stu_qq varchar(11) unique,stu_wei varchar(11) unique)

插入数据

# 方法一
insert into students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_wei
) 
values('20240101','张三','男',18,'13837202197','1684331250','13837202197'
);
# 方法二
insert into students values('20240102','李四','男',18,'15346924588','1584395120','15796321450'
)

删除数据

# 删除stu_num=20240102的学生信息
delete from students where stu_num='20240102';
# 删除stu_age>18的学生信息
delete from students where stu_age>18;
# 删除整个数据表
delete from students;

修改数据

# 根据条件修改stu_age
update students set stu_age= 22 where stu_num='20240102';
# 根据条件修改年龄,并且在为空的stu_qq列中加入数据
update students set stu_age= 22,stu_qq='1854223059' where stu_num='20240102';

查看数据表

select * from students;

4.6.7、DQL数据查询语言

从数据表中提取满足特定条件的记录

单表查询
多表联合查询

查询基础语法

# 查询stu_name字段列
select stu_name from students;
# 查询多个字段列
select stu_name,stu_qq,stu_wei from students;

where子句查询 - 条件关系运算符

# where条件等于20240103
select * from students where stu_num='20240103';# 条件不等于20240103
select * from students where stu_num != '20240103';
select * from students where stu_num <> '20240103';# 年龄条件大于18
select * from students where stu_age > 18;# 年龄条件小与20
select * from students where stu_age < 20;# 年龄条件大于等于20
select * from students where stu_age >= 20;

where子句查询 - 条件逻辑运算符

# and 并且 筛选多个同时满足条件的数据
select * from students  where stu_age=18 and stu_gender='男';# or 或 筛选多个条件中至少满足一个条件的数据
select * from students  where stu_age=18 or stu_gender='男';

4.6.8、模糊查询

# 查询学生电话中包含0的学生信息
select * from students  where stu_tel like '%0%';# 查询学生姓名第一个字为张的学生信息
select * from students  where stu_name like '张%';# 查询学生电话最后一个数字为0的学生信息
select * from students  where stu_tel like '%0';# 查询学生电话中的第二个数字为3的学生信息select * from students  where stu_tel like '_3%';# 对字段列进行模糊查询
select stu_tel from students  where stu_tel like '_0%';# 计算stu_age的出生年月日
select stu_name,2024 - stu_age from students  where stu_age;# 计算stu_age的出生年月日并生成别名
select stu_name,2024 - stu_age as stu_year from students  where stu_age;# 对年龄进行去重
select distinct stu_age from students;

4.6.9、排序

# 单字段排序
select * from students where stu_age >=18 order by stu_gender desc;
select * from students where stu_age >18 order by stu_gender desc;# 多字段排序
select * from students where stu_age >18 order by stu_gender asc,stu_age desc;

4.6.10、聚合函数

SQL中提供了一些可以对查询的记录的列进行计算的函数 – 聚合函数

count – > 统计函数
max --> 最大值
min --> 最小值
sum --> 求和
avg -->平均值

# count:统计学生数量
select count(stu_num) from students;
# 统计学生中为男性的数量
select count(stu_num) from students where stu_gender='男';
# 找出年龄最大的
select max(stu_age) from students;
# 找出男性中年龄最大的
select max(stu_age) from students where stu_gender='男';
# 找出年龄最小的
select min(stu_age) from students;
# 找出男性中年龄最小的
select min(stu_age) from students where stu_gender='男';
# 求出年龄的总和
select sum(stu_age) from students;
# 求出男生年龄的总和
select sum(stu_age) from students where stu_gender='男';
# 求出年龄的平均值
select avg(stu_age) from students;
# 求出男生年龄的平均值
select avg(stu_age) from students where stu_gender='男';

4.6.11、日期函数

  • 当我们向日期类型的列添加数据时,可以通过字符串类型赋值(字符串的格式必须为yyyy-MM-dd hh:mm:ss)
  • 如果想要获取当前系统时间添加到日期类型的列,可以使用now()或sysdate()
# 添加时间列
alter table students add stu_shijian datetime;
# 新增一条数据,并获取时间
# 手动添加时间
insert into students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_wei,stu_shijian)
values('20240110','周周','女',20,'14695240321','14236975201','1234950147','2024-01-01 09:00:00');
# 添加系统时间
insert into students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_wei,stu_shijian)
values('20240110','周周','女',20,'14695240321','14236975201','1234950147',now());insert into students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_wei,stu_shijian)
values('20240110','周周','女',20,'14695240321','14236975201','1234950147',sysdate());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519469.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【STM32】HAL库 CubeMX教程---基本定时器 定时

目录 一、基本定时器的作用 二、常用型号的TIM时钟频率 三、CubeMX配置 四、编写执行代码 实验目标&#xff1a; 通过CUbeMXHAL&#xff0c;配置TIM6&#xff0c;1s中断一次&#xff0c;闪烁LED。 一、基本定时器的作用 基本定时器&#xff0c;主要用于实现定时和计数功能…

PEIS源码 健康体检中心源码 C/S

目录 一、系统概述 二、系统开发环境 三、系统功能 检前管理 检中管理 检后管理 设备对接-PACS 设备对接-彩超 LIS-结果录入、审核、外送结果自动导入 一、系统概述 体检系统&#xff0c;是专为体检中心/医院体检科等体检机构&#xff0c;专门开发的全流程管理系…

什么样的项目适合Web自动化测试

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

传输请求(同服务器不同Client 不同服务器)

Landscape&#xff1a; 1. 同服务器不同Client间传输 100配置完需要在UT环境- DEV200测试的场合&#xff1a; 100生成的传输请求无需释放&#xff0c;直接在DEV200 Tcode SCC1接收即可&#xff08;S4 hana&#xff1a; SCC1N&#xff09;输入传输请求号&#xff0c;指定目标…

力扣刷题Days11第二题--141. 环形链表(js)

目录 1,题目 2&#xff0c;代码 2.1快慢指针 2.2&#xff0c;哈希表 3&#xff0c;学习与总结 3.1自己尝试写快慢指针 反思 1,题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&…

【Leetcode】3028.边界上的蚂蚁

题目描述 思路 题目中要求我们返回 蚂蚁返回到边界的次数。简单来想&#xff0c;就是蚂蚁原来的位置的一维坐标为0&#xff0c;然后经过&#xff0c;若干次移动&#xff0c;统计有几次坐标再次变为0的个数。 我们利用前缀和&#xff0c;像定义一个数组&#xff0c;算出前缀和数…

腾讯云学生服务器详细介绍_学生服务器价格_学生机申请流程

2024年腾讯云学生服务器优惠活动「云校园」&#xff0c;学生服务器优惠价格&#xff1a;轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年&#xff0c;轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年&#xff0c;CVM云服务器2核4G配置842.4元一年&…

【网络原理】初识网络原理

目录 &#x1f384;网络发展史&#x1f338;独立模式&#x1f338;网络互连&#x1f33b;局域网LAN&#x1f33c;基于网线直连&#x1f33c;基于集线器组建&#x1f33c;基于交换机组建&#x1f33c;基于交换机和路由器组建 &#x1f33b;广域网WAN &#x1f333;网络通信基础&…

【设计模式 01】单例模式

单例模式&#xff0c;是一种创建型设计模式&#xff0c;他的核心思想是保证一个类只有一个实例&#xff08;即&#xff0c;在整个应用程序中&#xff0c;只存在该类的一个实例对象&#xff0c;而不是创建多个相同类型的对象&#xff09;&#xff0c;并提供一个全局访问点来访问…

【操作系统概念】 第7章:死锁

文章目录 0.前言7.1 系统模型7.2 死锁特征7.2.1 必要条件7.2.2 资源分配图 7.3 死锁处理方法7.4 死锁预防&#xff08;deadlock prevention&#xff09;7.4.1 互斥7.4.2 占有并等待7.4.3 非抢占7.4.4 循环等待 7.5 死锁避免&#xff08;deadlock-avoidance&#xff09;7.5.1 安…

[数据结构初阶]队列

鼠鼠我呀&#xff0c;今天写一个基于C语言关于队列的博客&#xff0c;如果有兴趣的读者老爷可以抽空看看&#xff0c;很希望的到各位老爷观点和点评捏&#xff01; 在此今日&#xff0c;也祝各位小姐姐女生节快乐啊&#xff0c;愿笑容依旧灿烂如初阳&#xff0c;勇气与童真永不…

【PCIe】初识PCIe

&#x1f525;博客主页&#xff1a;[PannLZ] &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 文章目录 PCIe简介PCIe速度 PCIe简介 计算机内部有很多电子元器件&#xff0c;他们之间会有数据沟通和传输的需求。如果A元件想给B元件传输数据&am…