MySQL数据库从入门到精通02(基础篇)

news/2024/3/29 18:10:03/文章来源:https://blog.csdn.net/weixin_54089340/article/details/128099767

一、MySQL概述

  1. MySQL数据库相关概念

    数据库:database,简称DB。按照一定的数据结构来组织 、存储和管理数据的仓库。
    数据库管理系统:database management system,简称DBMS。一种操纵和管理数据库的大型软件,用于创建、使用和维护数据库。

>关系型数据库(RDBMS):关系型数据库,是建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

>>特点:1. 使用表存储数据,格式统一,便于维护;

2. 使用SQL语句操作,标准统一,使用方便;

3. 数据存储在磁盘中,安全。

>非关系型数据库:Not-Only SQL,泛指非关系型数据库,是对关系型数据库的补充。

>>特点:1. 数据结构灵活

2. 伸缩性强

SQL

>结构化查询语句(Structured Query Language),简称SQL。

>是一种操作关系数据库的编程语言,定义了一套操作关系数据库统一标准。

  1. MySQL数据库

    版本:

>社区版(MySQL Community Server):免费,MySQL不提供任何技术支持。

>商业版(MySQL Enterprise Edition):收费,试用30天,官方提供技术支持。

二、SQL

(一)mysql相关安装配置

1.下载:官网

2.卸载:

(1)停止mysql服务
  win+R→输入services.msc→服务→找到mysql并停止。
(2)卸载mysql程序,mysql免安装版的删除安装目录即可
  win+R→输入control→控制面板→卸载程序→找到mysql并卸载。
(3)彻底删除mysql配置文件和数据目录
  确保安装目录已删除干净,我的安装目录是C:\Program Files\MySQL\MySQL Server 5.5\;
找到隐藏的数据目录并删除,默认安装位置在C:\ProgramData\MySQL\目录下,删除其中对应旧版本的mysql的目录,我的数据目录是C:\ProgramData\MySQL\MySQL Server 5.5/。
3.清理注册表:

win+R→输入regedit→注册表编辑器

4.安装:

运行mysql-installer-community-8.0.26.0.msi

参照:https://blog.csdn.net/rainbow19931121/article/details/116807859

5.启动

进入服务——》services.msc——》找到mysql服务启动、停止

6.客户端连接

方式一:mysql提供的客户端命令行工具(第二个),然后输入密码就可以连接MySQL了

方式二:win+R打开命令窗口,然后输入mysql -u root -p,然后输入密码就可以连接MySQL。

7.数据模型

============================================================

(二)MySQL相关语法以及基本内容

  1. SQL通用语法

  2. SQL分类

3.DDL(数据库定义语言)——》数据库操作

(1)查询数据库

》查询所有数据库

show databases;

         》查询当前数据库 

select database();

(2)创建数据库

Create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
create database test;
create database if not exists test default charset utf8mb4;

    (3)删除数据库

drop database [if exists]数据库名;

drop database test;
drop database if exists test;

(4)使用

user 数据库名;

use test;

(5)查询当前数据库所有表

show tables;

(6)查询表结构

desc 表名;

desc tb_user;

(7)查询指定表的建表语句

show create table 表名;

(8)表操作——创建表

create table 表名(
字段1 字段1类型[comment 字段1注释],
字段2 字段2类型[comment 字段2注释]
)[comment 表注释];

create table tb_user(
id int comment ‘编号’,
name varchar(50) comment ‘名字’,
age int comment ‘年龄’,
gender varchar(1) comment ‘性别’
)comment ‘用户表’;

(9)数据类型

MySQL中数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

数值类型 大小 有符号(singned)范围 无符号(unsigned)范围 描述
tinyint 1 byte (-128,127) (0,255) 小整数值
smallint 2 byte (-32768,32767) (0,65535) 大整数值
mediumint 3 byte (-8388608,8388607) (0,16777215) 大整数值
int或integer 4 byte (-2147483648,2147483647) (0,4294967295) 大整数值
bigint 8 byte (-263,263-1) (0,2^64-1) 极大整数值
float 4 byte (-3.402823466 E+38,3.402823466351 E+38) 0和 单精度浮点数值
double 8 byte (-1.7976931348623157E+308,1.7976931348623157E+308) 0和 双精度浮点数值
decimal   依赖于M(精度)和D(标度)的值 依赖于M(精度)和D(标度)的值  小数值(精确定点数)

* 视频、音频属于二进制,使用blob

