数据库(DataBase):数据库是按照数据结构来组织、存储和管理数据的仓库。数据库管理系统(Database Management SystemDBMS):是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。
我们一般说的数据库,就是指的DBMS: 数据库服务器。数据库技术发展历程如下:
随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速,产生了一系列出色的NoSQL数据库。
常见的NoSQL数据库分为四大类
常见的关系数据库:
数据库系 | 所属公司 |
---|---|
Oracle | Oracle |
DB2 | IBM |
SQL Server | MS |
MySQL | AB–>SUN–>Oracle |
特点比较:
结构化查询语言是关系型数据库标准语言。特点:简单,灵活,功能强大。
SQL包含6个部分:
1.数据库中,SQL语句大小写不敏感
2.SQL语句可单行或多行书写
3.在SQL语句中,关键字不能跨多行或缩写
4.为了提高可读性,一般关键字大写,其他小写
5.空格和缩进使程序易读
什么是表?表是用来干嘛的?表又叫二维表(有行和列) ,用来存储数据,
表具有固定的列数和任意的行数,在数学上称为“关系”。
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为一条记录
表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列、字段。
解释表结构和面向对象的关系
能不能使用面向对象的方式来操作数据库呢?
1.启动MySQL服务:打开数据库连接之前:一定要保证MySQL服务已经开启了.在服务中找到MySQL的服务,查看是否处于正在运行的状态
在Windows中使用命令控制服务的状态(必须使用管理员身份开启命令行)
开启服务: net start 服务名 如: net start mysql
关闭服务: net stop 服务名 如: net stop mysql
2.连接MySQL数据库:
方式1:进入MySQL, 在命令行中输入密码;
方式2:在命令行中:找到安装目录下的bin录制中有个mysql的命令
格式:mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口
mysql -uroot -padmin -hlocalhost -P 3306
若连接的数据库服务器在本机上,并且端口是3306。
则可以
一般来说我们说的数据库(MySQL/Oracle等)指的都是数据库服务器(DBMS)
数据库:存储数据库对象的容器。
数据库对象:存储,管理和使用数据的不同结构形式,如:表、视图、存储过程、函数、触发器、事件等。
数据库分两种:
- 系统数据库(系统自带的数据库):不能修改
information_schema:存储数据库对象信息,如:用户表信息,列信息,权限,字符,分区等信息
performance_schema:存储数据库服务器性能参数信息。
mysql:存储数据库用户权限信息。
sys:系统配置信息。
最常用的整数类型:
MySQL列类型 | Java数据类型 |
---|---|
INT | int/Integer |
BIGINT | long/Long |
MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。一般不用指定位宽。
FLOAT[(s,p)] :
DOUBLE[(s,p)] : 小数类型,可存放实型和整型 ,精度(p)和范围(s)
money double(5,2): 整数和小数一共占5位.其中小数占2位.
都不够精确。
定点数据类型: DECIMAL,高精度类型,金额货币优先选择。
MySQL列类型 | Java数据类型 |
---|---|
FLOAT | float/Float |
DOUBLE | double/Double |
DECIMAL(s,p) | BigDecimal |
char(size) 定长字符,0 - 255字节,size指N个字符数,若插入字符数超过设定长度,会被截取并警告。
varchar(size) 变长字符,0 - 255字节,从MySQL5开始支持65535个字节,若插入字符数超过设定长度,会被截取并警告。
一般存储大量的字符串,比如文章的纯文本,可以选用TEXT系列类型,这个系列都是变长的。
注意:在MySQL中,字符类型必须指定长度,值要使用单引号引起来。 相当于Java中字符串(String,StringBuilder/StringBuffer);
对比char(4)和varchar(4)占用空间的问题?
日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
注意:在MySQL中,日期时间值使用单引号引起来。 相当于Java中Date,Calender。
存放图形、声音和影像,二进制对象,0-4GB。
开发中,我们一般存储二进制文件保存路径。
BIT:我们一般存储0或1,存储是Java中的boolean/Boolean类型的值。
其他的大二进制类型,开发中一般都不用
步骤:
1. 先进入某一个数据库
2. 输入建表的命令
CREATE TABLE 表名(
列名1 列的类型 [约束],
列名2 列的类型 [约束],
....
列名N 列的类型 [约束]
);
注意:最后一行没有逗号
使用使用标识符时不要用SQL的关键字,如果用到的话怎么办呢?比如新建一张订单表(order),但是order是数据库中的关键字(排序使用).
主键设计:
1:单列主键,单列作为主键,建议使用。
复合主键,使用多列充当主键,不建议。
2:主键分为两种:
1)自然主键:使用有业务含义的列作为主键(不推荐使用);
2)代理主键:使用没有业务含义的列作为主键(推荐使用);
语法:
SELECT {*, column [alias],...}
FROM table_name;
说明:
SELECT 选择查询列表
FROM 提供数据源(表、视图或其他的数据源)
如果为 * 和创建表时的顺序一致。
可以自己调整顺序,在select后边加上要查询的列名。
消除结果中重复的数据。
需求:查询商品的分类编号。
语法:
SELECT DISTINCT 列名,...
FROM table_name;
对NUMBER型数据可以使用算数操作符创建表达式(+ - * /)
对DATE型数据可以使用部分算数操作符创建表达式 (+ -)
运算符优先级:
1、乘法和除法的优先级高于加法和减法
2、同级运算的顺序是从左到右
3、表达式中使用"括号"可强行改变优先级的运算顺序
设置列名的别名。
1、改变列的标题头;
2、用于表示计算结果的含义;
3、作为列的别名;
4、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加双引号;
比较运算符 含义
= 等于
> 大于
>= 大于或等于
< 小于
<= 小于或等于
!=(<>) 不等于
注意:字符串和日期要用单引号扩起来.
要让MySQL查询区分大小写,可以:
SELECT * FROM table_name WHERE BINARY productName='g9x'
SELECT * FROM table_name WHERE BINARY productName='G9X'
逻辑运算符 含义
AND(&&) 如果组合的条件都是TRUE,返回TRUE
OR(||) 如果组合的条件之一是TRUE,返回TRUE
NOT(!) 如果下面的条件是FALSE,返回TRUE
运算优先级 运算符
1 所有比较运算符
2 NOT
3 AND
4 OR
注意:括号将跨越所有优先级规则
分析SQL:SELECT * FROM product WHERE (NOT productName LIKE '%M%' AND salePrice > 100) OR (dir_id = 2)
使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。
格式:
SELECT FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。
使用IN运算符,判断列的值是否在指定的集合中。
格式: WHERE 列名 IN (值1,值2....);
IS NULL:判断列的值是否为空。
格式:WHERE 列名 IS NULL;
使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%通配符:可表示零或多个字符。
_通配符:可表示一个字符。
通配符:用来实现匹配部分值得特殊字符。
排序通过ORDER BY 实现 ASC升序 DESC降序 默认是升序
分页设计:
假分页(内存分页):所有数据已经存在内容中,只是显示部分而已,
优点:每次翻页时都从内存中取数据,翻页速度极快,简单
缺点:消耗内存大,容易内存溢出
真分页(数据库分页):每次翻页都去数据库查询数据
优点:不会造成内存溢出
缺点:翻页比较慢,复杂
此时,我们讲解MySQL特有的分页方式(LIMIT,在Oracle12C中也提供类似的语法).
设置每页最多3条记录:
语法: LIMIT ?, ?
参数1:
参数2:
第一页:
第二页:
第三页:
第四页:
第N页:
演示下公式的分页查询效果 LIMIT (currentPage-1) * pageSize, pageSize
什么是聚合函数/统计函数:
聚合函数作用于一组数据,并对一组数据返回一条记录。
COUNT:统计结果记录数
MAX: 统计计算最大值
MIN: 统计计算最小值
SUM: 统计计算求和
AVG: 统计计算平均值