首页 > 数据库 >Mysql学习笔记

Mysql学习笔记

时间:2023-02-01 17:44:41浏览次数:47  
标签:JOIN SQL 数据库 Mysql 笔记 学习 索引 sid MySQL

Mysql是关系型数据库管理系统,管理的数据库是一堆关联表的集合。这里的表可以看作是一个二维表格,里面的每一行表示一条记录,是一组相关的数据。每一列存储的是一个属性对应的数据。 相关的概念如下:

冗余: 同样的数据存储多份,冗余会导致存储空间的浪费,适当的冗余可以提高查询速度。 冗余存在于多种level上: 表的冗余/属性的冗余/元组的冗余以及属性值的冗余  参考: https://blog.csdn.net/weixin_29985807/article/details/113223373

主键:一个表中主键是唯一的,可以用主键来查询数据。

外键: 用于表和表之间的连接,关联两个表。

复合键:将多个列作为一个组合键,一般用于复合索引。

索引:使用索引可以快速访问数据库表中的特定信息,索引是对数据库表中的一列或者多列进行排序的一种结构。

参照完整性:要求关系中不允许引用不存在的实体。参照完整性和实体完整性是关系模型中必须满足的完整性约束条件,目的是保证数据一致性。

 

记录一下本人不太熟悉的mysql 知识点:

在这里执行SQL语句:https://www.db-fiddle.com/

MySQL创建数据库

使用下面的命令创建一个名为 DBTest的数据库

mysqladmin -u root -p create DBTest 

MySQL删除数据库

使用下面的命令删除名为DBTest的数据库

mysqladmin -u root -p drop DBTest

创建数据表

使用下面的命令创建数据表

CREATE TABLE table_name(column_name column_type)

创建数据表student

CREATE TABLE IF NOT EXISTS student(
    sid  INT,
    sname VARCHAR(20),
    sbirth DATE,
    sgender VARCHAR(10)
);

创建数据表class

create table IF NOT EXISTS class(
    sid INT,
    sname varchar(20),
    sclass varchar(10)
);

 

插入数据

使用下面的命令插入数据

INSERT INTO table_name( field1, field2, field3,...fieldN)
                      VALUES
                      ( value1, value2, value3,...valueN);

向student表中插入数据

INSERT INTO student values
(1 , '赵雷' , '1990-01-01' , '男'),
(2 , '钱电' , '1990-12-21' , '男'),
(3 , '孙风' , '1990-12-20' , '男'),
(4 , '李云' , '1990-12-06' , '男'),
(5 , '周梅' , '1991-12-01' , '女'),
(6 , '吴兰' , '1992-01-01' , '女'),
(7 , '郑竹' , '1989-01-01' , '女'),
(9 , '张三' , '2017-12-20' , '女'),
(0 , '李四' , '2017-12-25' , '女');

向class表中插入数据

INSERT INTO class values
(1 , '赵雷' , '一班'),
(2 , '钱电' , '二班'),
(3 , '孙风' , '三班'),
(4 , '孙六' , '四班');

 

查询数据

SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
  • 你可以使用 LIMIT 属性来设定返回的记录数。

 

 

连接

INNER JOIN(内连接/等值连接):获取两个表中字段匹配的记录 得到的是两个表的交集

1 SELECT * 
2 FROM TableA A
3 INNER JOIN TableB B
4 on A.key = B.key

LEFT JOIN(左连接): 获取左表的所有记录,右表获取的是和左表的交集

当使用 WHERE B.key is NULL过滤时,得到的是 A-(A和B的交集)

查询语句:

SELECT *
FROM student s
LEFT JOIN class c
   ON s.sid = c.sid AND s.sname = c.sname
WHERE c.sid is NULL

结果:

 

RIGHT JOIN(右连接):获取右表的所有记录 左表获取的是和右表的交集

SELECT *
FROM student s
RIGHT JOIN class c
   ON s.sid = c.sid AND s.sname = c.sname
WHERE s.sid is NULL

 

查询语句

SELECT *
FROM student s
RIGHT JOIN class c
   ON s.sid = c.sid AND s.sname = c.sname
