MySQL基础
数据库概念
数据库
按照数据结构来组织、存储和管理数据的仓库.保存有组织的数据的容器(通常是一个文件或一组文件),简称DB。
数据库管理系统
① 专门用于管理数据库的计算机系统软件;
② 能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并对数据完整性、安全性进行控制;
③ 我们一般说的数据库,就是指的DBMS;
数据库发展
关系数据库技术阶段:
经典的里程碑阶段。代表DBMS:Oracle、DB2、MySQL、SQL Server、SyBase等
关系型数据库存在数据模型,性能,拓展伸缩性的缺点,出现了:
ORDBMS:面向对象数据库技术。
NoSQL :结构化数据库技术,非关系型数据库。
MySQL数据库安装
-
安装:新建一个空白文件夹,文件夹路径不要有中文 ,文件夹名称不要有特殊字符
-
验证是否安装成功:
cmd 输入mysql -uroot -p密码(条件:①启动服务 ②配置了环境变量) -
通过命令启动mysql服务:
以管理员身份运行cmd
停止服务 net stop 服务名称
启动服务 net start 服务名称 -
命令:
查看所有数据库:show databases;
使用某个数据库: use 数据库名;
查看数据库中所有的表: show tables;
退出:exit或者ctrl+c; -
常用类型
常用的类型匹配
java 数据库(mysql)
int Integer int
long bigint
float float
double double
String char varchar text longtext
Date datetime
boolean bit
表
表的特点和常用术语
表具有固定的列和不定的行,在数学上称为”关系”;
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录;表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列、字段
表的约束
用来约束表的字段或者表的结构
-
主键约束 非空且唯一 对每一行记录的唯一标识
-
外键约束 相当于是另一张表的主键 ,用来两张表做关联
-
非空约束 不能为空
-
唯一约束 不能重复
表的查询
语法:
语法:
SELECT {*, column [alias],...}
FROM table_name;
说明:
SELECT 选择查询列表
FROM 提供数据源(表、视图或其他的数据源)
如果为 * 和创建表时的顺序一致。匹配所有的字段
可以自己调整顺序,在select后边加上要查询的列名。
select 列名 from 表名 (*代表所有表)
去重 distinct
数学运算 + - * / ()会提高优先级
逻辑运算 not and or
concat 连接
比较运算 < > =… !=(<>)
别名 as 。。。别名 as可以省略
过滤查询
语法
SELECT <selectList>
FROM table_name
WHERE 条件1 AND/OR 条件2;
范围查询
语法
SELECT <selectList>
FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。
集合查询
使用IN运算符,判断列的值是否在指定的集合中。
语法:
SELECT <selectList>
FROM table_name
WHERE 列名 IN (值1,值2....);
空值查询
IS NULL:判断列的值是否为空。
语法:
WHERE 列名 IS NULL;
注意 : 列的值是 null 和空字符串不一样,如果是空字符串 应该 = “”
模糊查询
使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%:通配符:可表示零或多个任意的字符。
_:通配符:可表示任意的一个字符。
通配符:用来实现匹配部分值得特殊字符。
结果排序
使用ORDER BY语句将结果的记录排序:
ASC : 升序,缺省–不写默认。
DESC: 降序。
ORDER BY 语句出现在SELECT语句的最后。
语法:
SELECT <selectList>
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.
分组 group by (如果和having联合使用时先分组后过滤 和where先过滤后分组)
语法格式:
SELECT 聚集函数或者分组的列
FROM table_name
WHERE 条件
GROUP BY 列名
HAVING 分组之后的条件;
注意:GROUP BY 后面的列名的值要有重复性分组才有意义;
使用HAVING字句,对分组之后的结果作筛选;
不能在 WHERE 子句中使用组函数(注意);
可以在 HAVING 子句中使用组函数;