MySQL系列第一篇入门

news2024/12/24 18:33:17

1.什么是关系型数据库呢?

RDBMS 是一种结构化数据存储系统,使用表格间的关系来存储和操作数据。
在关系型数据库中,数据以行和列的形式存储,其中每一行表示一个关系或实体,每一列表示该实体的某个属性或特征
关系型数据库具有以下特点:
(1)数据存储在表中:数据以行和列的形式存储在表格中
(2)数据间的关系:不同表格中的数据可以通过关系进行连接,实现数据的联合查询和分析
(3)数据完整性:在关系型数据库中,可以定义各种限制条件和检查规则,以确保数据的完整性和一致性
(4)SQL 语言:结构化查询语言SQL 用于访问和操作关系型数据库

点击此处即可领取282G网络安全学习资源

2.SQL 的分类:

(1)DDL(Data Defination Language): 数据定义语言,用于定义数据库对象(库、表、字段)
(2)DML(Data Manipulation Language): 数据操作语言,增删改
(3)DQL(Data Query Language): 数据查询语言,查
(4)DCL(Data Control Language):数据控制语言,访问权限

3.MySQL 的数据类型:

(1)数值类型
tinyint、smallint、mediumint、int/integer、bigint、float、double、decimal 【1234848】
(2)字符串类型
char 定长字符串、varchar 变长字符串、tinyblob 不超过255二进制数据、tinytext 短文本字符串、blob 二进制长文本数据、text 长文本数据、mediumblob 二进制中等长度文本数据、mediumtext 中等长度文本数据、longblob 二进制极大文本数据、longtext 极大文本数据

在这里插入图片描述
(3)日期时间类型
在这里插入图片描述
基础操作

4、DDL 数据定义语言

– 查看所有数据库
show databases;
#查看当前数据库
select database();
/*
创建数据库:
数据库不存在时创建,避免报错
指定字符编码
/
create database if not exists itcast charset utf8mb4;
– 删除数据库
drop database if exists itcast;
– 切换数据库
use zwh;
– 查看数据库中所有表
show tables;
– 查看表结构
desc tb_user;
– 查看建表语句
show create table tb_user;
– 创建一张表
create table tb_user (
id int comment ‘编号’,
name varchar(50) comment ‘姓名’,
age int comment ‘年龄’,
gender varchar(1) comment ‘性别’
) comment ‘用户表’;
desc tb_user;
show create table tb_user;
/

设计一张员工信息表,要求如下:

  1. 编号(纯数字)
  2. 员工工号 (字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)
    */
    create table employee(
    id int comment ‘编号’,
    employ_id varchar(10) comment ‘员工工号’,
    name varchar(10) comment ‘员工姓名’,
    gender char(1) comment ‘性别’,
    age tinyint unsigned comment ‘年龄’,
    card_id char(18) comment ‘身份证号’,
    time date comment ‘入职时间’
    )
    drop table employee;
    #3.修改表相关操作
    – 添加字段
    alter table employee add nicename varchar(20) comment ‘昵称’;
    desc employee;
    – 修改字段
    alter table employee change nicename username varchar(30) comment ‘昵称’;
    – 删除字段
    alter table employee drop username;
    desc employee
    – 修改表名
    alter table employee rename to emp;
    show databases;
    show tables;
    – 删除表
    drop table if exists tb_user;
    – 删除指定表,并重新创建表
    truncate table emp;
    desc emp;

5.DML 数据操作语言

– 添加数据 [要想省略 (字段1, 字段2, …) 部分,要保证值的个数与顺序与表中相对应]
insert into 表名(字段1, 字段2, …) values (值1, 值2, …)
insert into 表名 values (值1, 值2, …)
insert into 表名 values (值1, 值2, …), (值1, 值2, …), …
– 修改数据
update 表名 set 字段名1 = 值1, 字段名2 = 值2, … [where 条件]
– 删除数据
delete from 表名 [where 条件]

6.DQL 数据查询语言

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

基础查询:

