Java Web: SQL语言详解及实例

SQL语言

在学习SQL之前,默认大家已经安装且配置好了MySQl(这里不做介绍)。
那么我们先来复习一下:
在这里插入图片描述
​在了解完SQL的分类:DDL、DML、DQL、DCL之后,这里详细介绍一下前3种SQL语言(DCL我暂时还没学,就不介绍了)。

1.DDL——操作数据库

在这里插入图片描述
DDL操作数据库的语法还是比较简单的,这里我们只说几点对于像我一样的初学者需要注意的注意事项
1.在对数据库操作时,看仔细到底是databases还是database。这在我们学的前期能帮我们减少一些报错。
2.在创建和删除表时,尽量使用 if (not) exists 判断,同样能减少一些报错。

2.DDL——操作表

2.1 查询表

在这里插入图片描述

2.2 创建表

在这里插入图片描述

补充:数据类型

在这里插入图片描述
注意事项:
1.与java不同的时,mysql声明变量数据类型时是变量名在前,数据类型在后
2.double类型:后面一般跟两个参数(1是总长度,2是小数点后保留的位数)
3.日期date类型:格式是: ‘xxxx-xx-xx’ 。引号要注意不能丢!!!
4.char(10)和varchar(10)的区别:char是只要你存入字符串,就一定会占据你规定的所有空间,如这里的10;varchar只会占用你存入的字符串的对应空间。如下:
在这里插入图片描述

2.3 修改表

在这里插入图片描述
注意
在添加一列之后,会默认有值并且都是null。如果想要在已有其它数据的几行为该列添加想要的数据,就只能去修改null,而不是去添加。否则会创建新的行并且添加。

2.4 删除表

在这里插入图片描述

3.DML——操作表中数据

3.1 添加数据

在这里插入图片描述
这里已经创建了stu表:
在这里插入图片描述
添加数据:

-- 查询所有数据
SELECt * FROM stu;
-- 给指定列添加数据
INSERT INTO stu ( id, NAME, gendar )
VALUES
	( 1, '张三', '男' );
-- 给所有列添加数据,此时列名的列表可省略																							日期数据要加引号
INSERT INTO stu ( id, NAME, gendar, birthday, score, email, tel, STATUS )
VALUES
	( 2, '李四', '男', '2005-04-22', 88.88, '@qq.com', 13188886666, 1 );
INSERT INTO stu
VALUES
	( 2,'李四', '男', '2005-04-22', 88.88, '@qq.com', 13188886666, 1 ),
	( 2, '李四', '男', '2005-04-22', 88.88, '@qq.com', 13188886666, 1 );
-- 可以多写几个括号,中间用逗号隔开

在这里插入图片描述

3.2 修改数据

在这里插入图片描述
修改数据:

update stu set gendar ='女' where name="张三";
-- 将张三的性别改为女
UPDATE stu Set birthday='2001-11-11',score=99.99 where name='张三';

在这里插入图片描述

3.3 删除数据

在这里插入图片描述

4.DQL——查询表中数据

先看一下DQL大家族:
在这里插入图片描述
我们这里已经创建了这么一张表,接下来的查询操作都是对该表进行的:
查询专用表

4.1 基础查询

在这里插入图片描述

-- 查询所有列的数据,列名的列表可以用*替代。不建议使用,不够清晰
SELECT
	* 
FROM
	men;
-- 查询 id,name两列
SELECT
	id,
NAME 
FROM
	men;
-- distinct 去重复
SELECT DISTINCT
	address 
FROM
	men;
-- as 化名(as 可省略,但是必须空一格)
SELECT NAME
	,
	math AS 数学成绩,
	English 英语成绩 
FROM
	men;
DELETE 
FROM
	men;`在这里插入代码片`

4.2 条件查询

在这里插入图片描述

ELECT
	* 
FROM
	men;
-- 不建议使用JAVA的双与和双或
SELECT
	* 
FROM
	men 
WHERE
	math >= 60 
	AND math <= 80;
SELECT
	* 
FROM
	men 
WHERE
	math BETWEEN 60 
	AND 80;
-- 日期时间也可以用between...and;
SELECT
	* 
FROM
	men 
WHERE
	birthday BETWEEN '1990-01-01' 
	AND '2000-01-01';
SELECT
	* 
FROM
	men 
WHERE
	English = 80;
-- 一个等号判断是否相等
SELECT
	* 
FROM
	men 
WHERE
	English != 80;
-- <>表示不等于
SELECT
	* 
FROM
	men 
WHERE
	English <> 80;
-- or /in(特值) 用来判断或语句
SELECT
	* 
FROM
	men 
WHERE
	math IN ( 66, 78 );
-- 查询是否为null用 is 和 is not;
-- ===================模糊查询======================
SELECT
	* 
FROM
	men 
WHERE
	NAME LIKE '马%';
-- 第一个字是马
SELECT
	* 
FROM
	men 
WHERE
	NAME LIKE '_花%';
-- 第二个字是花
SELECT
	* 
FROM
	men 
WHERE
	NAME LIKE '%马%';
-- 包含马

4.3 排序查询

在这里插入图片描述

SELECT
	* 
FROM
	men;
-- 先按数学成绩降序排列,如果数学成绩一样,则按英语升序排列(不写默认升序)
SELECT
	* 
FROM
	men 
ORDER BY
	math DESC,
	English ASC;

4.4 分组查询

补充:聚合函数

在这里插入图片描述
分组查询
在这里插入图片描述

SELECT
	sex,
	avg( math ) -- 查询男女同学的数学平均分
	
FROM
	men 
GROUP BY
	sex;
SELECT NAME -- 分组之后,查询的字段为聚合函数和分组字段,查询其他字段无意义,如这里的name
	,
	sex,
	avg( math ) 
FROM
	men 
GROUP BY
	sex;
SELECT
	sex,
	avg( math ),
	count( * ) -- 查询男女同学的数学平均分,及各自人数
FROM
	men 
GROUP BY
	sex;
SELECT
	sex,
	avg( math ),
	count( * ) 
FROM
	men 
WHERE
	math > 30 -- 查询男女同学的数学平均分(数学>30才能参与分组),及各自人数
GROUP BY
	sex;
SELECT
	sex,
	avg( math ),
	count( * ) 
FROM
	men 
WHERE
	math > 30 GROUP sex 
HAVING
count( * ) > 1;-- 查询男女同学的数学平均分(数学>30才能参与分组),及各自人数,并且只留下人数>1的一组

4.5 分页查询

在这里插入图片描述

SELECT
	* 
FROM
	men;
SELECT
	* 
FROM
	men 
	LIMIT 0,-- 从索引为0的位置开始查询,查询3条数据
	3;
SELECT
	* 
FROM
	men 
	LIMIT 0,-- 每页显示两条数据,查询第1页
	2;
SELECT
	* 
FROM
	men 
	LIMIT 2,-- 每页显示两条数据,查询第2页
	2;
SELECT
	* 
FROM
	men 
	LIMIT 4,-- 每页显示两条数据,查询第3页
	2;
--  开始索引=(页数-1) * 每页显示的条数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值