Java数据进阶知识(一)数据库简介及SQL基础语法
Java数据进阶知识(一)数据库简介及SQL基础语法
一、数据库简介
1.数据库介绍
数据库是什么? 数据库是一个存储、管理数据的仓库
2.数据库的分类
- 关系型数据库
什么是关系型数据库?关系型数据库不仅仅可以存储数据,还可以存储数据与数据之间的关系 比如订单数据和商品数据。
常用的关系型数据库:
1.Mysql
2.Oracle
3.Sqlserver - 非关系型数据库
什么是非关系型数据库? 仅仅用来存放数据,不能存储数据与数据之间的关系
常见的非关系型数据库:
1.Redis
2.Memcache
3.Hbase
4.MongoDB
注:非关系型数据的出现是对关系型数据的一个良好的补充,非关系型数据的出现不是为了去取代关系型数据库,而是作为关系型数据的一个补充。
意思是有些活 关系型数据并不擅长 就让非关系型数据去干
因为关系型数据库基本都是吧数据存储到磁盘上的,那么就会有访问数据比较慢的问题,当关系型数据库遇到数据访问量比较高的场景是 就会出现一定的局限性。这时,就可以采用非关系型数据库,非关系型数据都是把数据存储到内存中,内存中的数据访问是比较快的
二、SQL简介
SQL:结构化查询语言。SQL是SQL标准委员会制定的一套操作关系型数据库的一个标准,和Java一样,是一门语言。
1.SQL语法
在SQL语法中,SQL是由一个个关键字组成的语句,在这语句中吗,有关键字,也有用户自己定义的库名、表名、列名(字段名)、数据。 其中关键字是不区分大小写的。
建议:在sql语句中,都使用小写(小写比大写的可读性更高)
2.库的操作
1. 创建:create database dbname(character set utf8 collate utf8_bin 此处为指定数据库字符集与校对规则)
2. 删除:drop database dbname
3. 修改:
- SQL标准语法支持修改数据库的名字
- 修改数据库字符集与校对规则 alter database dbname character set utf8 collate utf8_bin
4.查询:
- 查询所有数据库 show databases
- 查询对应库的建表语句 show create database dbname
3.表的操作
- 创建:
create table tableName(
id int,
name varchar(20),
gender char(6),
birthday date,
entry_date date,
job varchar(20),
salary double(10,2),
resume text
)character set utf8 collate utf8_bin;
2.删除:
drop table tableName
3.修改:
- 修改表名
rename table oldtablename to newtablename - 修改表的字符集
alter table tablename character set xxx collate xxxx - 修改列
- 增加列
alter table tablename add columnname int - 删除列
alter table tablename drop columnname - 修改列的类型
alter table tablename modify columnname float(4,2) - 重命名列
alter table tablename change oldcolumn newcolumn int
- 增加列
4.查询:
- 查询所有表
show tables - 查询表结构
desc tablename - 查询建表语句
show creata table - 注意: 当我们需要使用一些关键字来做 表名、列名、数据库名的时候,需要使用''符号把对应的名字包起来,表示是一个存文本
4.数据的操作
1.增加
- 插入单行数据
insert into tableName values (xxx,xxxx,xxx) - 插入多行数据
insert into tableName values (xxxx,xxxx,xxx),(xxx,xxx,xxx) - 插入指定列的数据
insert into tableName (columnName1,columnName2) values (xxx,xxxx)
2.删除 delete from tableName where xxx=xxx
3.修改 update tableName set columnName = 'xxx' where xx=xx
4.查询 select * from tableName
5.关键字
1.where
where其实就是筛选的意思,可以帮助我们找到符合条件的指定的数据,where后面可以跟各种判别式。
那么,where是如何查找的呢?
在不考虑表中索引的情况下,where判别条件会根据表中的一行一行的数据进行查找,如果当某行符合我们的where判别条件就保留下来,然后查找下一行,如果不符合就舍弃,直至到最后一行。
2.distinct 过滤掉结果集中相同的两个数据 (去重)
3.limit 限制结果集 select * from t_students limit 4,2 表示从第四行开启取 取两行数据
limit 的作用:可以帮助我们来进行数据的分页 select * from tableName limit (pageNo-1)*pageSize,pageSize (页码:pageNo 页的大小:pageSize)
4.其他关键字
AS :别名
order by :排序
group by:分组
group_concat(xxx)
5.聚合函数
having:与group by放在一起使用 筛选数据
count:计数
max:最大值
min:最小值
avg:平均值
sum:求和
6.数据库设计
1.数据库设计三大范式
第一范式
原子性:表中数据都是不可分割的最小单元
第二范式
一致性:记录的唯一性,每一条记录都应该有唯一的标识,比如主键。
第三范式
数据不要冗余
注:冗余的数据会使数据的维护成本增加,同时在某些场景中,冗余的数据可能会方便数据的查询,假如数据的查询远大于增删改的需求,那么可以考虑数据的冗余 否则不应该冗余。这种冗余数据的做法叫做“反范式化设计”
7.多表查询
连接查询
- 交叉连接:cross join 交叉连接其实就是求多个表的笛卡尔积 并没有实际的作用意义。
- 内连接 innor join 内连接分为显示内连接和隐式内连接两种
- 外连接 outer join
- 左外连接 left outer join 在内连接的结果的基础上,会去和左表做并集,会全部保留左表的数据
- 右外连接 right outrt join 在内连接的结果的基础上,会去和右表做并集,会完全保留右表的数据
- outer 可以省略
连接查询最重要的是找到连接条件!
子查询
子查询又称嵌套查询,是指,一个sql语句的结果可以作为另一个sql语句的条件。
联合查询
union / union all 拼接多个sql语句 要求:每个sql语句查询出的临时表的 列名与数据类型要一致
菜鸟程序员的总结与复习 仅供参考
本文来自博客园,作者:向着年薪百万前进,转载请注明原文链接:https://www.cnblogs.com/likangnianxinbaiwan/p/16307374.html

浙公网安备 33010602011771号