JavaWeb介绍

Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站

JavaWeb:使用Java技术来解决相关互联网web领域的技术栈

数据库

存储数据的仓库,数据有组织的存储

英文:DataBase,简称DB

数据库管理系统:

管理数据库的大型软件

英文:DataBase Management System ,简称DBS

SQL

Structured Query Language 简称SQL,结构化查询语言

操作关系型数据库的编程语言

定义操作所有关系型数据库的统一标准

常见的关系型数据库

Oracle:收费得大型数据库MySQL:开源免费的小型数据库SQL Server:c# .net 常用PostgreSQL:开源免费中小型数据库DB2:IBM公司的大型收费数据库产品SQLite:嵌入式的微型数据库,如AndroidMariaDB:开源免费中小型数据库

MySQL数据库

关系型数据库:

关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的 二维表 组成的数据库

优点:

1. 都是使用表结构,格式一致,易于维护

2. 使用通用的 SQL 语言操作,使用方便,可用于复杂查询

3. 数据存储在磁盘中,安全

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 数据库名称;

DDL操作表

查询表

查询当前数据库下的所有表的名称

SHOW TABLES;

查询表结构

DESC 表名称;

创建表

CREATE TABLE 表名 (

字段名1 数据类型,

字段名2 数据类型,

...

字段名3 数据类型

);

注意:最后一行末尾,不能加逗号

数据类型

double类型的使用规则:double(总长度,小数点后的位数)

字符串类型:

char(10) 定长,不可变字符串。性能好,浪费空间varchar(10) 不定长,性能差,节约空间

案例

create table student(

id int,

name varchar(10),

gender char(1),

birthday date,

score double(5,2),

email varchar(64),

tel varchar(15),

status tinyint

);

删除表

1. 删除表

DROP TABLE 表的名称;

2. 删除表的时候,判断是否存在

DROP TABLE IF EXISTS 表名;

修改表

修改表名

ALTER TABLE 表名 rename to 新的表名

添加一列

alter table 表名 add 列名 数据类型

修改数据类型

alter table 表名 modify 列名 新数据类型

修改列名和数据类型

alter table 表名 change 列名 新列名 新数据类型

删除列

alter table 表名 drop 列名

DML

添加数据

给指定列添加数据

insert into 表名(列名1,列名2,...) values (值1,值2,...);

给全部列添加数据

insert into 表名 values (值1,值2,...);

批量添加数据

insert into 表名(列名1,列名2,...) values (值1,值2,...),values (值1,值2,...),values (值1,值2,...)...;

insert into 表名 values (值1,值2,...),values (值1,值2,...),values (值1,值2,...)...;

修改数据

修改表数据

update 表名 set 列名1=值1,列名2=值2,...[where 条件];

注意:修改语句如果不加条件,则将所有数据都修改

eg:

-- 将张三的性别改为女

UPDATE stu SET sex = '女' WHERE name = '张三';

删除

delete from 表名 [where 条件];

注意:

删除语句不加条件,会将表中所有数据都删除

DQL

查询语法

select

字段列表

from

表名列表

where

条件列表

group by

分组字段

having

分组后条件

order by

排序字段

limit

分页限定

创建一个stu表

-- 删除stu表

drop table if exists stu;

-- 创建stu表

CREATE TABLE stu (

id int, -- 编号

name varchar(20), -- 姓名

age int, -- 年龄

sex varchar(5), -- 性别

address varchar(100), -- 地址

math double(5,2), -- 数学成绩

english double(5,2), -- 英语成绩

hire_date date -- 入学时间

);

-- 添加数据

INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date)

VALUES

(1,'马运',55,'男','杭州',66,78,'1995-09-01'),

(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),

(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),

(4,'柳白',20,'女','湖南',76,65,'1997-09-05'),

(5,'柳青',20,'男','湖南',86,NULL,'1998-09-01'),

(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),

(7,'张学右',22,'女','香港',99,99,'1998-09-01'),

