MySQL数据库学习

1.什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?

数据库(DB)是一种特殊的信息管理系统,它以某种组织方式存储数据,使得用户可以更容易地查找和使用特定的信息。数据库可以包含任意类型的数据,包括文本、数字、图像、音频和视频等。它们还可以包含其他数据库,以及数据的关联和索引。

数据库管理系统(DBMS)是一种软件,可以创建、维护和使用数据库。它为用户提供了一个用于管理数据库的统一界面。DBMS可以创建、修改和删除数据库,控制访问数据库中的数据,更新数据库以及检索数据库中的信息。此外,它还可以确保数据库的安全性,提供不同的视图来查看数据,以及提供数据库的统计信息。

SQL(Structured Query Language)是一种用于访问和操作关系数据库管理系统(RDBMS)的标准语言。它是一种面向关系数据库管理系统的数据操作语言,可以用于检索和更新数据库中的数据,以及管理数据库的结构和索引。SQL有助于更容易地管理和使用数据,并且可以提高数据库系统的性能。

三者之间的关系:DBMS用来执行SQL语句的,然后操作DB数据库。

:数据库当中最基本的单元是表:table,数据库当中是以表格的形式表示数据的。

任何一张表都有行和列:行(row):被称为数据/记录

列(column):被称为字段

2.SQL语句的分类

SQL语句有很多,可以分为:DQL,DML,DDL,TCL,DCL。

分类

解释

例如

DQL

数据查询语言(凡是带有select关键字的都是查询语句)

select

DML

数据操作语言(凡是对表当中的数据进行增删改的都是DML)

insert,delete,update

DDL

数据定义语言,主要操作的是表的结构。不是表中的数据。

create,drop,alter

TCL

事务控制语言

commit,rollback

DCL

数据控制语言

授权grant、撤销权限revoke.

3.MySQL常用命令:

注意:命令不区分大小写,都行。\c用来终止一条命令的输入。所有的SQL语句以“;”结尾

查询两个字段使用逗号隔开“,”,在所有的数据库当中,字符串统一使用单引号括起来,单引号是标准。

数据库中的null代表什么也没有,它不是一个值,不能使用等号衡量

命令

作用

source

可以执行.sql文件

exit

退出mysql :

select version();

查看mysql数据库的版本号

show databases;

查看mysql中有哪些数据库

use 数据库名;

选择使用某个数据库

create database 数据库名;

创建数据库

select database();

查看当前使用的是哪个数据库

show tables

查看某个数据库下有哪些表

select * from 表名;

查看表中的数据

desc 表名;

查看表的结构

as

查询的列起别名

is null 为 null(is not null 不为空)

查询是否为null

between … and …

范围

or

或者

and

并且

in

包含

not

取非

like

模糊查询,支持%或下划线匹配

order by sal(desc);

升序/降序

distinct

去除重复记录

union

合并查询结果集

limit startIndex, length

将查询结果集的一部分取出来。通常使用在分页查询当中(limit (pageNo-1)*pageSize , pageSize)

now()

获取系统当前时间

delete

删除表中的数据

truncate

删除数据,不支持回滚

drop table 表名

删除表

4.单行处理函数

特点:一个输入对应一个输出

lower

转换小写

upper

转换大写

substr

取子串

concat(str1,str2)

符串的拼接

length

取长度

trim

去空格

str_to_date

将字符串转换成日期

date_format

格式化日期

format

设置千分位

case..when..then..when..then..else..end

round

四舍五入

rand()

生成随机数

ifnull (,)

可以将 null 转换成一个具体值

5.分组函数

特点:输入多行,最终输出一行。

count

计数

sum

求和

avg

平均值

max

最大值

min

最小值

注意:1.分组函数自动忽略NULL;

2.分组函数不能够直接使用在where子句中

6.分组查询

在实际的应用中,可能有这样的需求,需要先进行分组,然后对每一组的数据进行操作

注意:分组函数在使用的时候必须先分组之后才能使用

select
...
from
...
group by
...

sql语句执行顺序

select            
...
from
...
where
...
group by
...
having(和group 搭配使用)
....
order by
... 
limit...
------------------------------------------
1. from
2. where
3. group by
4. select
5. order by
6.limit
# where执行的时候,还没有分组。所以where后面不能出现分组函数	
7.连接查询

多张表联合起来查询数据,被称为连接查询

连接查询的分类

内连接:没有主次关系


    等值连接    		 inner join ... on 条件是等量关系
    非等值连接		 inner join ... on 条件不是一个等量关系
    自连接		 inner join ... on 一张表看做两张表

外连接:有主次关系

    左外连接(左连接)left join  ...on 条件		 	
    右外连接(右连接)right  join  ...on 条件

笛卡尔积现象: 当两张表进行连接查询,没有任何条件限制的时候,最终查询结果条数,是两张表条数的乘积。