– 查询指定的字段
select 字段1, 字段2, … from 表名;
– 查询全部字段
select * from 表名;
– 查询结果字段设置别名
select 字段1 as 别名1, 字段2 as 别名2, … from 表名;
select 字段1 别名1, 字段2 别名2, … from 表名;
– 查询结果去重
select distinct 字段列表 from 表名;

条件查询:

select 字段列表 from 表名 where 条件列表

! 和 <> 都代表不等于,like 模糊匹配 _ 匹配单个字符, % 匹配任意个字符

聚合函数:

count 统计数量、max 最大值、min 最小值、平均值 avg、sum 求和

-- null 值不参与聚合函数运算 
select 聚合函数(字段列表) from 表名;

分组查询:

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 过滤后的条件]

where 和 having 的执行时机不同,where > 聚合函数 > having,也就是说只有满足 where 条件的才会分组

排序查询:

select 查询列表 from 表名 order by ASC | DESC;

ASC 代表升序查询,DESC 代表降序查询,默认为升序,支持按多字段排序查询

分页查询:

select 字段列表 from 表名 limit 起始索引, 查询记录数

起始索引从零开始 = (查询页码 - 1 ) * 每页显示记录数

执行顺序:from > where > group by> having > select > order by > limit

7.DCL: 数据控制语言

-- 查询用户
select * from mysql.user;
-- 创建用户
create user '用户名'@'主机名' identified by '密码';
-- 修改用户密码
alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
-- 删除用户
drop user '用户名'@'主机名';

主机名可以使用 % 通配,MySQL 中通过用户名@主机名标识一个用户

-- 查询用户权限
show grants for '用户名'@'主机名';
-- 授予用户所有权限
grant all on itcast.* to '用户名'@'主机名';
-- 撤销用户所有权限
revoke all on itcast.* from '用户名'@'主机名';

函数

1.字符串函数:

-- 字符串拼接
concat(s1, s2, ...)
-- 字符串转小写
lower(str)
-- 字符串转大写
upper(str)
-- 左填充,用 pad 字符串对 str 左边进行填充,达到 n 个字符串长度 [使拼接后的字符串长度为n]
lpad(str, n, pad)
-- 右填充,用 pad 字符串对 str 右边进行填充,达到 n 个字符串长度
rpad(str, n, pad)
-- 去掉字符串头部和尾部的空格
trim(str)
-- 返回从字符串 str 从 start 位置开始的 len 长度的子字符串
substring(str, start, len)

2.数值函数:

-- 向上取整
cell(x)
-- 向下取整
floor(x)
-- 取模
mod(x, y)
-- 0-1随机数
rand()
-- 四舍五入,保留 y 位小数
round(x, y) 

3.日期函数:

-- 返回当前日期
curdate();
-- 返回当前时间
curtime();
-- 返回当前日期和时间
now();
-- 获取 date 的年份
year(date)
-- 获取 date 的月份
month(date)
-- 获取 date 的日期
day(date)
-- 返回一个加上时间间隔 expr 后的时间
date_add(date, interval exprtype)
-- 返回两个时间之间间隔的天数 [date1 - date2]
datediff(date1, date2)

4.流程函数:

-- 如果 value 为 true,则返回 t,否则返回 f
if(value, t, f)
-- 如果 value1 不为空,返回 value1 否则返回 value2
ifnull(value1, value2)
-- 如果 val1 为 true,返回 res1 否则返回 default
case when val1 then res1 else default end
-- 如果 expr 的值等于 val1,返回 res1,否则返回 default 默认值
case expr when val1 then res1 else default end

约束
保证数据库中的数据的正确、有效和完整
在这里插入图片描述
在建表时只需要在对应字段后添加对应约束的关键字即可

外键约束:

-- 添加外键(创建表时)
[constraint] [外键名称] foreign key (外键字段名) references 主表(主表列名)
-- 添加外键(修改表时)
alter table 表名 add constraint 外键名称 foreign key (外键字段名) references 主表 (主表列名)
-- 删除外键
alter table 表名 drop foreign key 外键名称;