案例:

create table emp(
id int comment ‘编号’,
workno varchar(10) comment ‘工号’,
name varchar(10) comment ‘姓名’,
gender char(1) comment ‘性别’,
age tinyint unsigned comment ‘年龄’,
idcard char(18) comment ‘身份证号’,
entrydate date comment ‘入职时间’
)comment ‘员工表’;

(10)表操作——修改

—添加字段(列)
alter table 表名 add 字段名 类型{长度} [comment 注释][约束];
–案例:为emp表增加一个新的学段”昵称”为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment ‘昵称’;

–修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
–修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
–案例:将emp表的nickname字段修改为username,类型为varchar(30)
alter table emp change nickname username varchar(30) comment ‘用户名’;

–删除字段
alter table 表名 drop 字段名;
–案例:将emp表字段username删除
alter table emp drop username;

–修改表名
alter table 表名 rename to 新表名;
–案例:将emp的表名修改为employee
alter table emp rename to employee;

(11)表操作——删除(在删除表时,表中的数据全部会删除)

–删除表
drop table [if exists] 表名;
–案例:删除tb_user表
drop table if exists tb_user;

–删除指定表,并重新创建该表
truncate table 表名;
–案例:删除重新创建表employee
truncate table employee;

  1. DML:数据操作语言,用来对数据库中表的数据记录进行更新。

(1)插入insert

–向表中插入某些列
insert into 表(列名1,列名2,…) values(值1,值2,…);
–向表中插入所有列
insert into 表 values(值1,值2,…);

–例1:
INSERT INTO student(sid,NAME,gender,age,birth,address,score)
VALUES(1001,‘张三’,‘男’,10,DATE(‘1996-12-23’),‘北京’,‘83.6’);
–例2:
INSERT INTO student VALUE(1002,‘张’,‘男’,12,DATE(‘1996-12-23’),‘南京’,‘82.6’);
–例3;
insert into student(sid,name,gander,age,birth,address,score)
values(1001,‘张三’,‘男’,10,‘1996-12-23’,‘北京’,‘83.6’),
(1002,‘李四’,‘男’,11,‘1995-12-23’,‘南京’,‘83.5’);

(2)删除delete

delete from 表名 [where 条件];
truncate table 表名; 或者 truncate 表名;
–例1:删除id为1004的学生数据
DELETE FROM student WHERE id=1004;
–例2:删除所有数据
delete from student;
–例3:清空表数据
truncate student;
–delete只删除内容,不涉及表,truncate相当于把表删了重新建

(3)更新update

update 表名 set 字段名=值,字段名=值,。。。;
update 表名 set 字段名=值,字段名=值,。。。where 条件;
–例1:将所有学生的地址修改为重庆
UPDATE student SET address=‘重庆’;
–例2:将id为1002的学生的地址修改为北京
UPDATE student SET address=‘北京’ where id=1002;
–例3:将id为1004的学生地址修改为北京,成绩修改为100
UPDATE student SET address=‘北京’,score=100 where id=1004;

5.DQL——数据查询语言(select)

select
字段列表
from
表名列表
where
条件列表
group by
分组字段列表
having
分组后条件列表
order by
排序字段列表
limit
分页参数

(1)基本查询

–1.查询多个字段
select 字段1,字段2,。。。 from 表名;
select * from 表名;
–2.设置别名
select 字段1 [as 别名1],字段2 [as 别名2],。。。from 表名;
–3.去除重复记录
select distinct 字段列表 from 表名;

(2)条件查询(where)

–1.语法
select 字段列表 from 表名 where 条件列表;
–2.条件
------比较运算符
<、>、<=、>=、<>(不等于!=)、between … and …(范围内)、in(多选一)、like(模糊匹配)、is null
------逻辑运算符
and && (多个条件同时成立)
or || (多个条件任意一个成立)
not !(不是)

(3)聚合函数(count、max、min、avg、sum)

–1.介绍
将一列数据作为一个整体,进行纵向计算。
–2.常见聚合函数
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
–3.语法
select 聚合函数(字段列表) from 表名;

(4)分组查询(group by)

–1.语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
–2.where与having区别
执行时机不同:where是分组之前进行过滤,having是分组后过滤。
判断条件不同:where不能对聚合函数进行判断,having可以。

(5)排序查询(order by)

–1.语法1
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
–2.排序方式
asc:升序
desc:降序
–注意:如果多个字段排序,第一个字段值相同,会根据第二个字段排序。

