MySQL复习指南

news2024/11/16 3:45:58

1.数据类型

数值型】

int或者integer,大小为4个字节,范围:(大约)-21.5亿~21.5亿;

bigint,大小为8个字节;

float大小为4个字节;

double大小为8个字节;

字符型】

char,定长字符串,大小(0-255字节)

varchar,变长字符串,大小(0-65535字节)

text,长文本数据,大小(0-65534字节)

日期时间型】

date,大小3个字节,格式为YYYY-MM-DD

datetime,大小为8个字节,格式为YYYY-MM-DD hh:mm:ss

timestamp,大小4个字节,格式YYYY-MM-DD hh:mm:ss

枚举类型】

enum,全程:enumeration

2.数据表约束规则

not null,非空

default,设置默认值

unique,唯一性

auto_increment,自动增长

primary key,设置主键

foreign key,设置外键

3.简单操作

全字段插入:insert into table_name values(?, ?, ?);

部分字段插入:insert into table_name(?, ?) values(?, ?);

查询全字段数据:select * from table_name;

查询自定字段数据:select ?, ? from table_name;

修改指定数据:update table_name set ? = ? where ...

删除指定数据:delete from table_name where ...

4.查询时可使用的关键字

distinct,去重。

select distinct username from user; 查询所有用户不同的名字

where,可根据相关条件进行查询

select * from user where userId = '123'; 查询id为123的用户的所有信息

order by,对数据进行排序,asc为升序,desc

select * from user order by userName asc; 按照升序对用户名进行排序

limit n1 (offset/,) n2,从n1+1开始检索n2条记录

select * from user limit 0, 10;从第一条数据开始检索10条记录

select * from user limit 0 offset 10;从第一条数据开始检索10条记录

select * from user limit 10;检索开始时的10条记录

其他关键字

>, <, >=, <=, !=

and, or, not

in, not in, between ... and

is null, is not null

%任意多个字符,_单个字符

5.聚合查询统计

sum, avg, count, max, min

select count(*) from user; 统计总共有多少用户

group by,根据属性进行分组,一般配合以上词语进行使用

select usersex,count(*)from user order by usersex; 统计不同性别的人数

having,针对分组后的数据进行过滤

select usersex, count(*) from user having count > 100; 展示每种性别人数大于100的

6.关联查询

on,连接后查询查询条件的限制

inner join,内连接

select * from student inner join score on student.studentId = score.studentId; 查询学生表和成绩表,学生id相匹配的所有数据

left join,左连接,right join,右连接。如果左侧的表显示完全是左连接,如果右侧的表显示完全是右连接,如果没有匹配的显示null

select * from student left join score on student.studentId = score.studentId;查询所有学生的成绩,如果某同学在学生表里存在,且不在成绩表里,成绩表内的信息显示null即可

自连接:

select * from student s1 join student s2 where s1.name = s2.name and s1.studentId != s2.studentId; 查询学生表中姓名相同的学生

子查询:

select * from student where classes_id = (select classes_id from student where studentname ='张三'); 查询张三的同班同学,首先我们要查询张三的班级,使用班级信息查询同学

union,合并两个结果集,会自动去掉重复的行

select * from score where id < 3 union select * from score where name = ‘张三’;查询id小于3或名字为张三的成绩信息,如果重复,会去重。

union all,合并两个结果集,不会自动去重。

7.索引

查看索引:show index from table_name;

创建索引:create index index_name on table_name(?);

删除索引:drop index index_name on table_name;

索引的底层是一个B+树,如下图所示

 【解析】

  • 这是一个B+树,里面的数字存放的是每条信息的Id
  • 使用索引(Id)进行查找的时候,都会从头节点开始查找,直到叶子节点
  • 只有叶子节点存放相应的完整信息,其他节点存放信息的Id.
  • 每个叶子节点都与下一个叶子节点相连

好处】

  • 查询次数稳定:这是一个平衡树,且只有叶子节点存放完整的信息,每次查询的时候,都会从头节点到叶子节点,时间复杂度总是O(logN)
  • 支持模糊和范围查询:模糊查询我们只需遍历叶子节点即可,时间复杂度为O(n),范围查询我们只需找到开始的位置,然后向后查找即可
  • 所占的内存小:由于具体的数据只有叶子节点存储,在运行的时候相对较小。

