MySQL知识点汇总

一.数据库的基本概念

  1. 数据库: 数据库中存放的一般是多张表

  2. 表: 表是用来存放数据

  3. 关系: 两个表单公共字段

  4. 行 : 也称为叫记录 , 也叫实体

  5. 列 : 也称为叫字段 , 也叫属性.

数据冗余数据冗余可以减少 , 但是不能杜绝 减少数据冗余的方法就是分表

二.数据库的操作

# 创建数据库

CREATE database student;

#显示所有数据库(了解)

show DATABASES;

#删除数据库

drop database `$%`;

# 如果存在 就删除

drop database if exists `create`;

# 选择数据库 (选中)

use student;

三.数据表的操作

#创建数据表

create table [if not exists] student1(

`字段名` 数据类型 [null | not null] [default][primary key] [comment],

`字段名` 数据类型

)[engine = 引擎的名称 ] [charset = 字符编码 ]

解释:{

primary key 主键 : 主键的值不能重复 , 不能为空 , 每张表必须只能有一个主键(其目的是为了标识每条记录,避免数据不完整)

auto_increment : 自动增长, 默认从1开始 每次递增 1

comment :备注

engine : 引擎 数据库存储的引擎 引擎决定了数据的查找和存储

默认 myisam

常用 innodb

}

#删除表

drop table [if exists] 表名;

#修改表  在修改表结构中使用的指令是 alter

ALTER TABLE 数据表名称 MODIFY 字段名 新数据类型;

#添加字段

alter table 表名 add 字段名 数据类型 [位置]

#删除字段

alter table 表名 drop 字段名;

四.数据的操作(增删改查)

#插入数据

insert into 表名 values(值1,值2)

insert into 表名 (字段1,字段2) values(值1,值2)

# 插入相关的数据

INSERT INTO stuinfo VALUE('男' , 5, '郭佳坤' ,19 , 13100001111)

#删除数据

delete from 表名 [where 条件];

#删除所有的记录

DELETE FROM stuinfo;

#更改数据

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

#查询数据

select 字段名 from 表名
 

注(提醒):

  • DELETE FROM 和TRUNCATE TABLE的 区别

    • delete from :是遍历表记录 , 一条一条的删除

    • TRUNCATE TABLE: 将原表销毁 , 在重新创建一个同结构的新表,

    • 就清空表数据而言, 第二种的效率要高

五.数据类型 

MySQL是强类型语言,php是弱类型语言

1.整型

整型常用的有 tinyint  int

整型占用的字节数范围(带负数)
范围(不带负数)
tinyint1-128~1270-255
smallint2-32768~327670-65535
mediumint3-8388608~83886070-16777215
int4-2147483648~21474836470-4294967295
bigint8-9223372036854775808~92233720368547758070-18446744073909551615

特别注意:

选择的范围尽可能小 , 范围越小占用的资源就越少

无符号整型( unsigned )无符号整型就是没有负数

整型支持显示宽度:

Zerofill 整型支持显示宽度 , 显示带宽是最小的显示位数 ,如int(11)表示整型最少用11位数字来表示

如果不够用0 来填充 . 显示默认宽度不起作用 ,

必须要结合 zerofill来使用才能起作用

2.浮点型 

浮点型占用字节数范围
float(单精度型)4-3.4E+38~3.4E+38
double(双精度型)8-1.8E+308~1.8E+308

定点数

一般用来存钱

原理:

将整型部分和小数部分分开存储

语法:

decimal(M,D)

3.字符型 

数据类型描述
char定长字符,最大可以到255
varchar可变长度字符,最大可以到65535
tinytext2^8^–1 =255
text2^16^–1 =65535
mediumtext2^24^–1
longtext2^32^–1

问(易考点):

  varchar和char的区别是什么?

        char 固定长度,当存入的字符串长度小于设置值时,该字段所占空间为设置的值;

        varchar 可变长度,当存入的字符串长度小于设置值时,所占空间为字符串实际长度

        char类型的效率比varchar的效率稍高

        char最大长度是255字符,varchar最大长度是65535个字节

  1. Datatime 是日期时间型

  2. Year (年)

  3. Time (时间)

  4. 在MySQL不支持布尔型(boolean)

