目录

1.数据库概念

1.1什么是数据库

1.2关系型和非关系型数据库的关系

1.3 Mysql数据库

1.3.1 MySQL数据存放位置

1.3.2客户端打开方式

MySQL客户端2:可视化工具

2. sql语句

2.1 sql简介

2.2  分类

2.3 常见操作语句

2.3.1 数据库的常见操作

2.3.2 表的常见操作

2.3.3 表里的记录的常见操作

2.4 字段约束

2.5 条件查询

2.6 模糊查询

2.7 分页排序

null

between and

limit

order by

2.8 其他关键字

count

max / min

sum / avg

group by 和 Having

3.数据库特性

3.1 事务 transaction

3.2  隔离级别

3.3  索引 index

3.3.1 定义

3.3.2 分类

3.3.3 相关命令

3.4  多表联查 join

inner join、left join、right join的区别?


1.数据库概念

1.1什么是数据库

简而言之,就是存储数据,管理数据的仓库。

常见的数据库分为:

  • 关系型数据库, Oracle、MySQL、SQLServer、Access
  • 非关系型数据库, MongoDB、Redis、Solr、ElasticSearch、Hive、HBase

1.2关系型和非关系型数据库的关系

早期发展的数据库建立在数据的紧密关系基础之上(如:父子关系、师生关系),我们称其为关系型数据库,也称为传统数据库;现今数据库建立在数据的松散关系基础之上(如:中国人和美国人、中国人和印度人、视频、音频),我们称其为非关系型数据库nosql(not only sql)。业界总在争论nosql能否干掉传统数据库,很多初学者也有这个困惑。以我来看,两者没有矛盾,它们各有特点,根据业务情况互补才是真谛。

1.3 Mysql数据库

  1. mysql服务端,它来处理具体数据维护,保存磁盘
  2. mysql客户端,CRUD新增,修改,删除,查询

1.3.1 MySQL数据存放位置

在MySQL的配置文件my.ini中会进行默认配置

1.3.2客户端打开方式

MySQL客户端1:DOS窗口

语法: mysql -uroot -proot   实质:mysql.exe执行文件

代表参数 -u 用户名,紧接着写的 -p 密码,紧接着写的

MySQL客户端2:可视化工具

2. sql语句

2.1 sql简介

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

SQL 是1986年10 月由美国国家标准局(ANSI)通过的数据库语言美国标准,接着,国际标准化组织(ISO)颁布了SQL正式国际标准。

2.2  分类

DML(Data Manipulation Language)数据操纵语言
如:insert,delete,update,select(插入、删除、修改、检索)简称CRUD操新增Create、查询Retrieve、修改Update、删除Delete

DDL(Data Definition Language)数据库定义语言
如:create table之类

DCL(Data Control Language)数据库控制语言
如:grant、deny、revoke等,只有管理员才有相应的权限

DQL(Data Query Language)数据库查询语言
如: select 语法

2.3 常见操作语句

2.3.1 数据库的常见操作

–1,查询:show databases

–2,新增:create database 库名

–3,删除:drop database 库名

2.3.2 表的常见操作

–1,创建表 :create table 表名(字段名 字段类型(字段长度),字段2,字段3…)

String -> varchar   int -> int  Boolean—inttny

double -> double

–2,删除表 : drop table 表名

–3,修改表 :alter table tb_door add column addr varchar(100);

–4,查看表:show tables;

–5,描述表:desc tb_door ;

2.3.3 表里的记录的常见操作

–1,新增:insert into 表名 values(‘字段1的值’ , “字段2的值” , …)

mysql> insert into tb_door values(10000,'first',"010-666888",'bj');

–2,删除:delete from 表名

mysql> delete from tb_door;mysql> select * from tb_door;

–3,修改:update 表名 set 字段名=字段的新值

mysql> update tb_door set addr='shanghai';

–4,查询:select 字段名 from 表名

select id from tb_door; --只查id列的值select id,addr from tb_door; --查id和addr列的值select * from tb_door; --查所有列的值 -- 低效

2.4 字段约束

#没有约束,id的值可以重复,可以是null

create table a(id int)

#主键约束,id的值不能重复,不能是null

create table b(id int PRIMARY key)

#主键约束自动递增,id的值不能重复,不能是null,而且自动递增

create table c(id int PRIMARY key auto_increment)

#没有非空约束:字段的值可以为空

create table d( name varchar(10) )

#非空约束:字段的值不能为空

create table e( name varchar(10) not null )

#不用唯一约束:字段的值可以重复

create table f( name varchar(10) )

