什么是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;
SELECT ssex ,AVG(math),COUNT(*) FROM student WHERE math >70 GROUP BY ssex;
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、概念:
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 条件
事物
|