(6)分页查询(limit)

–1.语法
select * from 表名 limit 起始索引,查询记录数;
–2.注意
起始索引从0开始。起始索引=(查询页码-1)*每页显示记录数。
分页查询是数据库的方言,不同数据库不同。
如果查询为第一页,起始索引可以省略,直接limit 10。

(7)案例

–1.查询年龄为20,21,22,23岁的员工信息
select * from emp where gender=‘女’ and age in(20,22,21,23);
–2.性别为男,年龄在20-40,姓名是三个字
select * from emp where gender=‘男’ and age between 20 and 40 and name like ‘___’;
–3.统计年龄小于60岁的,男性和女性人数
select gender,count(1) ‘总数’ from emp where age <60 group by gender ;
–4.年龄小于等于35员工姓名年龄,按年龄升序,年龄相同按入职时间降序
select name,age from emp order by age asc ,entrydate desc;
–5.查询性别为男,年龄在20-30岁以内的前5个员工信息,查询结果按照年龄升序年龄相同按入职时间升序
select * from emp where age between 20 and 30 order by age asc,entrydate asc limit 5;

(8)执行顺序

    1、from

2、where

3、group by

4、

6.DCL

三、函数

四、约束

概念:约束(constraint),实际就是表中数据的限制条件。
作用:保证表中数据的有效性和完整性,例如手机号不能为空,身份证不能重复。
分类:主键约束

》概念:

》》MySQL主键约束是一个列或者多个列的组合,其值能唯一标识表中的一行数据。

》》主键约束相当于唯一约束+非空约束的组合,不允许重复和空值。

》》每个表最多只有一个主键。

》》主键约束关键字:primary key。

》》当创建主键约束时,系统默认会在所在的列和列组合上建立唯一索引。

》操作:

》》添加单列主键

》》添加多列联合主键

》》删除主键

–方式1
create table 表名(
<字段名> <数据类型> primary key
);
–方式2
create table 表名(
<字段名> <数据类型> ,
。。。
[constraint <约束名>] primary key [字段名]
);

create table emp2(
eid int,
name varchar(10),
deptID int,
salary double,
constraint pk1 primary key(eid)–pk1可以省略
);

–联合主键
create table emp2(
eid int,
name varchar(10),
deptID int,
salary double,
primary kay(name,deptID)–任意一个键都不能为null
);

    自增长约束非空约束唯一性约束默认约束零填充约束外键约束

五、多表查询

六、事务

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

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

相关文章

Python数据库编程之关系数据库API规范

Python关系数据库API规范 对于关系数据库的访问&#xff0c;Python社区已经制定出一个标准&#xff0c;称为Python Database API Specification。Mysql&#xff0c;Oracal等特定数据库模块遵从这一规范&#xff0c;而且可以添加更多特性。 高级数据库API定义了一组用于连接数…

YOLO V3 详解

YOLO V3 论文链接&#xff1a;YOLOv3: An Incremental Improvement 主要改进 Anchor: 9个大小的anchor&#xff0c;每个尺度分配3个anchor。Backbone改为Darknet-53, 引入了残差模块。引入了FPN&#xff0c;可以进行多个尺度的训练&#xff0c;同时对于小目标的检测有了一定…

R语言生存分析可视化分析

生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法。 生存分析被用于各种领域&#xff0c;例如&#xff1a; 癌症研究为患者生存时间分析&#xff0c; “事件历史分析”的社会学 在工程的“故障时间分析”。 在癌症研究中&#xff0c;典型的研究问题如下…

Linux redict 输入输出重定向 详细使用方法 文件描述符

Linux redict 重定向 Linux 重定向 在 Linux 系统中&#xff0c;我们需要输入和输出让系统与外部进行交互&#xff0c;比如在我们使用鼠标、键盘等输入设备时其实就是通过输入的方式让数据进行系统中。而系统输出一般就会打印在显示器上、刻录光盘等等。而我们要讲的重定向也…

(二)DepthAI-python相关接口:OAK Pipeline

消息快播&#xff1a;OpenCV众筹了一款ROS2机器人rae&#xff0c;开源、功能强、上手简单。来瞅瞅~ 编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查…

Meta-learning

基本理解 meta learning翻译为元学习&#xff0c;也可以被认为为learn to learn 元学习与传统机器学习的不同在哪里&#xff1f; 元学习与传统机器学习&#xff0c; 这里举个通俗的例子&#xff0c;拿来给大家分享&#xff1f; 把训练算法类比成学生在学校学习&#xff0c;传…