怎么避免笛卡尔积现象?

连接时加条件,满足这个条件的记录被筛选出来。

给表起别名。很重要。效率问题。

多张表怎么连接
语法:
	select 
		...
	from
		a
	join
		b
	on
		a和b的连接条件
	join
		c
	on
		a和c的连接条件
	right join
		d
	on
		a和d的连接条件
	一条SQL中内连接和外连接可以混合。都可以出现!
8.子查询

select语句中嵌套select语句,被嵌套的select语句称为子查询

        select
        ..(select).
        from
        ..(select).
        where
        ..(select).
9.mysql中的数据类型

类型

说明

varchar(最长255)

可变长度的字符串,比较智能,节省空间,会根据实际的数据长度动态分配空间

char(最长255)

定长字符串

int(最长11)

整数型

bigint

长整型

float

单精度浮点型数据

double

双精度浮点型数据

date

短日期类型

datetime

长日期类型

clob

字符大对象,超过255个字符的都要采用CLOB字符大对象来存储

blob

二进制大对象,专门用来存储图片、声音、视频等流媒体数据

decimal

用于存储有效小数位数的固定数值

timestamp

时间戳

10,常用的MySQL语句

插入: insert into 表名(字段名1,字段名2,字段名3...) values(值1,值2,值3);

创建表: create table 表名(字段1 数据类型,字段2 数据类型);

删表:drop table 表名

删除数据:delete from 表名 where 条件;

修改: update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3... where 条件;

11.约束

非空约束:not null

唯一性约束: unique

主键约束: primary key 任何一张表都应该有主键,没有主键,表无效

外键约束:foreign key

12.存储引擎

存储引擎是MySQL中特有的一个术语,

存储引擎是一个表存储/组织数据的方式。

不同的存储引擎,表存储数据的方式不同。

show create table 表名

ENGINE来指定存储引擎。

CHARSET来指定这张表的字符编码方式。

select version(); 查看sql版本

show engines \G 查看mysql支持哪些存储引擎

InnoDB存储引擎(默认):支持事务,支持数据库崩溃后自动恢复机制,特点是:非常安全

MyISAM存储引擎(不支持事务机制,安全性低) 特征:

使用三个文件表示每个表:

格式文件 — 存储表结构的定义(mytable.frm)

数据文件 — 存储表行的内容(mytable.MYD)

索引文件 — 存储表上索引(mytable.MYI):索引是一本书的目录,缩小扫描范围,提高查询效率的一种机制。

可被转换为压缩、只读表来节省空间

13.事务

一个事务就是一个完整的业务逻辑,是一个最小的工作单元。

只有DML语句才会有事务,

事务:就是批量的DML语句同时成功,或者同时失败!

InnoDB存储引擎:提供一组用来记录事务性活动的日志文件

提交事务

清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中。

提交事务标志着,事务的结束。并且是一种全部成功的结束。

回滚事务

将之前所有的DML操作全部撤销,并且清空事务性活动的日志文件

回滚事务标志着,事务的结束。并且是一种全部失败的结束。

提交事务:commit; 语句

回滚事务:rollback; 语句(回滚永远都是只能回滚到上一次的提交点!)

事务对应的英语单词是:transaction

执行这个命令:start transaction;

事务包括4个特性:

A:原子性

说明事务是最小的工作单元。不可再分。

C:一致性

所有事务要求,在同一个事务当中,所有操作必须同时成功,或者同时失败,

以保证数据的一致性。

I:隔离性

A事务和B事务之间具有一定的隔离。

教室A和教室B之间有一道墙,这道墙就是隔离性。

A事务在操作一张表的时候,另一个事务B也操作这张表会那样???

D:持久性

事务最终结束的一个保障。事务提交,就相当于将没有保存到硬盘上的数据

保存到硬盘上!

隔离性:

读未提交:read uncommitted

读已提交:read committed

可重复读:repeatable read

序列化/串行化:serializable

查看隔离级别:SELECT @@tx_isolation

设置隔离级别: set global transaction isolation level 隔离级别;

14.索引

MySQL支持多种类型的索引,其中包括主键索引、唯一索引、全文索引和复合索引等。主键索引用于定义数据表中的唯一行,唯一索引用于确保每一列的值都是唯一的,全文索引可以帮助用户更快地检索文本字段中的信息,而复合索引则是多个索引的组合。

15.视图

MySQL的视图是一种虚拟表,可以根据用户的需求从多个表中提取数据,组合成一个新的表。MySQL视图可以根据用户设置的条件,显示特定的信息,并且可以避免重复输入数据。MySQL视图还可以帮助用户更好地管理数据,并提高数据检索的速度。

表复制:

create table dept2 as select * from dept;

创建视图对象:

create view dept2_view as select * from dept2;

删除视图对象:

drop view dept2_view;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值