WHERE s.sid is NULL

 

当使用 WHERE A.key is NULL过滤时,得到的是 B-(A和B的交集)

结果

 

 FULL OUTER JOIN:外连接,得到的是A和B的并集

SELECT 
FROM Table A
FULL OUTER JOIN Table B
ON A.key = B.key

事务

MySQL事务主要用于处理操作量大,复杂度高的数据。多个操作对应一个事务。

  • 在MySQL中,只有使用了Innodb数据库引擎的数据库或表才支持事务。
  • 事务处理用来维护数据库的完整性,保证成批的SQL语句 要么全都执行,要么全都不执行。
  • 事务用来管理 insert,update,delete语句。

事务必须满足四个条件:

A(Atomicity)原子性:一组事务,要么成功,要么撤回,即事务在执行过程中出错会回滚到事务开始前的状态。

C(Consistency)一致性:一个事务不论是开始前还是结束后,数据库的完整性没有被破坏。

I(Isolation)隔离性:数据库允许多个事务并发的同时对其数据进行读写修改等操作,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致性。

  事务隔离分为:读未提交/读提交/可重复读/串行化

D(Durability)持久性:事务在处理结束后对数据做出的修改是永久的,无法丢失。

MySQL ALTER

MySQL ALTER命令用来修改表名,修改表

标签:JOIN,SQL,数据库,Mysql,笔记,学习,索引,sid,MySQL
From: https://www.cnblogs.com/starter-songudi/p/17083636.html

相关文章

  • 建筑行业VR安全体验,亲身感受事故危害,学习安全技能
    建筑安全VR体验教育是一种利用虚拟现实技术来提高工地安全意识的新型安全教育方式,它不仅可以让工人们在没有实际危险的情况下学习安全技能,而且还能让他们体验到真实的安全......
  • MySQL-JDBC反序列化分析
    0x01前言听师傅们说这条链子用的比较广泛,所以最近学一学,本来是想配合着tabby或是codeql一起看的,但是tabby的环境搭建一直有问题,耽误了很久时间,所以就直接看了。0x......
  • Java基础学习09
    今天简单做小系统,之前也做过的类似的系统,想重新复习一次逻辑业务(2023-02-01-16:10:49)这次学到有了一个小的函数//获取本地时间并将时间格式化,调用sdf.format(date)输出......
  • 随堂笔记3-spring之底层架构核心概念解析
    1.BeanDefinition:bean定义,有一些特定属性描述bean,比如bean类型-class,scope作用域,lazyInit是否懒加载2.beanDefinitionReader:beanDefinition读取器,比如AnnotationBeanDe......
  • 2023年JS学习记录
    2023/1/30星期一https://blog.csdn.net/Augenstern_QXL/article/details/119249534短路运算(逻辑中断)短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时......
  • ElasticSearch 学习笔记
    ElasticSearch基础知识索引index一个索引就是一个拥有几分相似特征的文档的集合。索引就类似于关系型数据库中的库的概念。类型type一个类型是索引中的一......
  • 学习bash反弹shell过程中所想到的
       bash-i>&/dev/tcp/ip/port0>&1   在这一句命令中,主要包含两个问题:“>&”和“/dev/tcp/ip/port”。1. /dev/tcp/ip/port  /dev目录下存放这设备文......
  • markdown入门学习
    1、标题(1)一级标题:#演示:一级标题一级标题的另一种写法:下一行写===演示:一级标题的另一种写法(2)二级标题:##演示:二级标题二级标题的另一种写法:下一行写---演示:二级......
  • HTTP学习笔记3-HTTP报文
    HTTP协议主要由三大部分组成:起始行(startline):描述请求或响应的基本信息;头部字段(header):使用key-value形式更详细地说明报文;消息正文(entity):实际传输的数据,它不一定是纯文......
  • [网络同步] < 网络同步在游戏历史中的发展变化> 阅读笔记
    最近阅读: 网络同步在游戏历史中的发展变化  https://mp.weixin.qq.com/s/9Nghv8O9HXJFVf6L1m9wpg  学到不少,大致对游戏网络有了大方向的了解,做个记录。 1.帧同步......