#唯一约束:字段的值不能重复

create table g( name varchar(10) unique )

2.5 条件查询

distinct:使用distinct关键字,去除重复的记录行

SELECT loc FROM dept;SELECT DISTINCT loc FROM dept;

where:where中不能使用列别名!!

select * from emp
select * from emp where 1=1 --类似没条件
select * from emp where 1=0 --条件不成立
select * from emp where empno=100 --唯一条件select * from emp where ename='tony' and deptno=2 --相当于两个条件的&关系
select * from emp where ename='tony' or deptno=1 --相当于两个条件的|关系select name, sal from emp where sal=1400 or sal=1600 or sal=1800;
-- 或select name, sal from emp where sal in(1400,1600,1800);select name, sal from emp where sal not in(1400,1600,1800);

2.6 模糊查询

like:通配符%代表0到n个字符,通配符下划线_代表1个字符

select * from emp where ename like 'l%' --以l开头的
select * from emp where ename like '%a' --以a结束的
select * from emp where ename like '%a%' --中间包含a的
select * from emp where ename like 'l__' --l后面有两个字符的 _代表一个字符位置

2.7 分页排序

null

select * from emp where mgr is null --过滤字段值为空的select * from emp where mgr is not null --过滤字段值不为空的

between and

select * from emp where sal<=3000 and sal>=10000--等效select * from emp where sal between 3000 and 10000--等效

limit

分数最高的记录:按分数排序后,limit n,返回前n条。Oracle做的很笨,实现繁琐,后期有介绍,而mysql做的很棒,语法简洁高效。在mysql中,通过limit进行分页查询:

select * from emp limit 2 --列出前两条
select * from emp limit 1,2 --从第二条开始,展示2条记录
select * from emp limit 0,3 --从第一条开始,展示3条记录--前三条

order by

SELECT * FROM emp order by sal #默认升序
SELECT * FROM emp order by sal desc #降序

2.8 其他关键字

count

select count(*) from emp --底层优化了
select count(1) from emp --效果和*一样
select count(comm) from emp --慢,只统计非NULL的

max / min

select max(sal) from emp --求字段的最大值
select min(sal) min from emp --获取最小值select min(sal) min,max(sal) max from emp --最小值最大值
SELECT ename,MAX(sal) FROM emp group by ename --分组

sum / avg

select count(*) from emp --总记录数
select sum(sal) from emp --求和
select avg(sal) from emp --平均数

group by 和 Having

select deptno, AVG(sal) from emp
group by deptno #按部门分组
having AVG(sal)<8000 #查询条件,类似where,但是group by只能配合having

3.数据库特性

3.1 事务 transaction

事务4个特性ACID

一般来说,事务是必须满足4个条件(ACID):原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中如果发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

3.2  隔离级别

事务隔离分为不同级别,包括

读未提交(Read uncommitted) 安全性最差,可能发生并发数据问题,性能最好
读提交(read committed) Oracle默认的隔离级别
可重复读(repeatable read)MySQL默认的隔离级别,安全性较好,性能一般
串行化(Serializable) 表级锁,读写都加锁,效率低下,安全性高,不能并发

3.3  索引 index

3.3.1 定义

索引是一种排好序的快速查找的数据结构,它帮助数据库高效的进行数据的检索。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(额外的存储空间),这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高效的查找算法。这种数据结构就叫做索引。

一般来说索引本身也很大,不可能全部存储在内存中,因此往往以索引文件的形式存放在磁盘中。目前大多数索引都采用BTree树方式构建。

3.3.2 分类

单值索引:一个索引只包括一个列,一个表可以有多个列
唯一索引:索引列的值必须唯一,但允许有空值;主键会自动创建唯一索引
复合索引:一个索引同时包括多列

3.3.3 相关命令

查看索引,主键会自动创建索引:show index from dept;

创建普通索引: create index 索引名字 on 表名(字段名);

创建唯一索引:CREATE UNIQUE INDEX 索引名 ON 表名(字段名)

创建复合索引:CREATE INDEX 索引名 ON 表名 (字段1, 字段2)

删除索引:alter table dept drop index fuhe_index

3.4  多表联查 join

inner join、left join、right join的区别?

  • INNER JOIN两边都对应有记录的才展示,其他去掉
  • LEFT JOIN左边表中的数据都出现,右边没有数据以NULL填充
  • RIGHT JOIN右边表中的数据都出现,左边没有数据以NULL填充