(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');

-- 查询所有数据

SELECT * FROM stu;

基础查询

-- 基础查询

-- 查询name age 两列

SELECT name,age FROM stu;

-- 查询所有列的数据,列名可以使用*代替,不要使用

SELECT * FROM stu;

-- 查询地址信息

SELECT address from stu;

-- 去除重复记录

SELECT DISTINCT address from stu;

-- 查询姓名,数学成绩,英语成绩

-- SELECT NAME,math,english FROM stu;

SELECT NAME,math as 数学成绩,english AS 英语成绩 FROM stu;-- AS可以省略

SELECT * FROM stu;

条件查询

-- 条件查询

-- 1.查询年龄大于20岁的学员信息

select * from stu where age > 20;

-- 2.查询年龄大于等于20岁的学员信息

select * from stu where age >= 20;

-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息

select * from stu where age >= 20 && age <= 30;

select * from stu where age >= 20 and age <= 30;-- 建议使用and

select * from stu where age BETWEEN 20 and 30;

-- 4.查询入学日期在'1998-09-01' 到 '1999-09-01' 之间的学员信息

select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';

-- 5. 查询年龄等于18岁的学员信息

select * from stu where age = 18;

-- 6. 查询年龄不等于18岁的学员信息

select * from stu where age != 18;

select * from stu where age <> 18;

-- 7. 查询年龄等于18岁 或者 年龄等于20岁 或者 年龄等于22岁的学员信息

select * from stu where age = 18 or age = 20 or age = 22;

select * from stu where age in (18,20 ,22);-- 在集合中任意一个就可以

-- 8. 查询英语成绩为 null的学员信息

-- 注意: null值的比较不能使用 = 或 != 。需要使用 is 或 is not

select * from stu where english = null; -- 不行的

select * from stu where english is null;

select * from stu where english is not null;

-- 模糊查询 like =====================

/*

通配符:

(1)_:代表单个任意字符

(2)%:代表任意个数字符

*/

-- 1. 查询姓'马'的学员信息

select * from stu where name like '马%';

-- 2. 查询第二个字是'花'的学员信息

select * from stu where name like '_花%';

-- 3. 查询名字中包含 '德' 的学员信息

select * from stu where name like '%德%';

聚合函数

聚合函数

将一列数据作为一个整体,进行纵向计算

分类:

count() 统计数量(一般选用不为null的列)

取值:

1. 主键

2. *

max() 最大值

min() 最小值

sum() 求和

avg() 平均值

聚合函数语法

select 聚合函数名(列名) from 表

注意:null值不参与所有聚合函数的运算

分组查询

语法:

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]…;

注意:

分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where和having区别:

- 执行时机不同:where是分组之前进行限定,不满足where条件,不参与分组,having是分组之后对结果进行过滤

- 可判断的条件不同:where不能对聚合函数进行判断,having可以

执行顺序:where > 聚合函数 > having

/*

分组函数

SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]…;

*/

select * from stu ;

-- 1. 查询男同学和女同学各自的数学平均分

select sex, avg(math) from stu group by sex;

-- 注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

select name, sex, avg(math) from stu group by sex;

-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数

select sex, avg(math),count(*) from stu group by sex;

-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组

select sex, avg(math),count(*) from stu where math > 70 group by sex;

-- 4.查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。

select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;

排序查询

/*

排序查询:

* 语法:SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;

* 排序方式:

* ASC:升序排列(默认值)

* DESC:降序排列

*/

-- 1.查询学生信息,按照年龄升序排列

select * from stu order by age ASC;

-- 2.查询学生信息,按照数学成绩降序排列

select * from stu order by math DESC;

-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列

-- 注意:如果有多个排序条件,当前面条件一样时,才会根据第二个条件进行排序

select * from stu order by math DESC , english ASC;

分页查询

分页查询语法:

SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数

* 起始索引:从0开始

计算公式:

起始索引 = (当前页码 - 1) * 每页显示的条数

tips:

- 分页查询limit 是MySQL数据库的方言

- Oracle 分页查询使用 rownumber

- SQL Server 分页查询使用 top

/*

分页查询:

SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数

* 起始索引:从0开始

*/

select * from stu ;

-- 1. 从0开始查询,查询3条数据

select * from stu limit 0 , 3;

-- 2. 每页显示3条数据,查询第1页数据

select * from stu limit 0 , 3;

-- 3. 每页显示3条数据,查询第2页数据

select * from stu limit 3 , 3;

-- 4. 每页显示3条数据,查询第3页数据

select * from stu limit 6 , 3;

-- 起始索引 = (当前页码 - 1) * 每页显示的条数

精彩文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: