首页 > 数据库 >Mysql数据库基础篇笔记

Mysql数据库基础篇笔记

时间:2024-12-01 20:31:10浏览次数:9  
标签:事务 数据库 Mysql 笔记 查询 外键 表名 字段名

目录

sql语句

DDL——数据库定义语言(定义库,表,字段)

数据库操作:

表操作:

DML

增删改语句

DQL

语法编写顺序:

条件查询

DCL

用户管理:

权限管理:

函数

常见字符串内置函数

常见数值内置函数

常见日期内置函数

常见流程内置函数

约束

外键约束

多表查询

连接查询:

内连接:相当于查询A,B交集部分数据

外连接:

自连接:

联合查询:

子查询:

标量子查询(子查询结果为单个值)

列子查询(子查询结果为一列)

行子查询(子查询结果为一行)

表子查询(子查询结果为多行多列)

事务

概念:

操作:

事务四大特性ACID:

并发事务问题:

事物的隔离级别:

隔离操作


部分图片截取自【黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括】https://www.bilibili.com/video/BV1Kr4y1i7ru?p=62&vd_source=4aa5c9ca48e929b37821b89859f00208

仅供学习使用,感谢!

sql语句

DDL——数据库定义语言(定义库,表,字段)

数据库操作:

查询:

查询所有数据库

Show   databases;

查询当前数据库

Select   database();

创建:

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

删除

Drop database [if exists]  数据库名;

使用

Use  数据库名;

表操作:

查询

查询当前数据库中所有表

Show  tables;

查询表结构

Desc  表名;

查询指定表的建表语句

Show create  table  表名;

修改

添加字段

Alter table  表名  add  字段名 类型 [comment  注释]  [约束];

修改数据类型

Alter  table  表名  modify  字段名  新数据类型;

修改字段名和字段类型

Alter   table   表名   change  旧字段  新字段 类型(长度)[约束] ;

修改表名

Alter   table   表名  rename to  新表名;

删除

删除表

Drop  table [if  exists]  表名;

清空表

Truncate    table   表名;

DML

增删改语句

添加数据

Insert  into  表名([字段名1[,字段名2,…]]) values  (值1,值2,…) [, (值1,值2,…)];

修改数据

Update  表名  set   字段名1=值1,字段名2=值2,….[where 条件];

删除数据

Delete   from   表名  [where  条件]

注意:当添加一个字段,需要给原先的列中添加该字段的值时,需要用update设置这个值,而不是用insert插入这个值,

  insert插入的是整体字段的值,而不能插入单独一个字段的值。

DQL

语法编写顺序:

   Select   [distinct]  字段1[as  别名] ,[字段2,….]

   from  表名列表

   [where  条件列表] 

   [group   by    分组字段列表]   

   [having   分组后条件列表]  (group  by分组之后的条件过滤用having)

   [order by   字段1 排序方式1,字段2 排序方式2]   (排序方式ASC升序默认值,DESC降序:注意多字段排序,当第一个字段值相同时才会根据第二个字段进行排序)

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

条件查询

注意:“link 占位符 ”中“_”的个数表示匹配的具体个数,“%”表示匹配到任意多个;

     多字段排序,当第一个字段值相同时才会根据第二个字段进行排序;

    IN中的元素需要用“,”进行隔离;

DCL

用户管理:

查询用户

Use   mysql;

Select  *   from    user;

创建用户

Create   user   ‘用户名’@‘主机名’ identified  by ‘密码’;

修改用户密码

Alter    user  ‘用户名’@‘主机名’ identified  with   mysql_native_password  by  '新密码';

删除用户

Drop   user  ‘用户名’@‘主机名;

注意:主机名可以使用%通配。

权限管理:

创建权限:

①,查询权限

  show  grants  for   ‘用户名’@‘主机名’;

②,授予权限

  grant   权限列表  on  数据库名.表名   to   ‘用户名’@‘主机名’;

③,撤销权限

 revoke   权限列表  on   数据库名.表名   from   ‘用户名’@‘主机名’;

