MySQL 总结(简易版)

基本语法

0. 1基本语法

# 登录MySQL
$ mysql -u root -p12345612 # 退出MySQL数据库服务器
exit; -- 显示所有数据库
show databases; -- 创建数据库
CREATE DATABASE test; -- 切换数据库
use test; -- 显示数据库中的所有表
show tables; -- 创建数据表
CREATE TABLE pet (
name VARCHAR(20),
owner VARCHAR(20),
species VARCHAR(20),
sex CHAR(1),
birth DATE,
death DATE
); -- 查看数据表结构
-- describe pet;
desc pet; -- 查询表
SELECT * from pet; -- 插入数据
INSERT INTO pet VALUES ('puffball', 'Diane', 'hamster', 'f', '1990-03-30', NULL); -- 修改数据
UPDATE pet SET name = 'squirrel' where owner = 'Diane'; -- 删除数据
DELETE FROM pet where name = 'squirrel'; -- 删除表
DROP TABLE myorder; //更改表属性结构
【alter table xxx 动词 xxx】
-- 添加主键约束
-- 如果忘记设置主键,还可以通过SQL语句设置(两种方式):
ALTER TABLE user ADD PRIMARY KEY(id);
ALTER TABLE user MODIFY id INT PRIMARY KEY; -- 删除主键
ALTER TABLE user drop PRIMARY KEY;

0. 2建表约束

约束类型:

  1. 主键primary key
  2. 唯一主键 unique(name)
  3. 非空约束 not null
  4. 默认约束 default ‘男’ or default 10
  5. 外键 foreign key (id)reference class(id)
--建表约束
1. 类型后面加约束
id INT PRIMARY KEY
2. 单独一句
① 单个约束
paimary(id)
② 多个约束
primary(id,name)

0. 3 添加和删除约束

1、建表的时候可以添加约束

2、可以使用alter。。。add。。。

3、alter。。。modify。。。

4、删除用 alter。。。drop。。。

图表

1.查询语句结构

2.聚集函数

3.字符串中的通配符

4.where子句中的运算符

易错点

1. 数据库不分大小写

2. 数字和中文基本都用varchar(在有大量的英文以外的字符则用nvarchar)

3. 约束可以加在字段的后面,也可以换行单独描述字段的约束。

①(sno varchar(10) primary key);

②(sno varchar(10),

​ primary key(sno))

4. 数据库注释方法:--

5. 修改表名

ALTER TABLE table_name RENAME TO new_table_name

6.列的拼接 concat

CONCAT(last_name, ' ', first_name) as Name

7.列内容替换replace

SET emp_no = REPLACE(emp_no, 10001, 10005)
WHERE id = 5;
emp_no列中10001 替换成10005

5. 字段别名方法:constraint

5. 字段不重复方法:distinct department

5. 可以在查询后加 limit( start , number )

start:从哪开始查 (第一个下标为0)

number:查几个出来

8. union用法:求并集【union前不用逗号】

select sno,sname from student where xxxxx

union

select sno,sname from student where xxxxx;

9. ANY 和 ALL

  > ANY	大于子查询结果中的某个值 ,即大于最小值
> ALL 大于子查询结果中的所有值,即大于最大值
< ANY 小于子查询结果中的某个值 ,即小于最大值
< ALL 小于子查询结果中的所有值,即小于最小值
= ANY 等于子查询结果中的某个值 ,相当于in
=ALL 等于子查询结果中的所有值(通常没有实际意义)
!=(或<>)ANY 不等于子查询结果中的某个值,相当于not in
!=(或<>)ALL 不等于子查询结果中的任何一个值,相当于not in

10.算时间差

year(now()) - year(birthday)

11. 三大范式

1. 1NF

   字段不可拆分 (可拆分的例子:中国广东广州xx街道)

2. 2NF

   列都完全依赖于主键,否则要拆分(如果出现不完全依赖,只可能发生在联合主键的情况下,此时也要拆分为多个表)

3. 3NF

   依赖不能有传递关系,否则要拆分

12. 连接

1. 内连接 

> A inner join B on A.sno=B.sno
>
> 相当于
>
> where A.sno=B.sno 2. 左连接 (保留A中所有并且输出A∩B,无值填null) > A left join B on A.sno=B.sno 3. 右链接(保留B中所有并且输出A∩B,无值填null) > A right join B on A.sno=B.sno 4. 外连接(保留A B所有,无值填null) > A full join B on A.sno=B.sno