添加外键后,再删除或更新父表数据时会产生约束行为
在这里插入图片描述
在我们为表添加外键时,就可以设置删除和更新策略

alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表名 (主表字段名) on update cascade on delete delete cascade;

多表查询

  • 连接查询:[以两张表为例]
    内连接:两表交集
    左外连接:左表所有数据和两表交集
    有外连接:右表所有数据和两表交集
    自连接:当前表与自身连接的查询,自连接必须使用表
#可以为表设置别名,别名关键字 as 可以省略
-- 隐式内连接
select 字段列表 from 表1, 表2, ... where 条件列表;
-- 显式内连接
select 字段列表 from 表1 [inner] join 表2 on 连接条件 ...;
-- 左外连接
select 字段列表 from 表1 left outer join 表2 on 条件列表;
-- 右外连接
select 字段列表 from 表1 right outer join 表2 on 条件列表;
-- 自连接
select 字段列表 from 表A 别名A join 表A 别名B on 条件列表;
-- 联合查询 union 会去重,union all 不会,合并查询结果
select 字段列表 from 表A ...
union [all]
select 字段列表 from 表B ...
  • 子查询:

按照子查询结果划分:
标量子查询:子查询结果为单个值
列子查询:子查询结果为一列
行子查询:子查询结果为一行
列表子查询:子查询结果为多行多列

按照子查询位置划分:
where 之后
from 之后
select 之后

-- 标量子查询 常用操作符: =<>>>=<<=

-- 列子查询 常用操作符: in、not in、any、some(与any相同)、all
-- 对于 any、some、all 一般与常用常用操作符连用
select * from emp where salary > some (
	select salary from emp where dept_id in (
		select id from dept where name = '研发部'
	)
)
-- 行子查询 常用操作符:=<> 、IN 、NOT IN
select * from emp where (salary,managerid) = (select salary, managerid from emp where name = '张无忌');
-- 表子查询 常用操作符: in
select * from emp where (salary, managerid) in (select salary, managerid from emp where name = '鹿杖客' or name = '宋远桥');

在这里插入图片描述

事务
相关指令:

-- 查看/设置事务提交方式 [value = 1 代表开启了自动提交]
select @@autocommit;
set @@autocommit = 0;
-- 提交事务
commit;
-- 回滚事务
rollback; 

我们关闭自动提交事务之后,每次执行 DML 都不会提交,需要手动 commit

-- 开启事务
start transaction [或替换为 begin]
-- 提交事务
commit
-- 回滚事务
rollback

案例:

start transaction;
INSERT INTO account ( name, money )
VALUES
	( "zhangsan", 2000 ),
	( "lisi", 2000 );
commit;

begin;

update account set money = money - 1000 where name = 'zhangsan';
update account set money = money + 1000 where name = 'lisi';

commit;
  • 事务的四大特性:acid

原子性(Atomicity): 事务是不可分割的最小操作单位
一致性(Consistency): 事务完成时,必须使所有的数据都保持一致状态
隔离性(Isolation): 数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性(Durability): 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

  • 并发事务可能存在的问题:

赃读:一个事务读取到另外一个事务还没有提交的数据
不可重复读:一个事务先后读取同一条记录,但是两次读取的数据不同,称之为不可重复读
幻读:一个事务按照条件查询数据时,没有对应的数据行,但是插入数据的时候,又发现这行数据已经存在了

  • 事务的隔离级别:
    在这里插入图片描述
-- 查看事务的隔离级别
select @@transaction_isolation;
-- 设置事务隔离级别
set [session | global] transaction isolation level [read uncommit | read commit | repeatable read | serializable]

网络安全成长资源

最后,给大家分享一个超棒的网络安全学习路线图(文末有高清图和XMIND文件)

点击此处即可领取282G网络安全零基础入门学习籽料

在这里插入图片描述
还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:
在这里插入图片描述
在这里插入图片描述
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
在这里插入图片描述

