数据库基础总结 || 二 ||

数据库查询

准备数据

CREATE TABLE stu (
	id INT,
	NAME VARCHAR(20),
	age INT,
	sex VARCHAR(5),
	address VARCHAR(100),
	math INT,
	english INT
);

INSERT INTO stu VALUES
(1,'张三',55,'男','杭州',66,78),
(2,'张思',45,'女','深圳',98,87),
(3,'张亮',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘亮华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99),
(8,'亮亮 ',18,'男','南京',56,65);

比较运算符

< 小于
<= 小于等于
>= 大于等于
= 等于
<> != 不等于
> 大于

-- 查询math分数大于80分的学生
SELECT * FROM stu WHERE math>80;
-- 查询english分数小于或等于80分的学生
SELECT * FROM stu WHERE english<=80;
-- 查询age等于20岁的学生
select * from stu where age=20;
-- 查询age不等于20岁的学生
SELECT * FROM stu WHERE age!=20;
SELECT * FROM stu WHERE age<>20;

逻辑运算符

​ and(&&) 多个条件同时满足
​ or(||) 多个条件其中一个满足
​ not(!) 不满足

# 逻辑运算符
-- 查询age大于35且性别为男的学生(两个条件同时满足)
SELECT * FROM stu WHERE age>35 AND sex="男";
-- 查询age大于35或性别为男的学生(两个条件其中一个满足)
select * from stu where age>35 or sex='男';
-- 查询id是1或3或5的学生
SELECT * FROM stu WHERE id=1 OR id=3 OR id=5;
-- 查询id是1或3或5的学生
SELECT * FROM stu WHERE id IN(1,3,5);

范围查询

​ select * from 表名 where 字段 between 值1 and 值2 ;

# 范围
-- 查询english成绩大于等于75,且小于等于90的学生
SELECT * FROM stu WHERE english>=75 AND english<=90;
select * from stu from where english between 75 and 90;

模糊查询

格式: select * from 表名 where 字段 like 条件;
条件格式:
	% : 模糊匹配所有
    _ : 模糊匹配1位
    // 匹配名称中包含张字的
    select * from 表名 where name like "%张%";
	// 匹配名称中以张字开头的
	select * from 表名 where name like "张%";
	// 匹配名称中以张字结尾的
	select * from 表名 where name like "%张";
	// 匹配名称为2个字且以张字开头的
	select * from 表名 where name like "张_";
	// 匹配名称为3个字的
	select * from 表名 where name like "___";

排序

格式:
	select * from 表名 where 条件 order by 字段名称 [desc|asc], 字段名 [desc | asc]... ;
	asc(默认) : 升序   
	desc : 降序
-- 查询所有数据,使用年龄降序排序
SELECT * FROM stu ORDER BY age DESC;
-- 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序
SELECT * FROM stu ORDER BY age DESC,math DESC;

聚合函数

select 聚合函数 from 表名;
	count() : 计数
		IFNULL(english,0)
	sum() : 求和
	max() : 求最大值
	min() : 求最小值
	avg() : 求平均值
		扩展-保留小数位
		cast(被处理的数据 as decimal(5,2))
注意事项:
	聚合函数对空值不起作用
	使用在select后,或having后面
	聚合函数返回一个结果
	-- 查询学生总数
		SELECT COUNT(*) FROM stu;
		SELECT COUNT(IFNULL(english,0)) FROM stu;
	-- 查询年龄大于40的总数
		SELECT COUNT(*) FROM stu WHERE age>40;
	-- 查询数学成绩总分
		SELECT SUM(math) FROM stu;
	-- 查询数学成绩平均分
		SELECT AVG(math) FROM stu;
		SELECT CAST(AVG(math) AS DECIMAL(5,2)) FROM stu;
	-- 查询数学成绩最高分
		SELECT MAX(math) FROM stu;
	-- 查询数学成绩最低分
		SELECT MIN(math) FROM stu;

分组

格式:
	select * from 表名 where 条件  group by 分组字段 [having 分组条件 ]  ;
	group by 分组字段 [having 条件]
	
having与where的区别  ★
	where是在分组前对数据进行过滤
	having是在分组后对数据进行过滤.
	where后面不可以使用聚合函数
	having后面可以使用聚合函数
-- 按性别分组
	SELECT sex FROM stu GROUP BY sex;
-- 查询男女各多少人
	SELECT sex,COUNT(*) FROM stu GROUP BY sex;
-- 查询年龄大于25岁的人,按性别分组,统计每组的人数
	SELECT sex,COUNT(*) FROM stu WHERE age>25 GROUP BY sex ;

分页

分页: 提高用户体验度,增强服务器的响应效率
分页关键字: limit
格式:
select * from 表名 limit 起始索引,每页显示条数;
select * from 表名 limit 开始的索引,从开始索引向后数多少条 ;
必须条件: (离开这些条件完成不了分页查询)
起始索引(开始的索引) = (当前页页码-1)*每页显示条数;
每页显示条数: 从开始索引向后数多少条
已知条件:
当前页的页码:
每页显示条数: 3
注意事项:
开始索引可以省去不写,如果不写默认从0开始.

-- 查询学生表中数据,从第三条开始显示,显示6条
SELECT * FROM stu LIMIT 2,6;

主键约束 primary key

用来标注一条记录的唯一性

特征:

​ 主键字段值唯一(唯一不可重复)
​ 主键列不能包含NULL值
​ 一个表中只能有一个主键,但主键可以是多个字段 (联合主键)

格式:单一主键
		create table 表名(
				字段名称1 字段类型 字段约束区,
				字段名称2 字段类型 字段约束区
		);
		格式2:联合主键
			create table 表名(
				字段名称1 字段类型,
				primary kay(字段名称 ,字段名称1)
		);
在已有表中添加主键(扩展)
		alter table 表名 add primary key(字段名称);

删除主键

​ alert table 表名 drop PRIMARY KEY;

主键自增

​ auto_increment
​ 默认地AUTO_INCREMENT 的开始值是1,如果要从指定的值开始增长可以修改起始值,请使用下列SQL语法(不用给值,每次自动增加)

唯一约束: unique

特征

​ 被修饰的字段唯一,不可重复
​ 注意: 一个表中可以有多个被unique修饰的字段,但对null不起作用

实现方式
创建表时在字段后添加 
		create table 表名 ( 
    		字段名称1 字段类型 约束, 
    		字段名称2 字段类型 约束 
    	);

非空约束:not null

特征:
被修饰的字段不可为空
实现方式:

​ 直接在字段后面添加即可

删除: 修改字段删除约束

​ alter table 表名 change 旧字段名称 新字段名称 类型 约束;

default : 默认值约束

​ 当不为该字段设置信息时,使用默认值

foreign key : 外键

添加外键

​ 方式1: 创建表时添加

​	CREATE TABLE orders2 (
​		id INT PRIMARY KEY AUTO_INCREMENT,
​		price DOUBLE(5,2),
​		user_id INT,
​		FOREIGN KEY (外键名称) REFERENCES 主表名称(关联的字段)
​	);	

​ 方式2: 创建完表后通过修改表添加

在从表中添加外键字段
​			alter table 从表 add 外键名称 数据类型;
​		给从表的外键字段添加外键约束
​			alter table 从表名 add [constraint 名称] foreign key(外键字段) references 主表名称(主键);

删除外键

ALTER TABLE 从表 drop foreign key 外键名称;

每天积累一点点,加油!!! 一个小白正在努力成长中…

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值