MySQL数据库随笔

提示:本文章仅供个人学习使用,如有错误请及时私信通知

文章目录

  • 前言
  • 一、MySQL的基本操作命令
    • (1)连接数据库
    • (2)修改用户密码
    • (3)刷新权限
    • (4)查看所有数据库
    • (5)查看数据库中所有的表
    • (6)更改当前查看的数据库
    • (7)显示数据库中所有表的信息
  • 二、MySQL的注释
    • (1)单行注释
    • (2)多行注释
  • 三、数据库的列类型
    • (1)数值
    • (2)字符串
    • (3)日期时间
    • (4)其他
  • 四、数据库的字段属性
    • (1)unsigned
    • (2)autoincrease
    • (3)zerofill
    • (4)not null
    • (5)default
  • 五、数据库的常用命令
    • (1)显示创建数据库的sql语句
    • (2)显示创建表的sql语句
    • (3)显示表的结构
    • (4)设置数据表的字符编码
    • (5)修改、删除表
      • 1)修改表名
      • 2)增加表的字段
      • 3)修改表的字段
      • 4)删除表
      • 5)删除表的字段
  • 六、数据表的类型
  • 七、MySQL数据管理
    • (1)插入数据
    • (2)更新数据
    • (3)删除数据
  • 八、DQL查询数据
    • (1)select查询
    • (2)去重
    • (3)数据库表达式
  • 九、where子句和逻辑表达式
    • (1)逻辑运算符
    • (2)where语句的应用
  • 十、模糊查询
    • (1)like模糊查询
    • (2)in模糊查询
  • 十一、joinOn联表查询
    • (1)左连接查询
    • (2)右连接查询
    • (3)内连接查询
    • (4)三者的区别
  • 十二、分页和排序
    • (1)排序
    • (2)分页
  • 十三、子查询
  • 十四、MySQL的常用函数
    • (1)常用函数
      • 1)数学函数
    • 2)字符串函数
      • 3)日期和时间函数
    • (2)聚合函数
      • 1)分组和过滤
  • 十五、数据库级别的MD5加密
    • (1)什么是MD5加密
  • 十六、事务
    • (1)事务执行的四个基本特性
    • (2)脏读、幻读、不可重复读
  • 十七、索引
    • (1)索引的分类;
  • 十八、插入一百万条数据
  • 十九、数据库的三大范式
    • (1)第一范式-1nf
    • (2)第二范式-2nf
    • (3)第三范式-3nf
  • 总结


前言

MySQL数据库作为一种主流的数据库管理系统,在我们日常的编程生活中不可或缺。我们在没有接触到这个系统之前,总是苦于Java的原生链接数据库的烦恼,以及对数据库进行IDUS操作的繁杂性。而MySQL则为我们解决了这一苦恼。接下来我就要对MySQL进行深入的学习与了解,争取能在一段时间后能对各种数据的查询了如指掌。

一、MySQL的基本操作命令

(1)连接数据库

连接到数据库一般都是通过命令行的方式进行操作登录,相比可视化操作来说一般都是运用在Linux系统中

示例代码
mysql -u root -p 123

(2)修改用户密码

在我们觉得之前所设置的密码过于复杂或难以记住的时候,我们就可以使用下面的代码来修改数据库的登录密码

示例代码
update mysql.user set authentication_string=password('123') where user='root' and host='127.0.0.1';

(3)刷新权限

示例代码

flush privileges;

(4)查看所有数据库

通过该代码在命令行查看已在内存中的所有数据库

示例代码
show databases;

(5)查看数据库中所有的表

在选择某数据库后我们可以使用指令来查看数据库中所有的表

示例代码
show tables;

(6)更改当前查看的数据库

比如说我当前在1号数据库中,而我想要切换到2号数据库中

示例代码
use database2

(7)显示数据库中所有表的信息

当我们使用了这个数据库后,我们根据任务的需要所以需要查看表中的所有数据,此时我们有两种方法来查看所有的数据,第一种是通过sql查询语句,第二种是通过命令语句,这两种方法都可以来查看表中的所有数据,依据个人喜好来使用就好。