12. 事务

1. 设置事务(默认 autocommit=1 开启自动提交)

> set autocommit = 0 or 1; (0的时候是关闭自动提交,开启手动提交)

2. 查看事务

> select @@AUTOCOMMIT;

3. 回滚到最后一次提交(撤销)

> rollback;

4. 事务开启后,需要手动提交数据(提交后则无法回滚)

> commit;

5. 事务的开启

> ① begin;
>
> ② start transaction;

事务的两种启动方法:

1. 当autocommit=0时

   ①set autocommit=0;

   ​	......

   ​	commit;

   (每次commit前的都算一次事务)

2. 当autocommit=1时(默认)

   ①begin; (start transaction;)

   ​	......

   ​	commit;

   (begin ~~~ 到 commit;才是一次事务)

   ②.........;(每次输入都是一次事务)

13. 事务的特性

1. 原子性

   事务是最小单位,不可再分割,要么一起成功,要么一起失败。

2. 一致性

   编写的程序某个特性要一致,如:not null。

3. 隔离性(**表中下面的隔离级别高,性能低**)

   并发事务之间是隔离的,在事务未提交之前不能被其他session查看

4. 持久性

   事务一旦提交则对数据的改变是无法回滚的。

14. 事务隔离级别操作

1. 查看

   > 系统级别
>
> SELECT@@GLOBAL.TRANSACTION_ISOLATIO;
>
> 会话级别
>
> SELECT @@TRANSACTION_ISOLATION; 2. 修改 > -- 设置系统隔离级别,LEVEL 后面表示要设置的隔离级别 (READ UNCOMMITTED)。
>
> SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

15. 事务的隔离级别

事务的隔离性可分为四种 ( 性能从低到高 ) :(系统默认是REPEATABLE READ)

  1. READ UNCOMMITTED ( 读取未提交 )

    官方:如果有多个事务,那么任意事务都可以看见其他事务的未提交数据

  2. READ COMMITTED ( 读取已提交 )

    理解:自己操作的时候别人提交会影响我的数据。

    官方:只能读取到其他事务已经提交的数据

    【事务A对表查询,事务B对表操作,事务A再查询表数据是不变的,但B提交后,A再次查询的数据就是B改变后的数据】

  3. REPEATABLE READ ( 可被重复读 ) 

    理解:事务间相互独立,只有完成了(提交)自己的部分才能看到别人的操作。

    官方:如果有多个连接都开启了事务,那么事务之间不能共享数据记录,否则只能共享已提交的记录。

    【事务A对表查询,事务B对表操作后提交,事务A在未提交前,A查到的表数据不变,一旦A提交后再次查询得到的表数据是B更改完的】

  4. SERIALIZABLE ( 串行化 )

    官方:所有的事务都会按照固定顺序执行,执行完一个事务后再继续执行下一个事务的写入操作

    (前一个事务未commit ,下一个事务将会等待)

16. 事务带来的问题

1. 脏读

   解释:一个事务读取到另外一个事务还未提交的数据

   例子:【小明赖账】小明买东西给了钱,商家发了货,小明回滚。

2. 不可重复读

   解释:在读取同一个表的数据时,可能会发生前后不一致的情况

   例子:【小明算账】小张在算A表平均值,小刘又正在改动A表,小张最后算出来的是小刘改动后的表的平均值。

3. 幻读

   解释:一个事务提交的数据,不能被其他事务读取到

   例子:【小明建q号】小明在a地创建x账号,恰好小刘在小明前几秒创建了x账号,此时小明创建不了x账号,因为已经存在了,但小明查表显示却无x账号。