8.事务

开始事务:start transaction;

回滚或提交:rollback/commit

事务的四大特性:

原子性:要么全部执行,要么全部不执行

一致性:事务执行前后,数据都是准确靠谱的

持久性:事务的修改的内容是写到硬盘上的,持久存在的,重启后数据不会丢失

隔离性:是为了解决“并发”执行数据引起的问题

并发执行事务可能产生的问题】

脏读问题:一个数据正在修改,且没有提交,另一个事务进行读取到了这个没有提交的数据。(在写的时候读)

解决方法:对写进行加锁。

不可重复读:事务1修改了数据并提交,事务2读取了数据过程中,事务3修改了数据,导致事务2两次读相同的数据,却产生了不同的结果。(在读的时候写)

解决方法:对读加锁

幻读问题:在事务1读的时候,事务2对此表中其他数据进行了修改,导致产生了不一样的结果集。

解决方法:“串行化”执行事务。

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

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

相关文章

为什么要做海外应用市场排名

谷歌和苹果iOS应用商店的算法关键指标&#xff0c;都是基于确保应用商店推荐的应用可以满足大部分用户的需求。基于此&#xff0c;应用覆盖的关键词&#xff0c;应用评分和评论&#xff0c;和应用获取的下载量所体现的用户体验数据&#xff0c;对我们的应用能否获得商店高排名都…

Ajax简介和实例

目录 什么是 AJAX &#xff1f; AJAX实例 ajax-get无参 ajax-get有参 对象和查询字符串的互转 ajax-post ajax-post 表单 AJAX 是一种在无需重新加载整个网页的情况下&#xff0c;能够更新部分网页的技术。 什么是 AJAX &#xff1f; 菜鸟教程是这样介绍的&#xff1a…

MySQL数据修改和插入数据

1.创建表&#xff1a; 创建员工表employee&#xff0c;字段如下&#xff1a; id&#xff08;员工编号&#xff09;&#xff0c;name&#xff08;员工名字&#xff09;&#xff0c;gender&#xff08;员工性别&#xff09;&#xff0c;salary&#xff08;员工薪资&#xff09; …

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(二)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

Python基础综合案例-数据可视化(柱状图)

今天给大家带来的是Python综合实战开发的数据可视化操作 通过python实现对数据的分析、可视化 数据来源:线上公布数据&#xff0c;需要可私信 前期准备工作&#xff1a;Python可视化准备工作 前期模块安装等前期基础的准备工作大家可以看我之前的文章讲解&#xff0c;有问题可…

ROS-Moveit-ABORTED CONTROL_FAILED

问题 当我使用python程序控制机械臂作笛卡尔空间运动时&#xff0c;让其轨迹在空间中画一个正方形&#xff0c;具体程序如下 #!/usr/bin/env python # -*- coding: utf-8 -*-import rospy, sys import moveit_commander from moveit_commander import MoveGroupCommander fro…

IDEA 2023.1.3最新版安装教程

目录 一、前言 一、下载 二、安装 总结 一、前言 常常学东西都是从头学起&#xff0c;然后学了几天就没然后了。这不久前把电脑重新安装了系统&#xff0c;磁盘的东西也一股脑的全清掉了。心里只想让电脑干干净净的&#xff0c;放的东西也可以做到分门别类&#xff0c;井然…

工频耐压试验装置的产品特点

产品特点&#xff1a; 1、具有高压电压、低压电流、零位指示、电源指示、工作指示、计时指示&#xff1b;过流保护、零位启动保护、声光语言报警提醒等功能。 2、采用新型时间继电器&#xff0c;新型电流继电器 计时范围更广&#xff08;1S&#xff5e;99H&#xff09;更精确、…

Element-UI 时间选择器 el-time-picker 禁用 秒 选项