示例代码(1)-sql
select * from table_name

示例代码(2)-命令语句

describe table_name

二、MySQL的注释

(1)单行注释

示例代码
--在这里插入sql代码

(2)多行注释

示例代码
/*在这里插入sql代码
*在这里插入sql代码
*在这里插入sql代码
*/

三、数据库的列类型

(1)数值

1)tinyint 十分小的数据 1字节

2)smallint 比较校的数据 2字节

3)mediumint 中等大小的数据 3字节

4)int 正常大小的数据 4字节 常用类型

5)bigint 较大的数据 8字节

6)floa 浮点类型(单精度) 4字节

7)double 浮点类型(双精度)8字节

8)decimal 字符串型的浮点数

(2)字符串

1)char 不可变长度 ,长度固定 0-255

2)varchar 可变长度 0-65535 常用string

3)tinychar 微型文本 2^8-1

(3)日期时间

1)data YYYY-MM-DD

2)time HH:mm:ss

3)datatime YYYY-MM-DD HH:mm:ss 最常用的时间格式

4)timestamp 时间戳

5)year

(4)其他

1)null 一般为数据库的表种没有内容的时候填写的类型

四、数据库的字段属性

(1)unsigned

无符号整数,标明改列不能为负数

(2)autoincrease

自动增加1或用户设置的增长梯度,适用于唯一主键

(3)zerofill

0填充,当需要填充数据的时候使用这个就能将要填充的地方填上0

(4)not null

不为空,表明该列的数据不能为空

(5)default

默认值,表明该列的默认值一旦不更改就是根据设置的默认值显示

五、数据库的常用命令

(1)显示创建数据库的sql语句

示例代码

show create database `database_name`

(2)显示创建表的sql语句

示例代码

show create table `table_name`

(3)显示表的结构

示例代码

desc table_name

(4)设置数据表的字符编码

示例代码

charset=utf8 

(5)修改、删除表

1)修改表名

示例代码

alter table table_name rename as new_table_name;

2)增加表的字段

示例代码

alter table table_name add need_name TYPE();

3)修改表的字段

示例代码

alter table table_name modify need_name TYPE();--修改约束,不能修改字段名字alter table table_name change need_name change_name TYPE();--修改字段名

4)删除表

示例代码

drop table table_name

5)删除表的字段

示例代码

alter table able_name drop need_name

注意事项:可以在删除表的前面添加一个if exists

六、数据表的类型

myisaminnodb
事务支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文引索支持不支持
表空间大小较小较大

七、MySQL数据管理

(1)插入数据

往表中插入一条或多条数据

示例代码
insert into table_name(value1,value2,...,valuen) value(a,b,...,n)--插入一行数据insert into table_name(value1,value2,...,valuen) value(a,b,...,n),...,(a,b,...,n)--插入多行数据

(2)更新数据

更新表种的数据

示例代码
--更新一个值
update table_name set colnum_name=value where condition=...[条件]
--更新多个值
update table_name set colnum1_name=value1,...,colnumn_name=valuen 
where condition=...[条件]
操作符含义范围结果
=等于5=6false
<>或!=不等于5!=6或5<>6true
>大于5>6false
<小于5<6true
<=小于等于5<=5true
>=大于等于5>=5true
between and处于一个范围内
and
or

(3)删除数据

示例代码

#第一种删除方式
delete from table_name where [条件]
#第二种删除方式(清空表)
truncate table_name

两种方式的区别

相同点:都能删除数据,且都会保留表结构

不同点:truncate能让自增列的计数器归零且不会影响事务

八、DQL查询数据

(1)select查询

该语句是所有查询语句的开始,不论是简单查询还说复杂查询

示例代码
#简单查询
select * from table_name where [条件]
#复杂查询
select value_name,value_name from table_a a left join table_b b where [条件]

(2)去重

当我们查询一个数据的时候难免会有重复的数据,而此时我们可以使用以下代码来进行去重