MySQL 知识点总结(简易版)的更多相关文章

  1. mysql性能优化-简易版

    mysql性能优化 sql语句优化 如何发现有问题的sql? 开启mysql慢查询 show variables like 'slow_query_log' set global slow_query ...

  2. 基于 Mysql 实现一个简易版搜索引擎

    前言 前段时间,因为项目需求,需要根据关键词搜索聊天记录,这不就是一个搜索引擎的功能吗? 于是我第一时间想到的就是 ElasticSearch 分布式搜索引擎,但是由于一些原因,公司的服务器资源比较紧 ...

  3. Android学习之路——简易版微信为例(三)

    最近好久没有更新博文,一则是因为公司最近比较忙,另外自己在Android学习过程和简易版微信的开发过程中碰到了一些绊脚石,所以最近一直在学习充电中.下面来列举一下自己所走过的弯路: (1)本来打算前端 ...

  4. Android学习之路——简易版微信为例(二)

    1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样, ...

  5. 学生管理系统(SSM简易版)总结

    之前用 Servlet + JSP 实现了一个简易版的学生管理系统,在学习了 SSM 框架之后,我们来对之前写过的项目重构一下! 技术准备 为了完成这个项目,需要掌握如下技术: Java 基础知识 前 ...

  6. C# socket实践 - 简易版FTP(Server & Client)

    写了个简易版的ftp(服务器和客户端),运行效果如下图: click download下载中的UI: 原理:模仿正规ftp方式,分成2个socket连接:文本命令socket.数据信道socket. ...

  7. Java与Scala的两种简易版连接池

    Java版简易版连接池: import java.sql.Connection; import java.sql.DriverManager; import java.util.LinkedList; ...

  8. Dubbo入门到精通学习笔记(九):简易版支付系统介绍、部署(单节点)

    文章目录 部署(单节点) 一.前期准备 二.对部署环境进行规划 创建数据库 调整公共配置文件 应用部署前期准备 部署服务 部署 Web 应用 部署定时任务 一. 工程结构 第三方支付系统架构 pay- ...

  9. 深入理解Mybatis(第一讲)——手写ORM框架(简易版Mybatis)

    我们来自定义一个持久层框架,也就是Mybatis的简易版. 使用端的搭建 idea中新建maven工程IPersistence_test: 在resources目录下新建sqlMapConfig.xm ...

  10. 闭关修炼180天--手写持久层框架(mybatis简易版)

    闭关修炼180天--手写持久层框架(mybatis简易版) 抛砖引玉 首先先看一段传统的JDBC编码的代码实现: //传统的JDBC实现 public static void main(String[ ...

随机推荐

  1. 第三方测评:GaussDB(for Redis)稳定性与扩容表现

    摘要:本文将通过采用Redis Labs推出的多线程压测工具memtier_benchmark对比测试下GaussDB(for Redis) 和原生Redis的特性差异 本文分享自华为云社区<墨 ...

  2. 关于HTTPS认证,这里解决你所有疑惑

    摘要:从签发证书到数据加密交互,按流程的进展讲解HTTPS认证过程内容和原理. 本文分享自华为云社区<故事+图文,一次性解决你对HTTPS认证过程的所有疑惑>,作者:breakDraw. ...

  3. 中企出海,用火山引擎DataTester开启增长第一步

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   今年 Google 宣布其提供的A/B测试工具 Optimize 将在2023年9月30号停止服务.在全球化浪 ...

  4. A/B实验背后的秘密:样本量计算

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 一.前言 背景: AB实验具有一定前瞻性,统计性,科学性的特性.用好了就实现了在大数据时代的充分利用数据分析问题, ...

  5. 十分钟读懂火山引擎 DataLeap 数据治理实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 日前,火山引擎数智平台 VeDI 直播活动「超话数据」在线举办,来自火山引擎 DataLeap 数据产品专家从数据 ...

  6. Solon2 开发之IoC,七、切面与函数环绕拦截

    想要环绕拦截一个 Bean 的函数.需要三个前置条件: 通过注解做为"切点",进行拦截(不能无缘无故给拦了吧?费性能) Bean 的 method 是被代理的 在 Bean 被扫描 ...

  7. 【换模型更简单】如何用 Serverless 一键部署 Stable Diffusion?

    作者|寒斜(阿里云智能技术专家) 前文回顾 AI 作画火了,如何用 Serverless 函数计算部署 Stable Diffusion? [自己更换模型]如何用 Serverless 一键部署 St ...

  8. vue-cli3.x中public和assets的区别

    今天开发了一个html5视频播放功能. vedio.mp4资源放在public文件夹下.那vue-cli3.x中public和assets的区别 vue-cli3.0有两个放置静态资源的目录分别是pu ...

  9. P5730

    这道题莫名其妙的在本地能过可是洛谷上却0分,把WA的点下载下来之后发现我输出的和他要输出的明明一模一样,说明洛谷的评测有一些问题.我把getchar输入换成cin输入后就AC了,说明洛谷对getcha ...

  10. .NET CORE实战项目之CMS 开发篇 思维导图

    导图地址下载: 链接:https://pan.baidu.com/s/1sGiNZI-pc_yueqQiddvImQ 提取码:ql4v -------------------------------- ...