Mysql数据库基础操作

mysql数据库

用来进行一个记录


  • 00.MySQL数据库启动

1.启动服务

service mysql start (mysql)
systemctl start mariadb

2.连接数据库

mysql 【-h 主机】 【-u 用户】【-p 用户密码】

  • 01.数据库操作

1.创建数据库

create database 【库名】;

2.使用库

use 【库名】;

3.修改库的字符集

方式一:create database 【库名】 charset='utf8';
方式二:alter database 【库名】 charset='utf8';

4.数据库的备份

mysqldump 【‐u用户 】 【‐p用户密码】 【数据库名】> 【数据库存放路径】

5.查看数据库

show databases;
show create database【数据库名】;

6.删除数据库

drop database 【库名】;

  • 02.表的操作

1.创建表

create table 【表名】( 字段1名 字段1类型 ,字段2名 字段2类型,...);

2.修改表结构

a.添加新的字段
alter table 【表名】 add 【字段名】【字段类型】comment ' 备注内容' ;


b.修改表某个字段类型
alter table 【表名】 modify 【字段名】【新字段类型】;


c. 删除表中某个字段
alter table 【表名】 drop 【字段名】;


d. 修改表名
alter table 【旧表名】rename to 【新表名】;


3.表的增删查改


a.插入
insert into 【表名】(字段1,字段2) values(字段1值,字段2值);


b.删除
drop from 【表名】 where 【条件】;


c.查找
select 【字段名】from 【表名】 where 【条件】;
* 代表所有字段


d.修改
updata 【表名】set 【字段名=字段值】 where 【条件】;

  • 04.select 配合使用
  • -


a. order by 按照某一字段进行排序,默认是升序,加上desc 变成降序。
select 【字段名】 from 【表名】order by 【字段名】desc /asc;


b. group by 按照某一字段进行分组,一把还需要配合别的使用如,sum
select sum【字段名】 from 【表名】 group by 【字段名】where【条件】;


c. sum 用来求和
select sum【字段名】 from 【表名】group by 【字段名】 where 【条件】;


d. avg用来求平均值
select avg【字段名】from 【表名】group by 【字段名】where 【条件】;


e. count求出某行或者某列的个数
select count【字段名】from 【表名】where 【条件】;


f. max/min 求某一字段的最大值和最小值。
select max【字段名】from 【表名】where 【条件】;

例子:
这里写图片描述
这里写图片描述
这里写图片描述

  • 05.内外连接
  • -

1.内连接,就是将连个表进行直接的相连,就是我们知道的笛卡尔积的形式。
2. 外连接,包括左连接,右连接
左连接,以左表为主,右连接以右表为主。

a.左连接
select 【字段名】 from 【表名1】 left join 【表名2】 on 【连接条件】;


b.右连接
select 【字段名】 from 【表名1】right join 【表名2】 on 【连接条件】;

外连接的效果:
这里写图片描述

  • 06.多表查询及子查询

1.多表查询,就是在表1取一行和表2的每一行连接,也就是笛卡尔积,所以我们通常会加上条件。
2.子查询就是在一个查询的结果集中在进行条件的进一步条件的确定,然后进行查询。

1. 多表查询
select * from 【表1】,【表2】;
2. 子查询
MariaDB [base]> select * from stu where stu.id in (select Sno from SC);

多表查询
这里写图片描述
子查询
这里写图片描述

  • 07.视图

1.什么是视图?视图也是一种表,一种虚拟表,不占用磁盘空间,其他的和表也很相似,也是一组一组行列的表。
2.视图是由查询定义的
3.视图的修改会影响表的内容,表的内容修改会影响视图的内容,两个东西像一个实时同步。
4.视图不能建立索引。

1.创建视图
create viem 【视图名】 as select【语句】;
2.例子
MariaDB [base]> create view v as select id,name from stu;
Query OK, 0 rows affected (0.01 sec)

MariaDB [base]> select* from v;
+----+------+
| id | name |
+----+------+
|  1 | a    |
|  2 | b    |
|  3 | c    |
+----+------+
3 rows in set (0.00 sec)
  • 08.索引


1.什么是索引,索引就是下标,我们可以理解为一个数字的下标,有了下标那么查找的时间复杂度就变成O(1)。


2.索引是数据库提高性能一个重要的手段,有了索引在大量数据面前我们就可以很快查找到我们需要数据了,举个例子,在一个有10亿数据面前我们如果查找做了索引的字段那么也就是30次就查找到了【时间复杂度O(lgN)】,十分快的,但是如果我们查找一个没有做索引的字段,那么我们的事件查找的话,那么就比较吓人了【时间复杂度O(N)】。


3.索引原理,实际上对一个字段加上了索引,那么数据库就会在内部将数据变成一颗搜索二叉树,这样就增加了它查找的效率。


缺点如下 :作为增加了它的查找效率,那么相应的也要损失一点空间,即每个数据都需要一个二叉树的节点进行存储,其次呢每次对其进行插入操作时,速度会有点影响,但是不会很大,所以可见,当你需要多一个字段进行频繁的查找工作时,你就需要增加索引,但是要进行大量插入,而非查找,那就不建议做索引了。


4.常见索引:主键索引(primary key),唯一索引(unique),普通索引(index),全文索引(fulltext)

索引操作:

1.普通索引
alter table t add index(empno);

2.主键索引
a. MariaDB [base]> create table t (id int primary key ,name varchar(20)); 
b. MariaDB [base]> alter table t add primary key(id);

3. 唯一索引
a. MariaDB [base]> create table t (id int unique,name varchar(20));
b. MariaDB [base]> alter table t add unique(id);
c. MariaDB [base]> alter table t drop index id;

这里写图片描述

  • 09.事务

1.什么是事务?事务就是一组dml语句组成,这些语句在逻辑上存在相关性,这一组dml语句要么全部成功,要么全部失败,是一
个整体。
2.事务基本操作

a. 开启一个事物
start transaction;


b.设置回滚点
savepoint 保存点名;


c.回滚到保存点
rollback to 保存点名;


d. 提交事务
commit
1. 注意事务一旦提交了,就无法回滚到保存点了。
2. InnoDB支持事务,MyISAM不支持事务

3.事务的隔离级别

a. 语法:
set session transaction isolation level read uncommitted;


b. 概念解释:
1. 脏读:一个客户端(事务)会读取到另外一个客户端(事务)没有提交的修改数据。
2. 不可重复读:同一个查询在同一个事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生不可重复读。
3. 幻读:同一个查询在同一个事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读。

4.事务的性质(ACID)

1. 原子性(Atomicity):
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生要么都不发生。


2. 一致性(Consistency):
事务必须使数据库从一个一致性状态变到另外一个一致性状态。

3. 隔离性(Isolation):
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。


4. 持久性(Durability):
持久性是指一个事务一旦被提交,它对数据库中的数据的修改就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。

猜你喜欢

转载自blog.csdn.net/SkinWhite/article/details/81290196