Day26-MySql基础
数据库概念
概念
什么是数据库?
数据库(Database,简称DB)
是按照数据结构来组织、存储和管理数据的仓库.保存有组织的数据的容器(通常是一个文件或一组文件)
发展分类
人工管理阶段
文件系统阶段
层次数据库和网状数据库技术阶段
关系型数据库技术阶段
后关系数据库技术阶段
我们主要学习关系型数据库,常见的关系型数据库有:
Oracle、MySQL、DB2、SQL SERVER
SQL语言六大部分
一、数据查询语言(DQL)
二、数据操作语言(DML)
三、事务处理语言(TPL)
四、数据控制语言(DCL)
五、数据定义语言(DDL)
六、指针控制语言(CCL)
数据库存储引擎
MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。
InnoDB:支持事务,支持外键,支持行级锁定,性能较低。
它提供了具有提交、回滚和崩溃恢复能力的事务安全。但对比MyISAM,处理效率差,且会占用更多 的磁盘空间以保留数据和索引
表的创建
建表的语法:
CREATE TABLE 表名(
列名1 列的类型 [约束],
列名2 列的类型 [约束],
….
列名N 列的类型 约束
);
查询操作
简单查询
语法:
SELECT {*, column [alias],…}
FROM table_name;
去重操作
语法: SELECT DISTINCT 列名,..
数学运算
对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)
对DATE型数据可以使用部分算数操作符创建表达式 (+ -)设置别名
语法:select id ad ‘别名’ from test;
设置显示格式
为方便用户浏览查询的结果数据,有时需要设置显示格式,可以使用CONCAT函数来连接字符串。
SELECT CONCAT(productName,’这个是:’,salePrice) AS productSalePrice FROM product;
过滤查询
比较运算
语法
SELECT
FROM table_name
WHERE 条件1 AND/OR 条件2;逻辑运算
select id from test where id=1 AND id=2
select id from test where id=1 OR id=2
select id from test where id!=2 AND NOT id = 2;范围查询
语法:
SELECT
FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。模糊查询
使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%:通配符:可表示零或多个任意的字符。
_:通配符:可表示任意的一个字符。
通配符:用来实现匹配部分值得特殊字符。
结果排序
使用ORDER BY子句将结果的记录排序:
ASC : 升序,缺省–不写默认。
DESC: 降序。
ORDER BY 语句出现在SELECT语句的最后。
语法:
SELECT
FROM table_name
WHERE 条件
ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]…;
分页查询
语法:
SELECT * FROM table_name LIMIT ?,?;
SELECT * FROM table_name LIMIT beginIndex,pageSize;
beginIndex = (currentPage-1) * pageSize;
第一个?: 表示本页,开始索引(从0开始).
第二个?: 每页显示的条数
聚集函数
定义:聚集函数作用于一组数据,并对一组数据返回一个值。
COUNT:统计结果记录数 如果列的值为null 不会计算在内的
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值 如果列的值为null 不会计算在内的
分组查询
可以使用GROUP BY 子句将表中的数据分成若干组,再对分组之后的数据做统计计算,一般使用聚集函数才使用GROUP BY.
语法格式:
SELECT 聚集函数或者分组的列
FROM table_name
WHERE 条件
GROUP BY 列名
HAVING 分组之后的条件;
注意:GROUP BY 后面的列名的值要有重复性分组才有意义;
使用HAVING字句,对分组之后的结果作筛选;
不能在 WHERE 子句中使用组函数(注意);
可以在 HAVING 子句中使用组函数;
Demo
有以下表product
根据需求写出相应的sql语句:
1 | #需求: 查询所有货品信息 |