当前位置:   article > 正文

MySQL知识点汇总_mysql知识点总结归纳

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

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

 (五)查看触发器

show triggers ;

(六)删除触发器 

drop trigger 触发器名字;

-- 实例

drop trigger after_order;

逻辑控制

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

  • 应该怎么办

  • 代码执行的结构

    • 顺序执行

    • 选择执行

      • if(分支 )

    • 循环结构

if 条件 then

else

end if

实例:

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

 十一.Mysql子程序

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

(一) 创建一个存储过程

  1. -- 语法
  2. create procedure 存储过程的名字([参数列表])
  3. begin
  4. end
  5. -- 实例
  6. # 封装为一个存储过程
  7. DELIMITER //
  8. CREATE PROCEDURE queryGoods ()
  9. BEGIN
  10. SELECT * FROM `my_goods`;
  11. END//
  12. -- 调用存储过程
  13. CALL queryGoods();

存储过程的调用方式:

call 存储过程的名字;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/252948?site
推荐阅读
相关标签
  

闽ICP备14008679号