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.表的操作

  1. 创建:
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语句查询出的临时表的 列名与数据类型要一致

菜鸟程序员的总结与复习 仅供参考

posted @ 2022-05-26 21:19  向着年薪百万前进  阅读(171)  评论(0)    收藏  举报