示例代码
select *from table_name #查询表中的全部数据
select * from table_name where [条件] #根据某条件来进行查询
select [] from table_name where [条件] #根据某条件来进行查询报表中的某值
#但是前面的三种都会出现重复的数据,而下面的这一种则会去重
select distinct [] from table_name where [条件]

(3)数据库表达式

有时候在数据库里面不一定全都是sql类型的语句也有使用函数,表达式,变量的形式展示出来。就入下面的代码所示

示例代码
#查看系统版本
select version();
#使用select语句来进行计算
select 123*56-12 as 计算结果
#使用select来查询变量
select @@auto_increment_increment #查询自增的步长
#当我们需要将数据库中的某一行的数据全部加1或者其他数值
select []+1 from table_name where [条件];

九、where子句和逻辑表达式

(1)逻辑运算符

运算符语法描述
&& anda and, b a&&b逻辑与 两个都为真 结果为真
11 ora or b, a11b逻辑或 其中一个为真 结果为真
!notnot a, !a逻辑非 真为假、假为真

(2)where语句的应用

使用where语句来增加查询条件,这样查询出来的结果就会有个初步的筛选。

示例代码
#逻辑与条件查询
select [] from table_name
where [条件A] =[条件值] and  [条件A]=[条件值]
或者
where [条件A] between [条件值1] and [条件值2] 
#逻辑或查询
select [] from table_name
where [条件A] =[条件值] or  [条件A]=[条件值]
或者
where [条件A] between [条件值1] or [条件值2] 
#逻辑非查询
select [] from table_name 
where [条件]!=[条件值]

十、模糊查询

运算符语法描述
is nulla is null如果操作符为空则结果为真
is not nulla is not null如果操作符不为空则结果为真
betweena between a and c若a在b和c之间则结果为真
likea like bSQL匹配如果a匹配到b则结果为真
ina in (a1,a2…an)如果a在a1~a2这个集合中,则结果为真

(1)like模糊查询

示例代码

##有一个学生表,其中的属性有学生id,学生名字
#比如说需求要求查找名字以孙开头的所有名字
select student_name from student_table where student_name like '孙%'
#上面的这种方法可以查询孙以后0~n个字符的名字
#但是如果需要只查询孙字后面只带一个字的就不能使用%而是使用_
select student_name from student_table where student_name like '孙_'
#当然如果要指定只有两个字的那么就以此类推,需要指定几个就用几个_
#而需要查询比如书名或者什么作品名只知道中间名的时候,那么只需要将_或者%的位置放到关键字的前面或者后面即可
select gName  from  galgame where gName like '%千恋万花%'

(2)in模糊查询

示例代码

#当我们所需要查询的值是在某一个范围的时候我们就可以使用in关键字来进行模糊查询
select student_id from studen_table where student_id in(101,102,103)

十一、joinOn联表查询

(1)左连接查询

示例代码

SELECT a.*,b.role_name FROM sch_colleges_process_config a LEFT JOIN sch_colleges_process_audit_config b ON a.`sch_config_id`=b.`sch_config_id` WHERE school_id=#{school_id}

(2)右连接查询

示例代码

SELECT a.*,b.role_name FROM sch_colleges_process_config a RIGHT JOIN sch_colleges_process_audit_config b ON a.`sch_config_id`=b.`sch_config_id` WHERE school_id=#{school_id}

(3)内连接查询

示例代码

SELECT process_name,audit_level,`role_name` FROM sch_colleges_process_config a 
INNER JOIN sch_colleges_process_audit_config b ON a.`sch_config_id`=b.`sch_config_id``sch_colleges_process_config``sch_colleges_process_config`

(4)三者的区别

示例代码

查询语句描述
内连接查询只有当两张表都有同一个数据的时候,才会查询出结果
左连接查询比对判断条件如果条件不成立,则任然会显示出左表的数据
右连接查询比对判断条件如果条件不成立,则任然会显示出右表的数据

十二、分页和排序

(1)排序

关键字:order by 。升序关键字:ASC ,降序关键字:DESC

