当前位置: 首页 > news >正文

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  ‘用户名’@‘主机名;

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

权限管理:

权限操作都是以root身份登陆进行grant授权

创建权限:

①,查询权限

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

②,授予权限

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

③,撤销权限

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

函数

常见字符串内置函数

注意:mysqlstart位置最小为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   :串行操作,一方执行完,另一方才可以执行;

 

 


http://www.mrgr.cn/news/79300.html

相关文章:

  • LearnOpenGL学习(高级OpenGL -- 深度测试,模板测试,)
  • xss学习前的基础
  • 期末复习-Hadoop名词解释+简答题+代码题hive
  • WordPress阅读文章显示太慢的处理
  • vue 一行显示的动态消息
  • 鸿蒙应用获取wifi连接的ip地址(官方文档获取的格式转换成192.168.1.xxx格式)
  • Linux-实用操作
  • Redis的五种数据类型(String、Hash、List)
  • centos 常见问题处理
  • Qt 面试题学习13_2024-12-1
  • ScribblePrompt 医学图像分割工具,三种标注方式助力图像处理
  • 构建万能 MOCK-API
  • Ubuntu显卡驱动安装
  • 阿里云ECS服务器域名解析
  • 在 MacOS 上为 LM Studio 更换镜像源
  • 使用MATLAB从Excel文件读取数据并绘制堆叠柱状图
  • 数据结构之四:堆和二叉树
  • 数据库分库分表策略
  • flex布局容易忽略的角色作用
  • Android 第三方框架:RxJava:源码分析:观察者模式