文章目录 默认格式 HH:mm:ss禁用 秒 选项el-time-picker 设置日期和时间组合自定义时间格式 默认格式 HH:mm:ss 时间选择器 format 标签默认为 HH:mm:ss <el-time-picker v-model"value"is-rangerange-separator"-"format"HH:mm:ss"start-p…

Docker学习笔记25

Docker swarm 应用&#xff1a; 镜像准备&#xff1a; 参照Docker学习笔记13&#xff0c;创建centos-nginx:v1的镜像&#xff1a; [rootswarm-1 nginxtest]# docker build -t centos-nginx:v1 . [] Building 211.5s (12/13) [] Building 211.7s (12/13) [] Building 211.8s (…

HTML 基础篇

本章内容&#xff1a; 简介 HTML定义标签定义和属性HTML5基本结构HTML5字符集 <head>标签 <title><base/><link/>&#xff08;rel、href、type&#xff09;<meta/>&#xff08;http-equiv、name、content&#xff09; <body>标签 块级标…

逻辑漏洞-密码找回

声明&#xff1a;本实验教程仅供研究学习使用&#xff0c;请勿用于非法用途&#xff0c;违者一律自行承担所有风险和责任&#xff01; 实验目的 利用密码找回漏洞&#xff0c;实现任意用户的密码重置。理解漏洞发生的场景。 实验环境 操作系统&#xff1a;CENTOS 7 软件&am…

【Centos】crontab系统定时配置加载用户环境变量

使用linux系统crontab默认是没有加载用户的环境变量的&#xff0c;所以有些命令是用不了的。 打开任务计划 crontab -e添加环境变量信息 开头加入如下内容&#xff1a; SHELL/bin/bash PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin完整内容示例如下&am…

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;液晶显示当前信息和状态&#xff1b;通过语音识别模块对当前垃圾种类进行语音识别&#xff1b; 通过蜂鸣器进行声光报警提醒垃圾桶已满&#xff1b;采用舵机控制垃圾桶打开关闭&#xff1b;超声波检测当前垃圾桶满溢程度&#xff1…

直击WAIC2023|英码正式加入华为昇腾APN,共同携手引领AI向实而生!

7月6日&#xff0c;以“智联世界&#xff0c;生成未来”为主题的世界人工智能大会&#xff08;以下简称&#xff1a;WAIC2023&#xff09;在上海世博中心盛大开幕。本届AI盛会将举办科学前沿和产业发展2场全体会议、10场主题论坛&#xff0c;以及多场生态论坛及活动&#xff1b…

数据库应用:数据库管理系统与安装MySQL数据库

目录 一、理论 1.数据库管理系统 2.关系型数据库 3.数据库 4.MySQL数据库 5.MySQL部署 二、实验 1.yum安装MySQL 2.配置MySQL数据库的Tab补全 三、问题 1.数据库登录报错 2.数据库密码复杂度报错 四、总结 一、理论 1.数据库管理系统 &#xff08;1&#xff09…

UML类图的6种关系

目录 一、UML类图的6种关系&#xff08;依赖关系由弱到强&#xff09;&#xff1a; 二、6种关系归纳总结 2.1 第一种归纳方式&#xff1a;先分组&#xff0c;再分组&#xff08;由大到小&#xff0c;由宏观到微观&#xff09; 2.2 第二种归纳方式&#xff1a;先聚合&#x…

spring-spring整合Junit

1.导包 <artifactId>spring-test</artifactId> <artifactId>junit</artifactId> 2.创建测试类

Linux性能优化实践——如何学习Linux性能优化

性能指标 学习性能优化的第一步便是了解“性能指标”这个概念。 “高并发”和“响应快”对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的角度来考察性能的&#xff0c;直接影响了产品终端的用户体验。跟他们对应的&#xff0c;是从系统资源的视…

基于Flask的问答系统的设计与实现

这个项目刚开始是跟着哔哩哔哩上的一个教程学习的&#xff0c;后面完成初步实现后&#xff0c;我按照自己的设计加入了新的功能。 文章目录 数据表mysqlredis 项目展示注册登录首页问题详情页问题回答及回复搜索功能发布问题功能评论我的功能回复我的功能我的文章功能编辑文章…