因篇幅有限,仅展示部分籽料,完整资料的领取请点击此处

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

干洗店管理软件,家政洗衣洗鞋店上门服务小程序

干洗店管理系统&#xff0c;洗鞋店小程序下单&#xff0c;收衣收鞋预约&#xff1b; 洗衣店洗鞋店收衣管理APP&#xff0c;根据会员所属地区或门店&#xff0c;自动把信息派送到收衣员工的APP上。 洗衣店洗鞋店小程序&#xff0c;支持通过预约单&#xff0c;生成会员收衣单据或…

Cisdem Video Player for mac(高清视频播放器) v5.6.0中文版

Cisdem Video Player mac是一款功能强大的视频播放器&#xff0c;适用于 macOS 平台。它可用于播放不同格式的视频文件&#xff0c;并具有一些实用的特性和功能。 Cisdem Video Player mac 中文版软件特点 多格式支持&#xff1a;Cisdem Video Player 支持几乎所有常见的视频格…

Flask框架配置celery-[1]:flask工厂模式集成使用celery,可在异步任务中使用flask应用上下文,即拿即用,无需更多配置

一、概述 1、celery框架和flask框架在运行时&#xff0c;是在不同的进程中&#xff0c;资源是独占的。 2、celery异步任务如果想使用flask中的功能&#xff0c;如orm&#xff0c;是需要在flask应用上下文管理器中执行orm操作的 3、使用celery是需要使用到中间件的&#xff0…

2023年【煤气】试题及解析及煤气复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 煤气试题及解析考前必练&#xff01;安全生产模拟考试一点通每个月更新煤气复审模拟考试题目及答案&#xff01;多做几遍&#xff0c;其实通过煤气理论考试很简单。 1、【单选题】100mm以上的煤气管道着火,( )一下把煤…

vue3封装分页组件

1.新建Pagination文件以及该文件夹下新建index.vue 2.在index.vue文件中编写一下代码 <template><div :class"{ hidden: hidden }" class"pagination-container"><el-pagination:background"background"v-model:current-page&qu…

全国快递查询接口,快递,全球快递,配送,物流管理,物流数据,电子商务

一、接口介绍 支持国内外1500快递物流公司的物流跟踪服务&#xff0c;包括顺丰、圆通、申通、中通、韵达等主流快递公司。同时&#xff0c;支持单号识别快递物流公司、按次与按单计费、物流轨迹返回等功能&#xff0c;以满足企业对快递物流查询多维度的需求。 二、使用案例截…

IDEA中.gitignore配置不生效的解决方案

一、创建项目 二、执行以下Git命令 git rm -r --cached . git add . git commit -m "update .gitignore"

接口测试的几种方法

其实无论用那种测试方法&#xff0c;接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文&#xff0c;服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端&#xff0c;客户端接收应答报文这一个过程。 方法一、用LoadRunner实现接口测试 大家都知…

风光十几年的MIUI要无了,小米自研MIOS即将就位

今年8月小米新品发布会上&#xff0c;K60 至尊版亮相的同时带来了下一代系统&#xff08;或者说UI &#xff09;的名字&#xff1a;MIUI 15 。 好家伙不知不觉已经要更到 15 了&#xff0c;大家用过几个版本呢&#xff1f; 回想起 MIUI V1 内测发布、MIUI V5 全民刷机、MIUI 8…

显卡、SSD二合一,华硕这波「技术革命」给我看傻了

通常来讲&#xff0c;高端、低端主板除了芯片组、用料、供电规格等差异&#xff0c;在接口拓展性方面也存在着明显分级。 最常用的 USB 接口倒还好&#xff0c;即便目前最入门级主板基本也能保证至少 4 个&#xff1b; 加上机箱前面板拓展 USB 口&#xff0c;保证一般用户需求…

Android studio安装详细教程

Android studio安装详细教程 文章目录 Android studio安装详细教程一、下载Android studio二、安装Android Studio三、启动Android Studio 一、下载Android studio Android studio安装的前提是必须保证安装了jdk1.8版本以上 1、打开android studio的官网&#xff1a;Download…

