Java开发系列-MySQL
概述
| 数据库 | 公司 | 特点 |
|---|---|---|
| Mysql | Oracle | 开源的数据库 社区版免费 商业版是收费的 |
| Oracle | Oracle | 大型的 收费的数据库 |
| DB2 | IBM | 大型的 收费的数据库 一般用于银行系统 特点主要它的硬件比较稳定 |
| sqlserver | 微软 | 中型的收费的数据库 c++开发者使用 |
MySQL是属于关系型数据库,而Oracle是属于非关系型数据库(直接存储对象)。
MySQL语句
基本语句
-- 创建数据库
CREATE DATABASE mydb;
-- 创建表
CREATE TABLE USER (
uid INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) DEFAULT NULL
);
-- 插入数据
INSERT INTO USER VALUES(NULL, 'tom');
-- 更新数据
UPDATE USER SET username = 'rose' WHERE id = 1;
-- 删除表
DROP TABLE USER;
-- 删除表中的所有数据
DELETE FROM USER;
-- 查询表中所有数据
SELECT *FROM USER;
聚合函数
对一列进行计算 返回值是一个,忽略null值, sum(), avg(), max(), min(), count();

-- .获得所有商品的价格的总和
SELECT SUM(price) AS totalPrice FROM product;
-- 获得商品表中价格的平均数:
SELECT ROUND(AVG(price), 2) AS vagprice FROM product;
-- 获得商品表中有多少条记录
SELECT COUNT(*) FROM product;
分组查询
-- 根据cno字段分组,分组后统计商品的个数
SELECT cno, SUM(price)FROM product GROUP BY cno;
-- 根据cno分组,分组统计每组商品的总数量,并且总数量> 200;
SELECT cno, SUM(pnum) FROM product GROUP BY cno HAVING SUM(pnum) > 200;
-- 获得商品表中有多少条记录:
select count(*) from products;
注意:having与where的区别 1.where 是对分组前的数据进行过滤 ;having 是对分组后的数据进行过滤 2. where 后面不能使用聚合函数,having可以
排序查询
-- 查询所有的商品,按价格进行排序.(asc-升序,desc-降序)
SELECT *FROM product ORDER BY price ASC;
-- 查询名称有"新"的商品的信息并且按价格降序排序
SELECT *FROM product WHERE pname LIKE '%新%' ORDER BY price DESC;
分页查询
limit n, m; 从第n条记录开始查询m条数据。
SELECT *FROM product LIMIT 0, 2;
SELECT *FROM product LIMIT 2, 2;
SELECT *FROM product LIMIT 4, 2;
SELECT *FROM product LIMIT 6, 2;
确定好PageSize,做某一页分页查询的数据公式
limit (n-1)*pageSize pageSize
MySQL表设计
在MySQL中存在三种关系:一对一,一对多,多对多。
一对多
比如开发中用户与订单的关系,对于一表我们也可以称之为主表,而多表称之为从表。遵循的设计原则从表中添加一个外键对应主表的主键。
-- 用户表
create table user(
id int primary key auto_increment,
username varchar(20)
);
-- 订单表
create table orders(
id int primary key auto_increment,
totalprice double,
user_id int
);
为了保证数据的有效性和完整性,添加约束(外键约束).
-- alter table 多表名称 add foreign key(外键名称) references 一表名称(主键);
alter table orders add foreign key(user_id) references user(id);
- 添加了外键约束之后有如下特点
- 主表中不能删除从表中已引用的数据
- 从表中不能添加主表中不存在的数据
多对多
比如: 订单与商品的关系。
-- 创建商品表
-- 创建商品表
create table product(
id int primary key auto_increment,
name varchar(20),
price double
);
-- 创建中间表
create table orderitem(
oid int,
pid int
);
-- 添加外键约束
alter table orderitem add foreign key(oid) references orders(id);
alter table orderitem add foreign key(pid) references product(id);
开发中处理多对多:引入一张中间表,存放两张表的主键,一般会将这两个字段设置为联合主键,这样就可以将多对多的关系拆分成两个一对多了
多表查询
笛卡尔积
多张表无条件的联合查询.没有任何意思
select a.*,b.* from a,b;
内连接
-- 显示的内连接
select a.*,b.* from a [inner] join b on ab的连接条件
-- 隐式的内连接
select a.*,b.* from a,b where ab的连接条件
外连接
-- 左外连接
select a.*,b.* from a left [outer] join b on 连接条件;
先展示join左边的(a)表的所有数据,根据条件关联查询 join右边的表(b),符合条件则展示出来,不符合以null值展示.
-- 右外连接
select a.*,b.* from b right [outer] join a on 连接条件;
先展示jion右边的表(a)表的所有数据,根据条件关联查询join左边的表(b),符合条件则展示出来,不符合以null值展示.
子查询
一个查询依赖另一个查询. 用()连接。
Java开发系列-MySQL的更多相关文章
- 【java开发系列】—— JDK安装
前言 作为一个java开发者,安装JDK是不可避免的,但是配置路径却总是记不住,百度也有很多参考例子.这里仅仅当做以后参考的笔记记录. 说到JDK,就不得不提JRE.他们到底是什么呢? 通常我们进行j ...
- Java开发系列-文件上传
概述 Java开发中文件上传的方式有很多,常见的有servlet3.0.common-fileUpload.框架.不管哪种方式,对于文件上传的本质是不变的. 文件上传的准备 文件上传需要客户端跟服务都 ...
- Java开发系列-JDBC
概述 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和 ...
- 【java开发系列】—— struts2简单入门示例
前言 最近正好有时间总结一下,过去的知识历程,虽说东西都是入门级的,高手肯定是不屑一顾了,但是对于初次涉猎的小白们,还是可以提供点参考的. struts2其实就是为我们封装了servlet,简化了js ...
- 【java开发系列】—— 自定义注解
之前在开发中,就总纳闷,为什么继承接口时,会出现@Override注解,有时候还会提示写注解@SuppressWarnings? 原来这是java特有的特性,注解! 那么什么是注解呢? 注解就是某种注 ...
- 【java开发系列】—— Tomcat编译报错
由于之前Eclipse里面有一个可移植性的web工程,但是在我很久没用后,再次登录这个IDE的时候就发现了问题. 首先,我的电脑里面有两个版本的JDK,1.6和1.7.两个版本的Tomcat6和7以及 ...
- Java开发系列-注解
概述 在JDK5之后提供了一个新特性,和类.接口同级.定义时使用的关键字是@interface.注解主要有三个作用,分别是编译检查.替代配置文件.定义注解(元注解).分析代码(用到反射).注解的本质就 ...
- Java开发系列-JSP
概述 JSP是java 服务器页面,它运行在服务器端,本质上就是一个serlvet,产生的java文件和class保留在tomcat的word目录下. JSP主要作用是将内容的生成与页面相分离. JS ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
随机推荐
- 说说ReactiveCocoa 2
http://www.cocoachina.com/applenews/devnews/2014/0115/7702.html 转自无网不剩的博客 ReactiveCocoa是Github开源 ...
- dajian
http://blog.csdn.net/inject2006/article/details/3064399 http://bbs.dospy.com/thread-16173173-1-464-1 ...
- Django中的HttpResponse和JsonResponse
Django中的HttpResponse和JsonResponse 我们在编写一些借口函数的时候,经常需要给调用者返回json格式的数据,那么如何返回可直接解析的数据呢? 首先第一种方式: from ...
- RoadFlow2.7.5 MyController.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- ICPC 2018 焦作区域赛
// 2019.10.7 练习赛 // 赛题来源:2018 ICPC 焦作区域赛 // CF链接:http://codeforces.com/gym/102028 A Xu Xiake in Hena ...
- RoHS
RoHS是<电气.电子设备中限制使用某些有害物质指令>(the Restriction of the use of certain hazardous substances in elec ...
- jdk源码阅读
转载https://www.cnblogs.com/mh-study/p/10078548.html 1.java.lang 1) Object 12) String 13) AbstractStri ...
- Python3入门机器学习经典算法与应用✍✍✍
Python3入门机器学习经典算法与应用 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的 ...
- Error resolving template,template might not exist or might not be accessible by any of the configured Template Resolvers
template might not exist or might not be accessible by any of the configured Template Resolvers at o ...
- 21-4indexOf
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...