MYSQL
事务,
innoDB 存储引擎:提供一组用了记录事务性活动的日志文件
DML
DDL
提交事务: commit
回滚: rollback
事物:transaction
mysql 默认支持自动提交事物
关键字distinct, 去重复
//distinct 只能出现字段的前distinct 出现在多个字段时表示(多个字段联合)去重复
单个字段
union all
union
连接查询:select xxx,xx from table_A as A left join table_B as B on A.col=B.Id wwhere B.Id="ABVC"
优化点:
两张表优化查询,
匹配了次数没有减少,只是选择
连接查询起别名,为什么?
分类:
内连接之等值连接;
SQL92 结构不清晰,表的连接条件和连接后的过滤条件都放在where后面结构不清晰
内连接之非等值连接:select e.name e.sal s.grade from emp as e join sal as s on e.sal betwween xx and xxx
内连接之自链接
完成能够匹配上这个条件的数据查询出来
外链接left join 将左表视为主表right join
子查询select
..(select)
from
(select)
where
(select)
子查询和连接的性能
select后的子查询只能查询出一条记录
union 要求前后的结果集合要
笛卡尔积现象:
MYSQL 三大范式
MYSQL分析慢查询步骤
Mysqlleetcode
col !=2 可以表示为 col <>2,比较结果不包括值为NULL的列可以用col IS NULL 判断该列值为NULL的记录left joinfunc nop() {} 定义这个空函数的作用什么<br />
mysql安装
1、下载安装
推荐下载地址:https://mirrors-i.tuna.tsinghua.edu.cn/mysql/downloads/
下载mysql-5.7.35.zip并解压到电脑的指定安装目录
2、添加系统环境变量
- 右键“我的电脑”选择属性
- 最大化窗口,点击右侧“高级系统设置”
- 点击“环境变量(N)…”
- 新建用户变量 : 变量名:MYSQL; 变量值:Mysql的安装目录
- 添加PATH信息: 点击新建并输入:%MYSQL%\bin
3、mysql 初始化并安装
- 打开管理员cmd界面
- 使用cd命令切换到%MYSQL%\bin 目录下
- 初始化命令
**mysqld --initialize --console**,%MYSQL%目录下会生成data文件,控制台生成初始密码。 - 执行mysql安装命令
mysqld -install
4、启动mysql
- 使用
net start mysql启动mysql服务,默认监听3306端口 - 使用
mysql -uroot -p"上一步控制台的初始密码"登陆mysql
5、修改密码
set password for root@localhost = password("新密码")

数据库增删改查
查看数据库;
- 命令:
show databases;#查看所有的数据库

- 相关问题
mysql中lower_case_table_names变量是控制mysql区分大小写的标志,其中0:区分大小写。1:不区分大小写;使用命令show variables like "%case%";可查看到该windows环境此变量值为1,表示不区分大小写。那么如何修改该值呢?链接,查询命令中的%的作用是什么呢?还有其他的特殊符号吗?待续!!![8E5N)K]MCUA98PT4I4ZIZ{S.png](/uploads/projects/u25250929@uusg6i/02e7e92b4e016c5816099d37d26c4a50.png)
order—limit—offset
排序:select * from table_name where condition(s) order by column asc limit offset_num limit_num
创建数据库
- 命令
**create database 数据库名称;**
![3RNFIE$(MR5V$]LBOLB1{(V.png](/uploads/projects/u25250929@uusg6i/045e3b27a54ff49f25d4b50abc72495f.png)
- 相关问题
- 数据库名称可以用中文吗?
**可以**可以用那些字符呢?
删除数据库
删除数据库:drop database 数据库
删除数据库中表数据drop table table_name;
删除数据库中表满足条件的某些数据delete from table_name [where clause]
delete,用来从表中删除部分或者全部记录。可以与where子句一起使用,用于删除满足添加的某些记录。
由于DELETE命令不删除表,因此不会释放任何空间;而drop命令会删除整个表,从而释放内存空间。
delete和truncate仅仅删除表数据,drop连表数据和表结构一起删除
delete是DML语言,可以回滚。
执行速度drop>truncate>delete
drop是一种数据定义命令,可以从数据库中删除一个或多个表,它将删除所有相关元素,如模式,域和约束中的所有表。无法回滚
修改数据库
数据库表修改:
alter table 表名称
添加唯一约束而不创建唯一索引,alter table students add constraint uni_name unique (name);
添加普通索引,alter table students add index index_name (column)
修改数据库表名称alter table old_table_name rename [to|as] new_table_name
添加表中的列alter table table_name add column_name datatype [约束条件] [first | after 已存在的字段]
删除表中的列alter table table_name drop column_name
修改表中列的属性(类型和名称)alter table table_name modify column_name varchar(1000)alter table table_name change i j int(1)
添加索引alter table table_name add primary key (i)
删除索引alter table table_name drop primary key
数据库的非空约束not null
创建表时添加约束:create table stu(id int(2), name varchar(20) not null default '')
创建表后添加约束:alter table stu modify name varchar(2) not null
删除非空约束:alter table st modify name varchar92);
auto_increment
删除唯一约束:alter table stu drop index number;
删除主键约束:alter table stu drop primary key;
批量插入数据
inster into table_name (field1,field2,...,fieldN)values(value1,value2,...,valueN),(valueB1,valueB2,...,valueBN)....
数据库表增删改查CRUD
选中数据库use 数据库名称;
创建表结构
Create Table If Not existstbl_xxx(val varchar(32),.....)
![A@]4W7XQMI%9)1K(3T_6$E.pngdrop table if exists tql_xxx ;delete from table
truncate table
inster into tbl_xxx (字段1,字段2)values(val1,val2)
inster语句中的字段名可以省略吗?不可省略,不写相当于全字段
format(数字,‘格式’)
str_to_date(字符串,日期格式)
主键primary key \key\union key 的区别
- 普通索引key: 普通索引
- 主键索引
primary key
- 主键必须包含唯一的值,可以是多列组合使用
primary key(id,age); - 主键不能为空;
- 每个表最多有且只有一个主键;
- 可以标识数据库表中的每条记录
- 唯一索引
unique key
- 一个表中可以有多个
unique key - 可以唯一标识数据库表中的每条记录,为列或列集合提供了唯一性的保证
- 防止数据插入是重复
union all 和union 的区别
union会自动压缩重复的结果,union all会把所有的结果全部显示出来。union会涉及排序所以性能较union all差一些。
1、 对OR语句求并集,如查询SELECT FROM TB1 WHERE c1=”xxx” OR c2=””xxx”时,如果c1和c2列上分别有索引,可以按照c1和c2条件进行查询,再将查询结果合并(union)操作,得到最终结果
2、 对AND语句求交集,如查询SELECT FROM TB1 WHERE c1=”xxx” AND c2=””xxx”时,如果c1和c2列上分别有索引,可以按照c1和c2条件进行查询,再将查询结果取交集(intersect)操作,得到最终结果
查询表数据
select * from where
union /和 or的区别
union all 和 union的区别
HAVING
count
distinct
查看mysql的版本信息
MYSQL常见问题
https://runebook.dev/zh-CN/docs/mariadb/mariadb-error-codes/index
1、 delete\drop\alter table 卡住的问题
MYSQL登录方式
mysql -u用户名 -p密码
MYSQL 修改用户密码
修改单个用户的密码alter user 'root'@'localhost' identified by '新的密码'set password for root@localhost = password('新的密码')
更新相同用户不同host的密码update mysql.user set password=password('vnet2wsx!QAZ') where user='root';flush privileges;
查看用户的用户和host和密码信息
问题:127.0.0.1和localhost的方式有什么不同