举例: 左连接就是以from左边为主,拿上面两个例子来说,第一种是以学生(students)为主,假如学生成绩为空,也能查询到学生信息,只不过成绩为空。而第二种则是以成绩为主(sc)所以先查学生成绩,如果成绩为空就算学生存在,也查不到记录。

java基础——数据库相关推荐

  1. 数据库索引高频面试题:传智播客java基础入门第二版答案

    在校生 如果你是在校生,你应该趁着在学校的时间夯实基础(比如计算机系统.算法.编译原理等等)不要动不动去搞什么项目,你也搞不出一个让面试官很满意的项目出来,所以根本没必要在项目上面浪费太多的时间. 如 ...

  2. 太牛了!万文长字:Java基础+网络知识+Linux+数据结构与算法+数据库+系统设计+必会工具+面试指南,一文将Java面试讲解的清清楚楚!

    前言 今天给大家推荐一本PDF文档<Java中高级核心知识全面解析>这份文档总页数:524页.分为八个部分每个部分详细地讲解了核心知识点. 第一部分 扎实的Java基础 (Java基础+容 ...

  3. 【mysql基础知识】解决java写入数据库时中文乱码的问题

    一.保证编程工具的编码格式正常 我用的IDEA,根据之前写的一篇博文(https://blog.csdn.net/qq_42152399/article/details/80995244),将IDEA ...

  4. java基础-14-连接数据库

    第1章 数据库 1.1 数据库概述 l 什么是数据库 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作. l 什 ...

  5. 我的面试标准:第一能干活,第二Java基础要好,第三最好熟悉些分布式框架!...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:hsm_computer www.cnblogs.com/J ...

  6. Java基础篇:JDBC核心技术

    文章目录 第1章:JDBC概述 1.1 数据的持久化 1.2 JDBC介绍 1.3 JDBC程序编写步骤 第2章:获取数据库连接 2.1 要素一:Driver接口实现类 2.1.1 Driver接口介 ...

  7. Java基础、多线程、JVM、集合八股文自述(持续更新)

    Java基础.多线程.JVM.集合八股文自述 一.Java基础 1.1 object类有哪些方法? getClass().hashCode().equals().clone().toString(). ...

  8. Java基础-异常(Exception)处理

    Java基础-异常(Exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.异常的概述 什么是异常?Java代码在运行时期发生的问题就是异常.在Java中,把异 ...

  9. java 多态判断非空_跳槽涨薪季面试题之java基础(一)

    点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 为迎接金九银十跳槽涨薪季,小编汇总了java精编版面试题,大概从java基础.java8特性.多线程.spring.springboot. ...

  10. 100道Java基础面试题收集整理(附答案)

    不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...

最新文章

  1. 一文回顾2018英特尔人工智能大会
  2. css3 选择器_CSS 3
  3. Hessian使用记录
  4. 谈谈我对Java中CallBack的理解
  5. php删除excel文件,php操作excel文件的方法小结
  6. 微服务网关Gateway-PrefixPath讲解
  7. xaml语言建立首个win8 Metro应用,rss阅读器
  8. “约见”面试官系列之常见面试题第二十七篇之vue-router的重要属性
  9. java 对接支付宝支付
  10. Java自定义异常、全局捕获异常、拦截器 实现动态控制登录超时
  11. java 验证服务器宕机_java服务宕机原因查询
  12. emacs工程管理,cedet ede插件自动构建Make,Automake
  13. 二分类最优阈值确定_结合mRMR选择和IFCM聚类的遥感影像分类算法
  14. 如何清理 C 盘空间
  15. DaZeng:Vue全家桶实现小米商城(二)
  16. 如何解决WORD安全模式错误问题
  17. Java基础_面向对象,Lambda 表达式
  18. 对“主数据”的一点吐槽
  19. 不小心执行了rm -f 如何恢复
  20. rtx2060什么水平_RTX2060与Super有什么区别?RTX2060和RTX2060 Super性能对比评测

热门文章

  1. CAD两条曲线如何连接成平滑的波浪线?
  2. IP协议号与传输层端口
  3. 斐波那契堆 - 解析与实现
  4. 计算机usb接口失灵,电脑usb接口没反应,教您电脑usb接口没反应怎么解决
  5. 电脑故障,usb驱动安装失败如何修复解决方案-驱动人生
  6. cpu使用率的另一种获取方法
  7. cada0图纸框_a0标准图框|autocad a0标准图纸框模板下载免费版 - 欧普软件下载
  8. 程序员自编的中华古诗词数据库在GitHub上火了!
  9. 3串口多串口双串口以及2串口UART转WiFi多跳通讯实现三
  10. C实现utf8与gbk互转