示例代码
#通过升序排序将数据查询出来
select * from students 
where student_score >60
order by student_score ASC#通过降序排序将数据查询出来和升序一样只不过是将ASC换成DESC
select * from students 
where student_score >20
order by student_score DESC

(2)分页

语法:limit 起始值 页面大小

分页分n页的规律 limit (n-1)*页面大小

示例代码
SELECT a.*,b.role_name FROM sch_colleges_process_config a
LEFT JOIN sch_colleges_process_audit_config b
ON a.`sch_config_id`=b.`sch_config_id` AND school_id=1
LIMIT 1,2 
#从第一页开始,每页两条数据

十三、子查询

查询分数大于80分的学生学号和姓名,并且查出高等数学的编号

示例代码

在这里插入图片描述

十四、MySQL的常用函数

(1)常用函数

1)数学函数

示例代码

#绝对值
select abs();
#向下取整
select FLOOR();
#向上取整
selec CEILING();

2)字符串函数

示例代码

#查询字符串的长度
select LENGTH()
#替换字符串函数
SELECT INSERT('Football',2,4,'Play') AS col1
#转换成大写
select UPPER()
#转换成小写
select lower()

3)日期和时间函数

示例代码

#获取系统当前日期
select CURRENT_DATE()
#获取系统当前时间
select CURRENT_TIME()
#获取本地时间
select LOCALTIME()
#获取当前时间
select NOW()

(2)聚合函数

函数名描述使用方法
count计数select count(列名)、select count(*)、select count(1)
sum求和select student_name,sum(student_score) as ‘总成绩’ from student
max最大值
min最小值
avg平均值

三种count的区别

1、指定列名,但是在计数时忽略掉列中的null值

2、计数所有的行数,不会忽略掉null值

3、计数所有的行数,不会忽略掉null值,和上一种*方法几乎没有区别

1)分组和过滤

示例代码图

在这里插入图片描述

十五、数据库级别的MD5加密

(1)什么是MD5加密

MD5是一种被广泛使用的密码散列函数,可以产生一个128位的散列值,用于保存信息的完整性。且一旦加密,整个过程就不可逆转。

## (2)测试MD5加密

在这里插入图片描述

上图为创建测试数据库的代码,以下面sql语句进行MD5加密测试

示例代码
#插入数据
insert into testmd5 values(1,'张三','2113'),(2,'李四','2121'),(1,'王五','2411')
#对已插入的数据中的密码进行MD5加密
update testmd5 set pwd =MD5(pwd)
#对未插入的数据中的密码进行MD5加密
insert into testmd5 values(4,'嘉庆',MD5('2116'))
#和前端传入的用户名和密码在后台进行比对
select name,pwd from testmd5 where name=${name} and pwd = MD5(${pwd})

十六、事务

(1)事务执行的四个基本特性

1)原子性:要么都完成,要么一个也不完成

2)一致性:不论经过何种的操作,总量与操作之前的总量是一样的,是相同的,是不会改变的。

3)隔离性:多个用户之间同时操作并不会影响各个的操作。

4)持久性:若事务没有提交,则恢复到原状。若事务已提交,则保持不变。

(2)脏读、幻读、不可重复读

1)脏读:指读取到了一个未提交的数据

2)幻读:指一个事务在读取的时候,突然发现读取到的行数不正确

3)不可重复读:在一个事务内多次读取到的事务不相同

十七、索引

(1)索引的分类;

1)主键索引:primary key

2)唯一索引:unique key

3)常规索引:key/index

4) 全文索引:fulltext

十八、插入一百万条数据

通常我们会遇到让我们往数据库里面插入很多数据的时候,这时候我们就可以执行下面的代码

示例代码

在这里插入图片描述

十九、数据库的三大范式

(1)第一范式-1nf

原子性;保证每一列不可再分

(2)第二范式-2nf

满足第一范式,且一张表只描述一件事情

(3)第三范式-3nf

满足第一第二范式,且每一列要与主键直接相关,不能间接相关。如果出现间接相关则直接拆分。



总结


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部