函数

常见字符串内置函数

注意:mysql的start位置最小为1

常见数值内置函数

案例:随机生成六位验证码

SELECT ROUND(RAND()*1000000);

常见日期内置函数

常见流程内置函数

案例:

约束

补充:mysql中的主键自增:auto-increment 

 

注意:约束是作用于表中的字段上的,可以在创建表/修改表的时候添加约束。

  如果定义not null一定要给定义默认值,放置严格模式无法正常插入

 

外键约束

外键的作用:外键是用来让表与表之间建立连接,从而保证数据的一致性和完整性。

添加外键

Create table 表名(

字段名   数据类型,

,,,

[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 行为 on delete 行为;

常用行为:级 联cascade    删除后值设置为空set null;

多表查询

多表查询分类:

注意·:关联匹配条件是到笛卡尔积里面筛选的条件

连接查询:

内连接:相当于查询A,B交集部分数据

隐式内连接:select  字段列表  from  表1,表2 where 关联匹配条件;

显示内连接:select  字段列表  from  表1  [inner] join  表2 on 关联匹配条件;(推荐使用)

外连接:

左外连接:查询左表所有数据,以及两张表交集部分数据

右外连接:查询右表所有数据,以及两张表交集部分数据

Select  字段列表  from  表1  left/right  [outer]  join  表2  on   关联匹配条件;

自连接:

        当前表与自身的链接查询,子链接必须使用表别名

联合查询:

union,union all

对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果

Select    字段列表   from  表A…….

Union

Select  字段列表  from 表B…..  ;

注意:对于查询多张表的列数必须保持一致,字段类型也需要保持一致;

  Union  all会将全部的数据直接合并在一起,union会对合并之后的数据去重;

子查询:

概念:SQL语句中嵌套select语句,称为嵌套查询,又称子查询。

语法:select   字段列表  from   表    where  字段名=(select  字段列表   from  表……..);

子查询外部的语句可以是insert/update/delete/select中的任意一个。

根据子查询结果不同,分为:

标量子查询(子查询结果为单个值)
列子查询(子查询结果为一列)

行子查询(子查询结果为一行)

常用操作符:=,<>,IN,NOT IN

表子查询(子查询结果为多行多列)

根据子查询位置:分为:where之后,from之后,select之后。

事务

概念:

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,及这些操作要么同时成功,要么同时失败。

(例如银行转账要么成功要么失败)

默认mysql的事务是自动提交的,也就是说,当执行一条dml语句,mysql会立即隐式的提交事务。

操作:

查看/设置事务提交方式:(1为自动提交,0为手动提交)

Select  @@autocommit;

Set   @@autocommit=0;

开启事务(不用更改事务提交方式):

Start  transaction  或  begin;

提交事务:

commit;

回滚事务:

rollback;

注意:开启事务或者设置为手动提交时rollback才生效;

 

事务四大特性ACID:

原子性:事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

一致性:事务完成时,必须使所有的数据都保持一致状态,

隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。

持久性:事务一旦提交或回滚,它对数据库中的数据的改变是永久的。

并发事务问题:

事物的隔离级别:

注意:“×”是可以解决相关问题,“√”反之无法解决。 repeatable read(可重复读),serializable(串行)。

隔离操作

查看事务隔离级别         select  @@transaction_isolation;

设置事务隔离                set  [session|global]  transaction  isolation  level  [read  uncommitted | read committed | repeatable read(默认)  | serializable];

注意:事务隔离级别越高,数据越安全,但是性能越低。

 

Read  commited   :解决了脏读问题,当一方提交了,另一方才会查询得到。(一方提交);

Repeatable  read    :解决了不可重复读问题,当一方提交了,另一方查询不到,只有另一方自身也提交了才会查询得到(需要双方都提交);

Serializable   :串行操作,一方执行完,另一方才可以执行;

 

 

标签:事务,数据库,Mysql,笔记,查询,外键,表名,字段名
From: https://blog.csdn.net/2301_79738727/article/details/144174193

相关文章

  • python学习笔记(0)PEP 20: Python 之禅
    Beautifulisbetterthanugly.优美胜于丑陋,Explicitisbetterthanimplicit.明了胜于晦涩,Simpleisbetterthancomplex.简洁胜于复杂,Complexisbetterthancomplicated.复杂胜于凌乱,Flatisbetterthannested.扁平胜于......
  • python学习笔记(15)算法(8)双向队列
    在队列中,我们仅能删除头部元素或在尾部添加元素。双向队列(double‑endedqueue)提供了更高的灵活性,允许在头部和尾部执行元素的添加或删除操作。一、双向队列常用操作队首入队(push_front):在双向队列的头部添加一个元素。队首出队(pop_front):删除双向队列头部的元素。队尾入队(push......
  • python学习笔记(12)算法(5)迭代与递归
    一、迭代迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段代码,直到这个条件不再满足。迭代通常用于解决需要逐步推进的计算问题,例如遍历数组、计算阶乘等。迭代的优点是内存使用效率高,易于优化,适合处理大规模数据。1.for循环......
  • 使用DataGrip连接Oracle数据库造测试数据
    文章目录前言DataGrip连接Oracle数据库连接数据库构成操作数据库造测试数据总结前言软件测试中,当涉及到对特定规则的验证时,常常需要我们在数据库中构造合适的数据。以航空公司为例,航段数与会员等级之间存在着明确的关联规则,测试这一规则需要一定的航段数,我们就需要......
  • 【LTspice学习笔记】:三线制 Pt100 测温电路
         本文是一个大三自动化专业本科生就恒流源三线制Pt100测温电路相关仿真设计的实验学习与记录过程,并对 Pt100电阻的一些原理特性以及电位计的导入做简单介绍。一、PT100介绍        PT100电阻是指在0°C时,PT100温度传感器的电阻值为100欧姆,随着温度......
  • MySQL底层概述—8.JOIN排序索引优化
    大纲1.Join算法原理2.IN和EXISTS函数3.MySQL排序之索引排序(Usingindex)4.MySQL排序之额外排序(Usingfilesort)5.排序优化之尽量使用索引排序6.索引单表优化7.索引多表优化 1.Join算法原理(1)Join简介(2)驱动表的定义(3)三种Join算法(4)总结 (1)Join简介Join......
  • MySQL底层概述—7.优化原则及慢查询
    大纲1.Explain概述2.Explain详解3.索引优化数据准备4.索引优化原则详解5.慢查询设置与测试6.慢查询SQL优化思路 1.Explain概述使用Explain关键字可以模拟查询优化器来执行SQL查询语句,从而知道MySQL是如何处理SQL语句的,从而分析出查询语句和表结构的性能瓶颈。 MySQL......
  • Trie树-字典树笔记
    Trie树-字典树笔记Trie树是一种高效的存储字符串的数据结构,它将多个字符串的前缀合并在一条边上,每次插入时,都判断当前的树上有无能够重合的前缀,如果没有就单独增加一个节点。通过合并前缀,可以做到快速查找已经优化空间的操作。下面是使用数组模拟实现Trie树的部分代码:我们首先......
  • 升鲜宝生鲜配送供应链管理系统Mysql表结构数据字典的生成小工具V0.01
    最近最近要交付升鲜宝生鲜配送供应链管理系统源代码给上海的客户,需要将蓝湖UI设计图及数据字典交接给别人。在网上找了半天没有找到合适的根据Mysql生成Word数据字典,自己就写了几行代码,记录一下.后面可能会继续改造。主要的代码如下:usingSystem;usingSystem.Collections.Gene......
  • Activiti 学习笔记
    工作流概述每一项业务的开始和结束,都可以理解为一个工作流,例如,公司的费用报销的基本流程如下:员工先提出费用报销申请,提交给部门领导,部门领导审批后,提交给财务部门审批,审批完成后,通知提出申请的员工可以报销,报销流程结束。整个流程按照步骤完成,这就是一个简单的工作流。工作流可......