Mysql基础

# MySQL 事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!<!-- more -->

- 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
- 事务处理维护数据库的完整性,保updte,adelete 语句

一般来说,事务是必须满足4个条证成批的 SQL 语句要么全部执行,要么全部不执行。
- 事务用来可以用来管理 insert,件(ACID)::原子性(**A**tomicity,或称不可分割性)、一致性(**C**onsistency)、隔离性(**I**solation,又称独立性)、持久性(**D**urability)。

- **原子性:**一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
- **一致性:**在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
- **隔离性:**数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
- **持久性:**事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。



------

‘- 显示数据库:show databases;

##### 数据库:

​	sql server(微软)windows 专有数据
​	mysql    默认端口:3306
​	oracle(重点)甲骨文
​	access
​	sqlite
​	ibm db2
​	关系型数据库管理系统

-查看 mysql 版本: select version();
primary key 主键   auto_increment 自动递增   not null ,要求该约束所修饰的字段,不能为null或空    unsigned 约束的字段,会去掉负值,添加到正值,范围 x 2 + 1

##### 排序

命令格式:select * from 表名 order by 字段名 asc(升序)|desc(降序);
多字段排序
select * from department order by groups desc,kpi desc;
多字段排序时,先按第一字段排序,第一段相同的,再按第二字段排序。

##### 创建

- 创建数据库命令格式: `create database 数据库名字 charset=字符集`
- 创建表命令格式: `create table 表名( 字段 属性 );`

##### 删除

- 删除表
  命令格式:drop table 表名;
- 删库
  格式: `drop database 库名;`
  删除主键
  alter table 表名 drop 主键字段名;
  删除数据
  命令格式
  delete from 表名 where 【条件】

##### 修改

-修改已创建的表名
命令格式:alter table 原表名 rename to  新表名;

旧改法:
  	alter user 'root'@'localhost' identified by 'mysql';

-10.1.38-MariaDB 修改密码:
	update mysql.user set Password = password('1999') where 			user='(root)';
	flush privileges;
	exit;

远程链接:
	GRANT ALL PRIVILEGES ON * .* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

mysql 配置文件:
	 windows -> mysql/bin/my.ini
	 linux -> mysq/my.cnf

##### 修改创建好的表字

段命令格式: alter table 表名 change 原字段名 新字段名 字段类型 字段属性(约束);
添加新的字段
命令格式: alter table 表名 add 字段名 字段类型 字段属性(约束);
修改表名
命令格式:alter table 旧表名 rename to 新表名;
创建表后修改主键
alter table 表名 change 原字段名(要设为主键的字段) 新字段名 int primary key auto_incremnt not null;
修改数据
update 表名 set 字段名1=要修改值1,字段名2=要修改值2 where [条件]

##### 查找

基本查询
命令格式:select [要查询的字段,如果是所有字段,就是*;如果单个,写字段名] from 【表名】 where 【条件】
范围查询
命令格式: select [字段] from 表名 where 字段名 between 开始 and 结束
in ( ) 在 ... 里 not in
模糊查询
命令格式: select [字段] from 表名 where 字段 like ...%...
内联接查询
命令格式:select [字段] from 表名1 inner join 表名2 on 表名1.连接字段=表名2.连接字段
右链接
select * from student s right join class c on s.cls_id=c.id
左连接
select *  from class c left join student s on s.cls_id=c.id;
全联接
 select * from class c left join student s on c.id=s.cls_id
 union
 select * from class c right join student s on c.id=s.cls_id;
自联接(自查询)
表和自身的连接,使用 inner join 来完成

##### 插入数据

命令格式:
insert into 表名(字段名1,字段名2,字段名3.....)values(值1,值2,值3...);
另外一种形式
insert into 表名 values(字段1的值,字段2的值,字段3的值。。。。);

-分组
group by 分组
分组  group_concat()+group by 

#####  -聚合函数

统计函数 count()
命令格式: select count(要统计的字段) from 表名 where [条件]
求最大值
命令格式:select max(求最大值的字段) from 表名;
求最小值
命令格式:select min(要计算最小值的字段) from 表名;
求和
命令格式:
select sum(要求和/总数的字段) from 表名;
求平均值
select avg(要求平均值字段) from 表名;

having
having 和 where 都 可以对记录进行筛选;但是having跟在group by 后面,group by 跟在 where 后面;having 后面条件必须在 select 字段中出现,没有,就会报错;where 是必须是表中字段
where ... group by ... having

##### 视图

命令格式:
create view 视图名字 as select语句;
查看视图
命令格式:show tables;
删除视图
drop view 视图名字
修改视图
create or replace view 视图名字 as select语句;

##### 索引

查看索引
命令格式:
show index from 表名;
创建索引的命令
格式:
create index idx_索引名  on 表名(字段名(索引长度))
删除索引
命令格式:
drop index 索引名称 on 表名;



##### 三范式:

1:确保每列保持原子性
2:确保表中每列都和主键直接相关
3:确保每列都和主键列直接相关,而不是间接相关



##### 事务:

​	是一个操作序列,这些操作要么都执行,要么都不执行,它是一个完整的,不可分割的工作单位。
事务具有的特性:原子性 ,一致,隔离,持久
开启事务:start transaction   / begin
提交         commit

当前时间加1天
select date_add(now(),interyal 1day)
posted @ 2021-03-30 18:06  乐乐乐乐乐乐樂  阅读(57)  评论(0)    收藏  举报
jQuery火箭图标返回顶部代码