提示:本文章仅供个人学习使用,如有错误请及时私信通知
文章目录
- 前言
- 一、MySQL的基本操作命令
- (1)连接数据库
- (2)修改用户密码
- (3)刷新权限
- (4)查看所有数据库
- (5)查看数据库中所有的表
- (6)更改当前查看的数据库
- (7)显示数据库中所有表的信息
- 二、MySQL的注释
-
- 三、数据库的列类型
-
- 四、数据库的字段属性
- (1)unsigned
- (2)autoincrease
- (3)zerofill
- (4)not null
- (5)default
- 五、数据库的常用命令
- (1)显示创建数据库的sql语句
- (2)显示创建表的sql语句
- (3)显示表的结构
- (4)设置数据表的字符编码
- (5)修改、删除表
- 1)修改表名
- 2)增加表的字段
- 3)修改表的字段
- 4)删除表
- 5)删除表的字段
- 六、数据表的类型
- 七、MySQL数据管理
-
- 八、DQL查询数据
- (1)select查询
- (2)去重
- (3)数据库表达式
- 九、where子句和逻辑表达式
-
- 十、模糊查询
-
- 十一、joinOn联表查询
- (1)左连接查询
- (2)右连接查询
- (3)内连接查询
- (4)三者的区别
- 十二、分页和排序
-
- 十三、子查询
- 十四、MySQL的常用函数
-
- 十五、数据库级别的MD5加密
-
- 十六、事务
- (1)事务执行的四个基本特性
- (2)脏读、幻读、不可重复读
- 十七、索引
-
- 十八、插入一百万条数据
- 十九、数据库的三大范式
- (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)单行注释
示例代码
(2)多行注释
示例代码
三、数据库的列类型
(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
六、数据表的类型
| myisam | innodb |
---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文引索 | 支持 | 不支持 |
表空间大小 | 较小 | 较大 |
七、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=6 | false |
<>或!= | 不等于 | 5!=6或5<>6 | true |
> | 大于 | 5>6 | false |
< | 小于 | 5<6 | true |
<= | 小于等于 | 5<=5 | true |
>= | 大于等于 | 5>=5 | true |
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 123*56-12 as 计算结果
select @@auto_increment_increment
select [值]+1 from table_name where [条件];
九、where子句和逻辑表达式
(1)逻辑运算符
运算符 | 语法 | 描述 |
---|
&& and | a and, b a&&b | 逻辑与 两个都为真 结果为真 |
11 or | a or b, a11b | 逻辑或 其中一个为真 结果为真 |
!not | not 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 null | a is null | 如果操作符为空则结果为真 |
is not null | a is not null | 如果操作符不为空则结果为真 |
between | a between a and c | 若a在b和c之间则结果为真 |
like | a like b | SQL匹配如果a匹配到b则结果为真 |
in | a in (a1,a2…an) | 如果a在a1~a2这个集合中,则结果为真 |
(1)like模糊查询
示例代码
select student_name from student_table where student_name like '孙%'
select student_name from student_table where student_name like '孙_'
select gName from galgame where gName like '%千恋万花%'
(2)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=
(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=
(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
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')
update testmd5 set pwd =MD5(pwd)
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
满足第一第二范式,且每一列要与主键直接相关,不能间接相关。如果出现间接相关则直接拆分。
总结
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)