Java 之 数据库
1.SQL——结构化查询语言
a.分类:①DDL——数据定义语言
②DQL——数据查询语言
③DML——数据操作语言
④DCL——数据控制语言
b.DDL:包括对数据库的创建、使用、删除,对表的创建、删除、修改
c.DML:包括对表里的数据 增、删、改
d.DQL:对表里的数据进行各种各样的查询
2.标识符规范:
a.第一个字符必须是:字母、下划线(_)、at符号(@)、数字符号(#)
b.后续字符可以是:字母、数字、美元符号($)、下划线(_)、at符号(@)、数字符号(#)
c.软性规定:①表名前加 t_
②普通列名前加 f_
③主键名前加 pk_
④外键名前加 fk_
3.数据类型:
a.整数数据类型:tinyint(1个字节)、smallint(2个字节)、mediumint(3个字节)、int(4个字节)、bigint(8个字节)
b.浮点数据类型:float(4字节)、double(8字节)、decimal(m,d)(17字节)、 numeric(M,D)(17字节)
注:M为总位数,D为小数位,M必须大于D
c.字符串数据类型:char(N)0-255、 Varchar(N)0-65535
d.二进制数据类型:tinyblob (255)、 blob (65k)、mediumblob (16M)、longblob (4G)
e.逻辑数据类型:boolean (0-1)
f.日期数据类型:year(1个字节)1901-2155、date(3个字节) 1000-9999、timesamp(4个字节) 1970-2038、datatime(8个字节) 1000-9999
4.对数据库的操作:
a.创建:
create database <库名>
b.使用:
use <库名>
c.删除:
drop database <库名>
5.对表的操作:
a.创建表:
create table <表名> (<列名> <列的数据类型> [<列的约束>]);
注:列与列之间用“,”分隔
b.删除表:
drop table <表名>
c.复制表:
create table <表名2> select * from <表名1>
d.修改表
alter table <表名> add <列名> <列数据类型> ; //添加列alter table <表名> change <旧列名> <新列名> <列数据类型> ; //修改列alter table <表名> drop column <列名>; //删除列
6.表关系:
a.一对一关系
b.一对多关系
c.多对多关系
7.约束:
a.作用:保证数据库的完整性
数据可靠性 + 数据准确性 = 数据完整性
b.分类:实体完整性(行)、域完整性(列)、引用完整性(外键)、用户自定义完整性(自定义)
c.逐渐约束:不能为空,也不能重复
<主键名> int primary key;primary key (<主键名>);
d.唯一约束:UNIQUE
e.默认约束:DEFAULT
f.非空约束:NO NULL
g.检查约束:CHECK(MySQL不支持)
h.外键约束:如果要给表添加外键,外键约束必须为INNODB类型(最后加ENGINE = INNODB)
<外键名> int reference <表名> (<主键名>);constrant foreign key (<外键名>) reference <表名> (<主键名>);
8.DML——数据操作语言
a.添加:insert
insert into <表名> (<列名列表>) values (<值列表>);insert into <表名> (<列名列表>) select <select语句>;insert into <表名> values (<值列表1>),(<值列表2>),(<值列表3>); //仅在MYSQL中使用
b.修改:update
update <表名> set <列1> = <新值1>, <列2> = <数值2> where <过滤条件>;update t_student set f_name = 20 where pk_id > 2;
c.删除(可恢复):delete
delete from <表名> where <过滤条件>;
d.删除(不可恢复):truncate
truncate table <表名>;
9.DQL——数据查询语言
a.完全形态:
select [列] from 表名 [where 过滤条件] [order by 列1, 列2] ;
b.执行顺序:from——where——投影——select——order by
c.表前缀:<表名>.<列名>
t_team.f_teamName
e.列别名:<列名> AS <自定标识符>
select f_name as N, f_age as A from t_student as S;
作用:多在多表同名是使用,易于区别
f.计算列
①自增:
select f_teamNum + 5 from t_team;
②字符串拼接:
select concat (姓名, '_', 年龄) from t_student;
g.排除重复数据——distinct关键字
select distinct 列1 from 表名;
h.返回限定行数的查询——limit关键字(仅在MYSQL中使用)
select 列1, 列2 from 表名 limit 开始序号, 返回行数;
i.选择操作——组合where条件
①and:并且,相当于&&
②or:或者,相当于||
③between—and:两界限数据范围之间
④in(,)/ not in(,):多选
⑤like/ not like:模糊查询
通配符:'_':单个字符
'%':任意多个字符
⑥is null/ is not null:判断是否非空
j.排序操作
①关键字:order by
②单列排序:默认升序。降序:desc;升序:asc
select * from 表名 order by 列名 desc;
③多列排序:每列之间加逗号(,)根据后面列名的顺序确定优先级
select * from 表名 order by 列1, 列2, 列3;
10.聚合函数 与 分组
a.聚合函数的种类:
①count:统计行数目
②sum:获取单个列的合计值
③avg:计算某列的平均值
④max:计算列的最大值
⑤min:计算列的最小值
b.count:
select count (<计数规范>) from <表名>;
技术规范:①*:所有行(包括null)
②all 列:统计指定列非空值行(all 可以省略)
③distinct 列:统计指定列唯一非空值行
c.sum:
select sum (<计数规范>) from <表名>;
技术规范:①all 列 ②distinct 列
d.avg:
select avg (<平均数规范>) from <表名>;
技术规范:①all 列 ②distinct 列
注意:默认小数点后面4位小数
e.max/min:
select avg (<列名>) from <表名>;
没有 *,all,distinct
f.数据分组
①格式:
select 列A, 聚合函数(聚合函数规范) from 表名 where 过滤条件 group by 列A, 列B having 过滤条件
②执行顺序:from——where——group by——select——having——order by
③where与having:where在分组前运行,过滤的是from之后的语句,having在分组后运行,过滤的是select后的列表;
④注意:分组后的投影,只能显示聚合函数或者分组列,显示其他列是没有意义的
11.子查询
a.定义:嵌套在主查询中的查询
select 列A, (子查询)as 列B from 表名;
b.嵌套位置:select/from/where/group by/having/order by
c.特点:①select嵌套查询的值只能是单行单列
②from嵌套查询的值只能是多行多列
③where嵌套查询的值只能是单行单列;但 in 之后为单列,可以为单行或者多行
d.运算符:
①all:逐一比较,全部满足才为真
②any:逐一比较,只要一条记录满足就为真
③exists/not exists:存在数据为真,不存在数据为假,not exists则相反
e.子查询分类:
①相关子查询:制定依赖于外部查询的数据
②非相关子查询:独立于外部查询的子查询
12.表连接
a.定义:将多个表联合在一起实现查询效果
b.关键字:join — on
select 列1, 列2 from 表1 join 表2 on 表1.列 = 表2.列;
c.与union比较:union 为纵向链接;表联接 为横向链接(笛卡尔乘积)
d.分类:①内联接:[inner] join
②外联接:left join (左外联接)
right join (右外联接)
full join (全外联接,MYSQL不支持)
③自联接:本表与本表联接
13.游标
a.创建存储
CREATE DEFINER=`root`@`localhost` PROCEDURE `pd_test`(IN `v_param` varchar(50), OUT `v_return` int) BEGIN-- 表中对应的字段declare v_id int;declare v_cmdtyCode VARCHAR(255);declare v_cmdtyName VARCHAR(255);-- 停止标识declare flag tinyint default false;-- 游标declare cur_cmdty CURSOR for SELECT id,cmdty_code,cmdty_name FROM cmdty;declare continue handler for not found set flag = true;set v_return = 0;-- 打开游标open cur_cmdty;l2:loopfetch cur_cmdty into v_id, v_cmdtyCode, v_cmdtyName;-- 跳出if flag thenleave l2;end if;-- 测试导入数据到另一张表INSERT INTO cmdty_temp (id, cmdty_code, cmdty_name) VALUES (v_id, v_cmdtyCode, v_cmdtyName);-- 返回值+1set v_return = v_return + 1;end loop;close cur_cmdty;END
注:此为 Mysql 游标的使用,Oracle有差异,并且Oracle支持隐式游标 ,可直接 for v_cmdty in (select * from cmdty)
b.执行存储
call pd_test("zwj", @ret); select @ret;
转载于:https://www.cnblogs.com/vettel0329/p/6204661.html
Java 之 数据库相关推荐
- 将前台日期格式转成与数据库日期格式相对应,后台java转数据库日期格式
前台到后台java时data日期类型的转化 在实体类中用@DataTimeFormat,这样设置即使传过来是空的字符串也是可以转的,要和前面传过来的格式一致,如 @XmlElement(name=&q ...
- Java获取数据库表的字段信息,及如何将ResultSet转为json
为什么80%的码农都做不了架构师?>>> 一.Java获取数据库表的各个字段的相关信息 在某些开发情景中,需要获取数据库中表的各个字段的相关信息,如字段名,字段类型,字段大小等 ...
- java servlet 数据库_Java Servlet调用数据库复习
首先要导入jar包. 剩下的基本就是模版式的代码了: public class main { // JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = ...
- java获取数据库MetaData
java获取数据库MetaData 元数据(MetaData),即数据的描述信息的数据(表).数据库的表的表名,表的属性名,表的存储位置,表的列数啊等等都是表的描述信息,而这些描述信息就是元数据啦 ...
- java 从数据库取值_JAVA操作数据库--从一张表中取值,经过判断,然后插入另一张表中。...
JAVA操作数据库-->从一张表中取值,经过判断,然后插入另一张表中. SQL语句如下:两张表 weather 和 weather_process. id均为自动增长.Oracle中采用序列 S ...
- java监控数据库性能_Java:GraalVM数据库流性能
java监控数据库性能 GraalVM是JVM块的新成员. 它是一个开源虚拟机,能够同时运行多种编程语言,例如Java,Rust和JavaScript. GraalVM还具有一个新的内部代码优化器管道 ...
- java 微型数据库_Java 9代码工具:使用Java微型基准测试工具的实践会话
java 微型数据库 用肉眼看,基准测试似乎只是确定执行某些代码需要花费多长时间的简单问题. 但是,通常情况下,这是幼稚的方法. 提供具有准确和可重复结果的有意义的基准并非易事. 在本文中,我们将向您 ...
- java实现数据库内容修改_数据库更改到Java环境中实现可持续和平
java实现数据库内容修改 对我们而言,可持续和平正在消除不确定性. 在这种情况下,由于数据库更改,欢迎使用Ruby的Active Record Migrations . 迁移对我们意味着什么? 嗯, ...
- java传入数据库生成柱状图_Java读取数据库数据生成柱状图
此案例是用swing显示数据的.须要引入jfreechart相关包.不同版本号可能包不同样.本人用的是 此案例在ssi框架下会报错,不用框架就没问题. Java后台逻辑代码: public class ...
- 理解Java操作数据库原理
2019独角兽企业重金招聘Python工程师标准>>> 参考:https://blog.csdn.net/xiaozhegaa/article/details/70208646 上面 ...
最新文章
- 用筛法求之N内的素数。(N 1000000)
- 鸿蒙智慧电视,华为的鸿蒙电视与智能电视有什么区别
- python文本聚类分析_python机器学习kmeans算法——对文本进行聚类分析
- Android自定义控件ImageViwe(四)——多点触控实现图片的自由移动
- ASP.NET Web API 简介
- 轨迹压缩文献阅读: Similarity-Based Compression of GPS Trajectory Data
- 说说你对工厂模式的理解
- Javascript第五章DOM简介和window对象第一课
- php调用go微服务,基于go搭建微服务实践教程 (一)
- wps演示怎么提高列表级别_wps文字如何设置标题级别?wps设置标题级别教程
- linux c++ opencv4安装指南
- 装修报价不担心被骗 避免家装陷阱报价揭密
- 复合函数求导经典例题_复合函数求导解析及练习
- Json与List、Map、entity的互相转化
- 【Python习题】计算弓形的面积(保姆级图文+实现代码)
- 怎么画一点透视,两点透视,三点透视
- 云计算之路-阿里云上:在乌云中坚信蓝天
- 解决:VS2010 无法打开“****”,因为此版本的应用程序不支持其项目类型
- 如何去做词频统计和关键词共现分析
- atof跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换