什么是JavaWeb
web:全球广域网,也称为万维网(www.)能过通过浏览器访问网站
javaWeb:用来开发网站。使用java技术解决相关web互联网领域的技术
这里写目录标题
javaWeb介绍
web系统就是从网页中把数据库里存储的数据拿出来展现。但是网页不能直接从数据库拿去数据,必须借助Javaweb程序
概念
数据库
存储数据的仓库。数据是有组织的进行存储
关系型数据库
关系型数据库是建立在关系模型基础上的数据库,简单说、关系型数据库是由多张能互相联系的二维表组成的数据库
优点:
1、都使用表结构、格式一致、易于维护
2、使用通用的SQL语言操作、方便使用,可用于复杂查询
3、数据存储在磁盘中,安全
数据管理系统
管理数据库的大型软件。管理数据库,比如mysql
sql
常见的关系型数据库管理系统
数据库 | 介绍 |
---|---|
Oracle | 非常昂贵(可达40w)的大型数据库,广泛用于银行(Oracle公司) |
MySql | 免费的中小型数据库(最后被oracle公司收购),广泛用于互联网公司 |
SQLServer | 收费的中型数据库 |
PostgreSQL | 免费的中小型数据库 |
DB2 | IBM公司大型收费数据库 |
SQLite | 嵌入式微型数据库 |
sql编程语言
sql:
- 结构化程序语言
- 操作关系型数据库编程语言
- 定义所有关系型数据库的统一标准
简介:
- 英文: Structured Query Langusge,简称SQL
- 结构化查询语言,一门操作关系型数据库的编程语言
- 定义操作所有关系型数据库的统一标准
- 对于同一需求,每一种数据库操作的方式可能会存在一些不一样的地方,简称为“方言”
SQL通用语法
1、SQL语句可以单行或多行书写,以分号结尾
2、Mysql数据库的SQL语句不区分大小写,关键字建议使用大写
3、注释- 单行注释:- 注释内容或 # 注释内容(Mysql特有)
- 多行注释/* 注释 * /
SQL分类
- DDL : 数据定义语言,用来定义数据库对象:数据库,表,列等
- DML:数据操作语言,用来对数据库中表的数据进行增删改查
- DQL:数据查询语言,用来查询数据库中表的记录(数据)
- DCL;数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户
DDL(操作数据库)
1、查询数据库SHOW DATABASES;
2、创建
- 创建数据库
CREATE DATABASE 数据库名称
- 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS
3、删除 - 删除数据库
DROP DATABASE 数据库名称
- 删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS 数据库名称
4、使用数据库 - 查看当前使用数据库
SELECT DATABASE();
- 使用数据库
USE 数据库名称
数据类型
MySQL支持多种类型,可分为三类: - 数值
- 日期
- 字符串
修改表
1、修改表名:ALTER TABLE 表名 RENAME TO 新的表名
2、添加一列:ALTER TABLE 表名 ADD 列名 数据类型;
3、修改数据类型;ALTER TABLE 表名 MODIFY 列名 新的数据类型
4、修改列名和数据类型ALTER TABLE 表名 CHANGE 列名 新列名
5、删除列ALTER TABLE 表名 DROP 列名
DML(操作表)
- 添加(insert)
- 修改(updata)
- 删除(delete)
添加数据
1、给指定列添加数据INSERT INTO 表名(列名1,列名2,....) VALUES(值1,值2,...)
2、给全部列添加数据INSERT INTO 表名VALUES(值1,值2,....)
3、批量添加数据INSERT INTO 表名(列名1,列名2,....)VALUSES(值1,值2,....)(值1,值2,....)
或者INSERT INTO 表名VALUES(值1,值2,....)(值1,值2,....).....
删除数据
DELECT FROM 表名[WHERE 条件]
注意:删除语句如果不加条件,则将所有数据删除
DQL(查询)
基础查询
查询语法
1、查询多个字段SELECT 字段列表 FROM 表名;
或者SEECT * FROM 表名
注意从代码规范的角度不建议使用*号
2、去除重复记录SELECT DISTINCT 字段列表FROM 表名
3、起别名AS:AS可以省略
条件查询(where)
1、条件查询语法SELECT 字段名 FROM 表名 WHERE 条件列表
2、条件
排序查询(order by)
1、排序查询语法SELECT 字段列表 FROM 表名 GROUP BY 排序字段名 [排序方式],排序字段名 [排序方式]
排序方式
- ASC: 升序排列(默认值)
- DESC:降序排列
==注意:如果有多个排序条件,当前面的条件一样时,才会进行第二个
分组查询
聚合函数
1、概念:
将一列数据作为一个整体,进行纵向计算
2、聚合函数的分类
3、聚合函数语法:SELECT 聚合函数名 (列名) FROM 表;
注意:null值不参与所有聚合函数运算
分组查询
1、分组查询语法SELECT 字段列表 FROM 表名[分组前条件限定] GROUP BY分组字段名 [HAVING 分组后过滤条件]
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where和having区别
- 执行时机不一样:where是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
- 可判断的条件不一样:where不能对聚合函数进行判断,having可以
=执行顺序 :where >聚合函数 > having
分页查询
1、分页查询语法SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
起始索引:从0开始
计算公式:起始索引 = (当前页数-1)* 每页显示的条数
tip
- 分页查询limit是MySql数据库的方言
- Oracle分页查询使用的是rownumber
- SqlServer分页查询使用top
练习题
-- 查询男女同学各自的数学平均分
SELECT sex AVG(math) FROM student GROUP BY ssex;
SELECT ssex ,AVG(math) FROM student GROUP BY ssex;
-- 查询男女同学各自的数学平均分,以及各自人数
SELECT ssex ,AVG(math),COUNT(*) FROM student GROUP BY ssex;
-- 查询男女同学各自的数学平均分,以及各自人数,要求分数小于70的不参与分组
SELECT ssex ,AVG(math),COUNT(*) FROM student WHERE math >70 GROUP BY ssex;
-- 分页查询######################
-- 从0开始查询,查询3条数据
-- 每页显示三条数据,查询第一页数据
SELECT * FROM student LIMIT 0,3;
-- 每页显示三条数据,查询第二页数据
SELECT * FROM student LIMIT 3,3;
-- 每页显示三条数据,查询第三页数据
SELECT * FROM student LIMIT 6,3;
约束
约束
概念&分类
1、约束的概念和分类
- 约束是作用于表中列上的规则,用于限制加入表中的数据
- 约束的存在保证了数据库中数据的正确性,有效性和完整性
2、约束的分类
mysql不支持检查约束
非空约束
1、概念:
- 非空约束用于保证列中所有数值不能有NULL值
2、语法
(1)添加约束
-- 创建约束时添加非空约束
CREATE TABLE 表名(
列名 数据类型 NOT NULL,
....
);
-- 建表完后添加非空约束(不常用)
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
(2)删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型
唯一约束
1、概念:
- 唯一约束用于保证列中所有数据各不相同
2、语法
-- 创建约束时添加唯一约束
CREATE TABLE 表名(
列名 数据类型 UNIQUE
....
);
-- 建表完后添加非空约束(不常用)
ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;
(2)删除约束
ALTER TABLE 表名 DROP INDEX 字段名;
主键约束
1、概念
- 主键是一行数据的唯一标识,要求非空且唯一
- 一张表只能有一个主键
2、语法
(1)添加约束
-- 创建约束时添加主键约束
CREATE TABLE 表名(
列名 数据类型 PRIMARY KEY,
....
);
-- 建表完后添加非空约束(不常用)
ALTER TABLE 表名 ADD PRIMARY KEY 字段名 ;
```sql
-- 建表完后添加非空约束(不常用)
ALTER TABLE 表名 DROP PRIMARY KEY;
#### 默认约束
1、概念
- 保存数据时,未指定值则采用默认值
2、语法
(1)添加约束
```sql
-- 创建约束时添加唯一约束
CREATE TABLE 表名(
列名 数据类型 DEFAULT 默认值,
....
);
-- 建表完后添加非空约束(不常用)
ALTER TABLE 表名 ALTER 列名 SET DEFALUT 默认值;
(2)删除约束
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT
外键约束
1、概念:
- 外键用来让两个表数据之间建立链接,保证数据的一致性和完整性
2、语法
(1)添加约束
-- 建表时添加外键约束
CREATE TABLE 表名(
列表 数据类型 ,
...
[CONSTRAINT][外键名称] FOREIGN KEY (外键列名) REFERENCES 主表(主表列名)
);
-- 建表后添加主键约束
ALTER TABLE 表名ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
(2)删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称
数据库设计
软件研发步骤
数据库设计概念:
- 数据设计就是根据业务系统的具体要求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据库存储模型
- 建立数据库中的表结构以及表与表之间的关联关系的过程
- 有哪些表?表中有哪些字段?表与表之间有什么关系
3、数据库设计的步骤 - 需求分析(数据是什么?数据有哪些属性?数据与属性的特点是什么)
- 逻辑分析(通过ER图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
- 物理设计(根据数据库自身特点把逻辑设计转化为物理设计)
- 维护设计(对新的需求进行建表2、表优化)
表关系
一对一 - 如:用户与用户详情
一对多(多对一) - 部门和员工 一个部门有多个员工,一个员工从属于一个部门
多对多 - 商品和订单 一个商品对应多个订单,一个订单包含多个商品
多表查询
- 笛卡尔积:取A,B集合所有组合情况
连接查询- 内连接:相当于查询A B 交集数据
1、内连接查询语法
--隐式内连接
SELECT 字段列表 FROM 表1,表2... WHERE条件;
-- 显示内连接
SELECT 字段列表 FROM 表1[INNER] JOIN 表2 ON 条件;
内连接相当于查询A B 交集的数据
- 外连接:
1、左外连接:相当于查询A表所有数据和交集部分数据
2、右外连接:相当于查询B表所有数据和交集部分数据
-- 左外连接
SELECT 字段列表 from 表1 LEFT [OUTER]JOIN 表2 ON 条件
-- 右外连接
SELECT 字段列表 from 表1 RIGHT [OUTER]JOIN 表2 ON 条件
子查询
1、子查询概念
- 查询中镶嵌查询,称镶嵌查询为子查询
2、子查询根据查询结果不同,作用不同 - 单行单列:作为条件值,使用= !=< >等进行条件判断
SELECT 字段列表 FROM 表 where 字段名 =(子查询)
- 多行单列 :作为条件值使用in等关键字进行条件判断
SELECT 字段列表 FROM 表 where 字段名 in(子查询)
- 多行多列:作为虚拟表
SELECT 字段列表 FROM (子查询) where 条件
事物
事物简介
- 数据库的事物是一种机制,一个操作序列,包含了一组数据库操作命令
- 事物是把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据命令要么同时成功,要么同时失败
- 事物是不可分割的工作逻辑单元
事物操作
-- 开启事务
START TRANSACTION
或者BEGIN
-- 提交事物
COMMIT;
-- 回滚事物
ROLLBACK;
事物四大特征
- 原子性(atomicity):事物是不可分割的最小操作单位,要么同时成功,要么同时失败
- 一致性(Consistency):事物完成时,必须所有数据保持一致性
- 隔离性(Isolation):多个事物之间,操作的可见性
- 持久性(Durability):事物一旦提交或回滚,他对数据库中数据的改变是永久的