3D模型格式转换工具HOOPS Exchange:模型数据自由导入和导出

HOOPS Exchange是一套高性能软件库&#xff0c;可以为软件开发人员提供导入和导出3D文件格式的能力。HOOPS Exchange导入3D数据后&#xff0c;会将3D数据转换为PRC格式存放到内存中&#xff0c;最后导出成为其他3D格式。&#xff08;点击申请HOOPS Exchange免费试用&#xff09…

互动设计:深入了解用户体验的关键

交互是人与计算机系统之间的互动过程。在计算机领域中&#xff0c;交互是人机交互技术的核心内容之一。交互设计是一种基于人类行为科学、心理学、人体工程学等领域的专业设计&#xff0c;目的是创造用户友好的、易于使用的计算机软件、网络、移动应用等。交互的本质在于用户的…

JUC并发编程:Monitor和对象结构

JUC并发编程&#xff1a;Monitor和对象结构 1. Monitor1.1 对象的结构1.1.1 MarkWord1.1.2 Klass Word1.1.3 数组长度1.1.4 &#x1f330; 1. Monitor Monitor官方文档 我们可以把Monitor理解为一个同步工具&#xff0c;也可以认为是一种同步机制。它通常被描述为一个对象&…

零基础Linux_15(基础IO_文件)软硬链接+动静态库详解

目录 1. 软硬链接 1.1 创建软链接 1.2 创建硬链接 1.3 硬链接数和unlink 2. 动静态库 2.1 制作静态库 2.2 查看和打包静态库 2.3 使用静态库 2.3.1 安装在默认搜索路径 2.3.2 告知路径库路径库名 2.4 制作动态库 2.5 使用动态库 2.5.1 安装在默认搜索路径 2.5.2 …

轻松虚拟gps定位 AnyGo中文 for mac

AnyGo是一款旨在帮助用户模拟和改变iPhone的GPS位置&#xff0c;以实现虚拟定位的功能。该软件适用于iOS设备&#xff0c;并提供了一系列强大的功能&#xff0c;让用户能够自由地模拟不同地理位置&#xff0c;以满足各种需求。 以下是AnyGo可能提供的一些主要功能和特点&#…

设置全局滚动条样式

需求&#xff1a;统一滚动条样式&#xff0c;不需要每次都要在页面一个一个的设置&#xff0c;整个项目只要内容超出了显示滚动条了就会是自己设置的那个滚动条样式显示 1.效果 2. 创建scroll.scss文件 滚动条样式如下&#xff0c;可以自行更改 /* // 滚动条样式重写-chrome …

新闻api接口,新闻资讯,社交媒体,体育赛事,全国热门带正文新闻查询API接口

一、接口介绍 解决同一类新闻在不同平台上的内容获取问题&#xff0c;在归档主流新闻平台的内容数据基础上&#xff0c;对外提供统一的调用方式来完成实时、最新的相关新闻的获取&#xff0c;极大方便各类企业在自有软件中集成新闻内容的功能。支持200余个新闻大站&#xff0c;…

官网安装Python包太慢?教你三种Pytorch的下载安装方式,保证你再也不用出现Error

这一期教大家如何在Anaconda中使用CUDA来进行加速、神经网络依赖cuDNN的下载安装&#xff0c;以及下载和安装Pytorch-GPU安装包的三种方式&#xff08;conda、pip、轮子&#xff09;。 还未下载安装 CUDA 和 Anaconda&#xff0c;请看往期文章&#xff0c;是全套系列的总结&am…

@Scope 注解失效了?咋回事

scope 属性&#xff0c;相信大家都知道&#xff0c;一共有六种&#xff1a; 取值含义生效条件singleton表示这个 Bean 是单例的&#xff0c;在 Spring 容器中&#xff0c;只会存在一个实例。prototype多例模式&#xff0c;每次从 Spring 容器中获取 Bean 的时候&#xff0c;才…