电话号码一般使用什么数据类型存储? < varchar > varchar (字符型 )

手机号码用什么数据类型 < char(11) > (字符型)

性别一般使用什么数据类型存储? < tinyint >

年龄信息一般使用什么数据类型存储? <tinyint >

照片信息一般使用什么数据类型存储? <binary>

薪水一般使用什么数据类型存储? <decimal>

六.MySQL—约束 

 六大约束

1 主键(primary key):用于保证该字段的值具有唯一性并且不能为空,也起到标识列的作用

2 唯一(unique):用于保证该字段的值具有唯一性,可以为空

3 非空(not null): 用于保证该字段的值不能为空

4 默认值(default):用于保证该字段有默认值

5 检查(check):mysql中不支持,用于检查字段中是否为指定值

6 外键(foreign key):用于限制两张表的关系,用于保证该字段的值必须来自于主表的关联列的值, 在从表添加外键约束,用于引用主表中某些值

区别
主键1、不能重复,不能为空 2、一个表只能有一个主键
唯一键1、不能重刻,可以为空 2、一个表可以有多个唯一键

七.查询(重要)

  • 聚合函数:

  1. 求和 sum()

  2. 求平均值 avg

  3. 最大值 max()

  4. 最小值 min

  5. 计数 count()

  6. Round 四舍五入

  7. rand() 随机数

  8. Abs 求绝对值

  • 简单查询:

  • select [选项] 列名 [from 表名] [where 条件] [group by 分组] [order by 排序][having 条件] [limit 限制]

  • Group by 分组排序

  1. 语法: order by 排序字段名称 排序规则;

  2. 排序规则:ASC 升序 默认 DESC 降序

  • 分页查询:

  • 语法

  • select * from 表名 limit [起始位置],显示长度 SELECT * FROM stu LIMIT 6,3;

  •  模糊查询

  • 通配符

  • 在Css * (所有的标签)

  • 在MySQL中 

  1. _ [下划线] 表示任意一个字符

  2. % 表示任意字符

高级查询

左外连接

select * from 表1 left join 表2 on 表1.公共字段=表2.公共字段

SELECT * FROM info LEFT JOIN scroll ON scroll.`sid` = info.`id`;

 # 常用的数据类型

# mysql 有布尔型????

# 整型

# int tinyint (-127 ~ 128) smallint (-65534 ~ 65535) int(4个字节)

# 浮点型

# float doble

# 定数型(一般用在钱)

# decmal (10,2)

# 字符型

# 定长 char # 变长字符 varchar

# data时间型

# 日期 # 2022-9-7

# 时间日期 # 2022-9-7 9:23:00

八.事务 

(一)事务的特征

事务必须具有以下四个属性, 简称 ACID 属性

  • 原子性(Atomicity): 事务是一个完整的操作, 事务的各步操作是不可分割的(原子的),要么都执行, 要么都不执行
  • 一致性(Consistency): 当事务完成时, 数据必须是一致的状态.
  • 隔离性(Isolation): 对数据进行修改的所有并发事务之间是彼此隔离的
  • 永久性 (Durability) : 当事务完成后, 数据库的修改是被永久保存的

(二)事务的处理

        开启事务

start transaction 或 

begin [word]

提交事务 

 commit

    回滚事务  

rollback

 九.视图

 (一)创建视图

create table 表名()

create view 视图的名字 as select * from 表名;

# 创建一个视图

CREATE VIEW vorder AS SELECT * FROM `order`;

SELECT * FROM vorder CREATE VIEW vorder1 AS SELECT num FROM `order`;

SELECT * FROM vorder1;

# 修改视图

ALTER VIEW vorder AS SELECT gid FROM `order`; SELECT * FROM vorder

# 删除视图

DROP VIEW vorder;

 十.触发器和逻辑控制

(一)触发器 

btn.onclick = 执行的一件事情 点击
滑入 onmouseover
移出 onmouseout

(二)事件类型

  • 增加 insert

  • 删除 delete

  • 更改 update

