首页 > 数据库 >day06-Mysql数据库

day06-Mysql数据库

时间:2024-03-05 10:58:34浏览次数:21  
标签:主键 数据库 day06 查询 索引 Mysql 2.1 数据 连接

Mysql

一、概述

1.1 数据模型

关系型数据库RDBMS,由多张二维表组成的数据库

1.2 SQL

  • DDL:数据定义语言
  • DML:数据操作语言
  • DQL:数据查询语言
  • DCL:数据控制语言,创建用户,控制数据库访问权限

二、sql语句

2.1 DDL

2.1.1 查询:

  • show databases;
  • select database();

2.1.2 创建:

  • create database;

2.1.3 删除:

  • drop database;

2.1.4 约束:

  • 非空约束:not null
  • 唯一约束:unique
  • 主键约束:非空且唯一,primary key,(auto_increment自增)
  • 默认约束:default
  • 外键约束:foreign key

2.1.5 数据类型

  • 数值类型:int、decimal
  • 字符串类型:char(定长字符串)、varchar(变长字符串)
  • 日期时间类型:date、 datetime

2.2 DML

2.2.1 添加数据:insert

insert into table_name (字段名) values (字段值列表)

2.2.2 修改数据:update

update table_name set 字段名 = 字段值 [where 条件]

2.2.3 删除数据:delete

delete from table_name [where 条件]

2.3 DQL

查询数据库中的记录

2.3.1 分组查询

  • 聚合函数:将一列数据作为一个整体,进行纵向计算

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

  • 执行顺序:where > 聚合函数 > having

2.3.2 排序查询

order by

asc:升序(默认)

desc:降序

2.3.3 分页查询

limit (起始索引,每页展示记录数)

起始索引 = (页码 - 1)* 每页展示记录数

三、多表设计

3.1 一对多

解决多表之间数据不一致性

外键约束

3.2 一对一

任意一方加入外键,关联另一表中的主键,并且添加unique约束

3.3 多对多

建立第三张表,包含两张表的主键

四、多表查询

4.1 概述

从多张表中查询数据:笛卡尔积

分类:

  • 连接查询
    • 内连接
    • 外连接
  • 子查询(嵌套查询)

4.2 内连接

隐式内连接:逗号分隔,where条件

显示内连接:join……on条件

起别名

弊:无关联的数据查询不到

4.3 外连接

左外连接:显示左表的全部数据

右外连接:显示右表的全部数据

4.4 子查询

4.4.1 标量子查询

子查询返回的结果是单个的值,单行单列。

常用操作符:= <> > < >= <=

4.4.2 列子查询

子查询返回的是一列数据

常用操作符:in,not in

4.4.3 行子查询

合并多个条件

4.4.4 表子查询

将子查询返回的结果,作为一张临时表,进行连接查询等操作

五、事务

5.1 概述

事务是一组操作的集合,这些操作要么同时成功,要么同时失败。

  • 开启事务:start transaction;
  • 提交事务:commit;
  • 回滚事务:rollback;

5.2 四大特性

  • 原子性:
  • 一致性:
  • 隔离性:
  • 持久性:

六、索引

6.1 介绍

数据结构,提高执行效率

  • 优:提高查询效率、排序效率
  • 缺:降低增删改的效率

6.2 结构

B+Tree结构

多路平衡搜索树,降低树的深度

6.3 语法

  • 创建:create index 索引名 on 表名;
  • 查询:show index from 表名;
  • 删除:drop index 索引名 on 表名;

注:

  1. 添加主键时会自动创建主键索引
  2. 添加unique约束会自动创建唯一索引

标签:主键,数据库,day06,查询,索引,Mysql,2.1,数据,连接
From: https://www.cnblogs.com/forest-pan/p/18053492

相关文章

  • 神舟通用数据库安装(交互方式)
    环境:OS:Centos7DB:V71.介质下载地址http://www.shentongdata.com/old_bak/iso/wzsyx/ShenTong7.0_linux64.rar 2.安装rar[root@localhostsoft]#tar-xvfrarlinux-x64-5.3.0.tar.gz[root@localhostsoft]#cdrar[root@localhostrar]#makeinstall3.解压数据库安装包[r......
  • dpkg安装mysql时失败卸载不掉踩的坑
    原文:https://blog.csdn.net/Camu7s/article/details/43485985nbuntu下彻底卸载mysql:apt-getautoremove--purgemysql-serverapt-getremovemysql-serverapt-getremovemysql-clientapt-getremovemysql-common最后清楚残留数据(important!!!):dpkg-l|grep^rc|awk'{print......
  • jinq 入门介绍-java中编写数据库查询的简单自然的方式
    拓展阅读linqquerydslJinq是什么?Jinq为开发者提供了一种在Java中编写数据库查询的简单自然的方式。你可以像处理存储在集合中的普通Java对象一样处理数据库数据。你可以使用普通的Java命令遍历和过滤它们,而你的所有代码都将自动转化为优化的数据库查询。最后,Java终于有......
  • GaussDB跨云容灾:实现跨地域的数据库高可用能力
    本文分享自华为云社区《GaussDB跨云容灾:实现跨地域的数据库高可用能力》,作者:GaussDB数据库。金融、银行业等对数据的安全有着较高的要求,同城容灾建设方案,在绝大多数场景下可以保证业务数据的安全性,但是在极端情况下,如遇不可抗力因素等,要保证数据的安全性,就需要采取跨地域的容灾......
  • 数据库系列:大厂使用数据库中间件解决什么问题?
    相关文章数据库系列:MySQL慢查询分析和性能优化数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能数据库系列:前缀索引和索引长度的取舍数据库系列:My......
  • MySQL批量更新10万条数据怎么最快?
    如果10万条数据进行批量更新该怎么操作呢?我们一起来看看具体可以怎么做。mysql批量更新如果一条条去更新效率是相当的慢,循环一条一条的更新记录,一条记录update一次,这样性能很差,也很容易造成阻塞。mysql批量更新共有以下四种办法1、.replaceinto批量更新replace into ......
  • MySQL锁系列(二)之 锁解读
    原文链接https://keithlan.github.io/2017/06/05/innodb_locks_show_engine/背景锁系列第一期的时候介绍的锁,我们要如何去解读呢?在哪里能够看到这些锁?锁信息解读工欲善其事必先利其器showengineinnodbstatus关于锁的信息是最详细的案例一(有索引的情况)前期准备......
  • MySQL锁系列(一)之锁的种类和概念
    原文链接https://keithlan.github.io/2017/06/05/innodb_locks_1/背景锁是MySQL里面最难理解的知识,但是又无处不在。一开始接触锁的时候,感觉被各种锁类型和名词弄得晕头转向,就别说其他了。本文是通过DBA的视角(非InnoDB内核开发)来分析和窥探锁的奥秘,并解决实际工作当中遇到的问......
  • 推荐一个Mysql客户端命令行神器
    目录软件主页安装选项参考命令链接数据库参考网址​​ 今个推荐一个MySQL命令行客户端---MyCli,其支持命令的自动补全和语法高亮;软件主页MyCli--HomePags安装#Mycli支持在Python环境,MacOS,Windows系统下安装使用,pip3installmycli#Python下安装,解释器......
  • MySQL之事务
    事务什么是事务事务transaction(简写tx),在数据库中,事务是指一组逻辑操作,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与结束之间执行的全部数据库操作组成。事务的作用保证了对数据操作的安全性,保证数据的一致性例子:还钱的例子还钱的账户数......