java学习中级阶段-MYSQL数据库安装使用操作
Posted 辉常努腻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习中级阶段-MYSQL数据库安装使用操作相关的知识,希望对你有一定的参考价值。
数据库mysql
数据库MYSQL
1.讲解概述
-
数据库:是存储数据的仓库
-
数据:在计算机中的数据有哪些?
- 图片、文字、音频、视频、文件
-
数据库的分类:关系型和非关系型数据库
-
关系型数据库:二维表格
-
常见的种类
-
名称 隶属公司 端口号 应用范围 MySQL Oracle免费 3306 大中小项目 Oracle Oracle付费 1521 大型项目 SQLServer 微软付费 1433 大中小项目 postgresql(自学) 免费
-
-
非关系型数据库:not noly -->nsql,非二维数据库
-
常见的种类
MongoDB 文档型数据库 Redis KV(键值对)数据库 Neo4j(自学)
-
-
-
MySQL:是一款关系型数据库,且是Oracle公司的产品,且适用于大中小型项目,且操作比较方便
2.SQLyong基本使用
2.1创建库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PnI2fTOz-1621907612413)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520102002180.png)]
2.2.创建表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kJCs3pCx-1621907612414)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520101839795.png)]
2.3.用工具对表中的数据实现CRUD
- 增删改查
- 增
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cteXUX5Y-1621907612415)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520102544587.png)]
- 删
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i0V5mAEt-1621907612416)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520103212927.png)]
- 改
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ww0FS1Y7-1621907612417)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520103253286.png)]
- 查
2.4数据库的备份和还原
- 备份
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmjkzy6z-1621907612419)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520104045067.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6KKynHt9-1621907612420)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520104507819.png)]
- 还原
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hoDOGo1k-1621907612421)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520110305314.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RRQr5pUd-1621907612421)(E:\\Typroa笔记\\20级启嘉班\\JAVA第二阶段\\第一周(5.19-5.23)\\image-20210520112819263.png)]
3.SQL语句4种的讲解
DDL:数据定义语言 :其主要针对数据库层面和表格和视图等层面的操作(了解即可)
DCL:数据库控制语言 :授权、拒绝授权、撤销授权(了解即可)
DML:数据操作语言:select 、insert、update、delete
TCL:数据控制语言 : 设置保存点,回滚,提交(后续有框架)
DML语句的基本讲解:
- 查询语句:select * from user
- 添加语句:insert into user (id ,name)values(“004” ,“孙权”)
- 修改语句:update user set name=“孙仲谋” where id=“004”
- 删除语句:delete from user where id =“004”;
- 补充讲解:DBA:数据库管理员:维护数据库和优化数据库
- SQLyong:是一款收费的能够管理mysql数据库的一个软件,其被称之为查询分析器
3.1.数据库的操作
3.1.1.数据库的创建
create database mydatabase;
create database mydatabase default character utf8;指定字符集创建数据库
3.1.2数据库的删除
drop database mydatabase;
3.2.表的操作
3.2.1创建表
create table student(id int , name varchar(20) ,gender varchar(2)); ##创建学生表(字段名称 字段类型(长度))
3.2.2.删除表
drop table student;##(删除学生表)
3.2.3.重命名表
alter table student rename teacher; ##将学生表重命名为老师表
3.2.4.表中新添加一列
alter table student add column age int; ##在表中添加年龄字段
3.3.视图的操作
3.3.1.什么是试图:
- 视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上
3.3.2.视图的特性:
- 视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变);
- 可以跟基本表一样,进行增删改查操作(ps:增删改操作有条件限制);
3.3.3.视图的作用:
- 方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;
- 更加安全,数据库授权命令不能限定到特定行和特定列,但是通过合理创建视图,可以把权限限定到行列级别;
3.3.4.使用场合:
- 权限控制的时候,不希望用户访问表中某些含敏感信息的列,比如salary…
- 关键信息来源于多个复杂关联表,可以创建视图提取我们需要的信息,简化操作;
3.3.5.视图的创建:
- 创建三个表:用户(user)、课程(course)、用户课程中间表(user_course)
4.sql语句的进阶操作
select * from student; #查询全部所有的信息
4.1.模糊查询
- 查询有where条件的信息
select * from student where sname = '张三' ; -- 查询有where条件的信息
- 右模糊查询
select * from student where sname like '张%'; -- 右模糊查询
- 左模糊查询
select * from student where sname like '%三'; -- 左模糊查询
- 左右都模糊查询
select * from student where sname like '%萧%'; -- 左右都模糊查询
4.2.范围查询
4.2.1.关系运算符 : > >= < <= = <>
select * from student where sage > 23;
select * from student where sage <> 23; # 不等于,即要么大于要么小于
select * from student where sage = 23;
4.2.2.逻辑运算符 :and or not (经常与 in 一起使用)
select * from student where ssex = '男' and sage = '22'
select * from student where ssex = '女' or sage > 30
select * from student where sage not in(20,21,23); # not是非运算符,其意思为非
4.2.3. between … and …(两者之间)
select * from student where sage between 20 and 30;
4.2.4.算术运算符: + - * / %
select * from student where sage+10 = 31;# 年龄加10等于31的
4.3.连接(关联)
4.3.1.全连接
select t.tname,c.* from teacher t ,course c where t.tno=c.tno;
select st.*, t.tname,c.*,s.score from student st,sc s,course c ,teacher t where st.sno=s.sno and c.cno=s.cno and t.tno=c.tno;
4.3.2.左连接:left join 返回包括左表中的所有记录和右表中连接字段相等的记录
select * from course c left join teacher t on c.tno=t.tno;
4.3.3.右连接:right join 返回包括右表的所有记录和左表中连接字段相等的记录
select * from course c right join teacher t on c.tno=t.tno;
4.4.临时表
select * from sc ,( select* from student where sage>=23) linShi where sc.sno=linshi.sno
4.5.嵌套+子查询
select * from sc where sc.sno in (select sno from student where sage>20)
4.6.分组
select sno
from sc
where sc.score>55-- 成绩55小于其最小的成绩59,所以可以
group by sno-- 按照学号将自己的东西归为一组
having count(sno)>=3-- 对分好组的信息再次做进一步的条件限制
4.7.1.在对结果进行排序的时候要用 order by 列名 DESC(降序)或者ASC ( 升序)
SELECT * FROM sc ORDER BY score DESC
5.内聚函数
5.1.count():是mysql的一个内聚函数,是用来统计表中记录的一个函数,返回匹配条件的行数
包括所有列,返回表中的记录数,相当于统计表的行数,在统计结果的时候,不会忽略列值为NULL的记录
count(*):-
只包括列名指定列,返回指定列的记录数,在统计结果的时候,会忽略列值为NULL的记录(不包括空字符串和0),即列值为NULL的记录不统计在内
count(列名)
忽略所有列,1表示一个固定值,也可以用count(2)、count(3)代替,在统计结果的时候,不会忽略列值为NULL的记录
count(1)
5.2.count(*)&count(1)&count(列名)执行效率比较
1)如果列为主键,count(列名)效率优于count(1)
2)如果列不为主键,count(1)效率优于count(列名)
3)如果表中存在主键,count(主键列名)效率最优
4)如果表中只有一列,则count(*)效率最优
5)如果表有多列,且不存在主键,则count(1)效率优于count(*)
5.3.因为count(*)和count(1)统计过程中不会忽略列值为NULL的记录,所以可以通过以下两种方式来统计列值为NULL的记录数
1)SELECT COUNT(1) FROM student WHERE sname IS null
2)SELECT COUNT(*) FROM student WHERE sname IS null
5.4.特例情况
1)select count(’’) from student;-返回表的记录数
2)select count(0) from student;-返回表的记录数
3)select count(null) from student;-返回0
小结:
1)当列少的时候尽量用count(*)或者count(主键)
2)当为了提升效率的时候尽量用count(主键),因为主键是默认添加主键索引的,索引查询的时候速度快
以上是关于java学习中级阶段-MYSQL数据库安装使用操作的主要内容,如果未能解决你的问题,请参考以下文章