(三)触发时机

  • 前 before

  • 后 after

(四)创建触发器

 CREATE TRIGGER 触发器名字 触发器的时间 事件类型 ON 表名 FOR EACH ROW

BEGIN

代码体

END

-- test 库存
CREATE TABLE my_goods(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
price DECIMAL(10,2) DEFAULT 1,
inv INT COMMENT '库存数量')CHARSET utf8;
 
INSERT INTO my_goods VALUE (NULL, 'iPhone11 Pro' , 7888, 100),(NULL, 'iPhone11
Pro Max' , 9888, 100);
-- 订单
CREATE TABLE my_orders(
id INT PRIMARY KEY AUTO_INCREMENT,
gid INT NOT NULL COMMENT '商品id',
g_number INT NULL COMMENT '商品数量')CHARSET utf8
SHOW TABLES;
SELECT * FROM my_goods;
SELECT * FROM my_orders;
# 创建触发器
DELIMITER **
-- 实例
CREATE TRIGGER after_order AFTER INSERT ON my_orders FOR EACH ROW
BEGIN
 
-- 写的代码是 当订单表的 number 中的值插入为 2 那么就应该让库存表 - 2
UPDATE my_goods SET inv = inv - new.g_number WHERE id = new.gid;
# UPDATE my_goods SET inv  = 97- 10 WHERE id = 1;
END
**
 
SELECT * FROM `my_goods`;

 (五)查看触发器

show triggers ;

(六)删除触发器 

drop trigger 触发器名字;

-- 实例

drop trigger after_order;

逻辑控制

  • 假如用户购买的数量超过库存的数量

  • 应该怎么办

  • 代码执行的结构

    • 顺序执行

    • 选择执行

      • if(分支 )

    • 循环结构

if 条件 then

else

end if

实例:

DELIMITER ||
CREATE TRIGGER after_order AFTER INSERT ON my_orders FOR EACH ROW
BEGIN
 
SELECT inv FROM my_goods WHERE id = new.gid INTO @inv;
 
IF @inv < new.g_number THEN
 
INSERT INTO xxxx VALUES(12312312);
END IF;
UPDATE my_goods SET inv = inv - new.g_number WHERE id = new.gid;
END||
DELIMITER ;
 
INSERT INTO `my_orders` VALUE(NULL,1,10)

 十一.Mysql子程序

子程序:在js中或者在java中有一段代码的属性并且需要调用才能执行的代码块才称之为函数

(一) 创建一个存储过程

-- 语法
create procedure 存储过程的名字([参数列表])
begin
 
end
-- 实例
# 封装为一个存储过程
DELIMITER //
CREATE PROCEDURE queryGoods ()
BEGIN
SELECT * FROM `my_goods`;
 
END//
-- 调用存储过程
CALL queryGoods();

存储过程的调用方式:

call 存储过程的名字;

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
测试工程师在使用MySQL时需要掌握以下知识点: 1. SQL语句的使用:熟悉SQL语句可以提高测试工程师在数据库校验和接口自动化中的效率。常用的SQL语句包括查询、插入、更新和删除等操作,测试工程师需要了解这些基本的SQL操作以及各种查询条件的使用。 引用 2. MySQL客户端工具:测试工程师可以使用MySQL的客户端工具来连接和管理数据库。常用的MySQL客户端工具包括Sequel Pro、Navicat和SQLyog等。测试工程师需要熟悉这些工具的使用,包括连接数据库、执行SQL语句以及查看和修改数据等操作。 引用 3. 数据库校验:测试工程师在测试过程中通常需要对数据库中的数据进行校验,确保系统的各个模块正常运行和数据的一致性。测试工程师需要了解如何编写SQL语句来验证数据库中的数据是否符合预期结果。 引用 总结起来,测试工程师在MySQL方面的知识点包括SQL语句的使用、MySQL客户端工具的操作以及数据库校验等方面的知识。这些知识可以帮助测试工程师进行数据库相关的测试工作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [测试工程师入门知识点整理](https://blog.csdn.net/embracestar/article/details/125818154)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值