【华为上机真题 2022】字符串分隔

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

[附源码]计算机毕业设计springboot环境保护宣传网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

后端存储实战课总结(上)

创建和更新订单 表设计 最少应该有以下几张表&#xff1a; 订单主表&#xff1a;保存订单基本信息订单商品表&#xff1a;保存订单中的商品信息订单支付表&#xff1a;保存订单支付和退款信息订单优惠表&#xff1a;保存订单的优惠信息 订单主表和字表是一对多关系&#xf…

1.1 统计学习方法的定义与分类

统计学习方法的定义与分类统计学习的概念统计学习的定义统计学习运用到的领域统计学习的步骤统计学习的分类统计学习的概念 统计学习的定义 统计学习 (Statistical Machine Learning) 是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。 以计…

第五站:操作符(终幕)(一些经典的题目)

目录 一、分析下面的代码 二、统计二进制中1的个数 解一&#xff1a;&#xff08;求出每一个二进制位&#xff0c;来统计1的个数&#xff09; 解二&#xff1a;&#xff08;利用左我们移或右移操作符和按位与&#xff09; 解三&#xff1a;&#xff08;效率最高的解法&…

【iOS】—— GET和POST以及AFNetworking框架

GET和POST以及AFNetworking框架 文章目录GET和POST以及AFNetworking框架GET和POSTGET和POST区别GETGET请求步骤GET请求代码POSTPOST请求步骤POST请求代码AFNetworking简介添加头文件GETGET方法GET方法参数GET方法代码样例POSTPOST方法第一种&#xff1a;第二种&#xff1a;先来…

C++:STL之Vector实现

vector各函数 #include<iostream> #include<vector> using namespace std;namespace lz {//模拟实现vectortemplate<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//默认成员函数vector(); …

Netty进阶——粘包与半包(代码示例)

目录一、消息粘包和消息半包的概述1.1、消息粘包1.2、消息半包二、粘包现象代码示例2.1、粘包现象服务端示例代码2.2、粘包现象客户端示例代码2.3、分别启动服务端&#xff0c;客户端&#xff0c;查看服务端结果输出三、半包现象代码示例3.1、半包现象服务端示例代码3.2、半包现…

【强化学习论文】小样本策略泛化的提示决策转换器

文献题目&#xff1a;Prompting Decision Transformer for Few-Shot Policy Generalization 摘要 人类可以利用先前的经验并从少量演示中学习新任务。与旨在通过更好的算法设计实现快速适应的离线元强化学习相比&#xff0c;我们研究了架构归纳偏差对少样本学习能力的影响。我…

不懂单链表? 这篇文章就帮你搞明白

坚持看完&#xff0c;结尾有思维导图总结 链表对指针的操作要求不低链表的概念链表的特性链表的功能(最重要)定义和初始化头插头删细节说明尾插尾删寻找链表元素与打印链表在 某位置后插入删除在某位置的插入删除销毁链表链表的概念 什么是链表 官方概念&#xff1a;链表是一种…

显卡---显卡驱动---CUDA---Cudnn

1. 背景 最近在follow百度的CAE这篇论文时&#xff0c;源码需要的环境为&#xff1a; python 3.7 cuda: 11.0 cudnn: 8.0.4 gcc 8.2 该版本要求与我目前使用的服务器上的CUDA版本不相符合。因此搜索了一篇国外小哥的文章&#xff0c;讲述了如何在一台服务器上安装多个CUDA和Cud…

Node之Express学习笔记

一.Express 1.1什么是Express Express的作用和Node.js内置的http模块类似 专门用来创建Web服务器的 本质&#xff1a;npm上的第三方包&#xff0c;提供快速创建Web服务器的便捷方法 1.2Express能做什么 Web网站服务器&#xff1a;专门提供Web网页资源的服务器 API接口服务器&…

FPGA----ZCU106基于axi-hp通道的pl与ps数据交互(全网唯一最详)

1、大家好&#xff0c;今天给大家带来的内容是&#xff0c;基于AXI4协议的采用AXI-HP通道完成PL侧数据发送至PS侧&#xff08;PS侧数据发送至PL侧并没有实现&#xff0c;但是保留了PL读取PS测数据的接口&#xff09; 2、如果大家用到SoC这种高级功能&#xff0c;那大家应该对于…