一 数据库
1 Java的数据存储技术
① 变量:一个数据存储空间的表示
② 数组:存储一组相同数据类型的"容器"
③ 集合:存储一组任意引用数据类型的"容器"
④ 配置文件:
.properties:基于Properties集合存储(Map集合的具体实例)
.xml文件:基于标签存储数据
⑤ Optional对象:存一个元素或0个元素
以上存储数据的技术(由JAVA语言提供),只适用于数据量较小的存储,对于大量的数据操作,性能低下,因此需要数据库。
2 Mysql概述
核心功能为数据管理,管理方法主要有,创建(添加),读取(查询),修改, 删除
存 : 增删改
取:查(查所有+查指定一个+查满足指定条件的多个)
3 名词解释
DB – 数据库:DataBase
DBMS – 数据库管理系统:DataBase Manager System
DBAS – 数据库应用系统:DataBase Application System
4 数据库分类
关系型数据库 – Oracle,MySql等等
非关系型数据库 – Redis,Mongodb等等
5 存储引擎–影响数据库存储性能
常见的存储引擎 | 优势 | 不足 |
---|---|---|
MyISAM | 查询速度较快 | 不支持事务和外键 |
InnoDB | 支持事务和外键 | 查询速度稍慢 |
二 SQL 语句
1 语句分类
① DQL 语言:数据查询语言,主要操作表中的数据
// SQL语句中唯一一个不需要操作权限就能执行的语句
SELECT
② DML语句:数据操作语言,主要操作表中的数据
// 插入
INSERT INTO ... VALUES ...
// 修改
UPDATE ... set ...
// 删除
DELETE FROM ...
③ DDL语句:数据定义语言,主要操作的是表
// 创建表
CREATE TABLE
// 删除(销毁)表
DROP
// 修改表结构
ALTER
④ TCL语句:事务控制语言
⑤ CCL语句:指针控制语言(接触不多)
2 书写规范
① SQL语句忽略大小写;但开发中建议是数据库操作的关键字全部大写
② 每一条SQL语句都需要使用;(分号)结束
三 表
1 表成员
表名:表示当前表中存储什么类型的数据,列个数固定,行个数不固定
列:纵向,表示当前列存储的数据是什么,同一列的数据类型与含义一致
行:横向,表示一组数据,指向同一事物
ORM关系 – 对象映射关系
2 数据库中表JavaBean的对应关系
表 | JavaBean |
---|---|
表名t_employee | 类名Employee |
列名 | 字段名 |
行 | 当前类的一个具体对象 |
列名 | 字段名 |
① 类名是表名去掉t_,单词首字母大写
② 表中列名与类中字段要一致
四 安装Mysql
1 下载zip后解压改名只留版本号
2 于mysql-8.0.28文件夹中新建my.ini,输入以下内容,确定数据目录与端口号,若MySql服务无响应可将最后一句去除,或者完成密码设置后注释掉,其作用为跳过密码
[mysqld]
#端口号
port = 3306
#mysql-8.0.28路径
basedir=D:\\soft\mysql-8.0.28
#mysql-8.0.28\data路径
datadir=D:\\soft\\mysql-8.0.28\\data
#最大连接数
max_connections=200
#编码集
character-set-server=utf8
#默认引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
#编码集
default-character-set=utf8
3 配置环境变量,将bin文件夹路径输入path
D:\soft\mysql-8.0.28\bin
4 管理员身份启动cmd进入目录
// 进入目录
cd /d D:\soft\mysql-8.0.28\bin
// 安装服务
mysqld -install
// 初始化数据文件,启动mysql服务
mysqld --initialize-insecure --user=mysql
// 启动
net start mysql
5 此时 Bin中会多出data文件夹,没生成自己建一个
6 进入数据库,此时无密码直接回车进入mysql
// 无密码进入数据库
mysql -u root -p
7 进入界面后更新密码
// 更新密码
ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘root’;
// 5.7版本用这句
alter user 'root'@'localhost' identified by 'root';
8 刷新权限
// 刷新权限
flush privileges;
9 停止服务
net stop mysql;
10 输入密码登陆mysql
mysql -u root -proot
Mysql数据都在data文件夹中,历史记录中有对应操作
五 常用命令
1 登录命令
mysql -u用户名 -p密码 [-hIP地址 -P端口号]
2 展示当前连接下所有数据库
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
4 rows 数据库个数
in set 将操作结果存放在set集合中,结果无序且唯一
0.01 sec 是执行操作的时长
3 使用指定数据库
mysql> USE SYS;
Database changed
4 展示当前数据库下所有表
mysql> SHOW TABLES;
+-----------------+
| Tables_in_sys |
+-----------------+
| host_summary |
......
+-----------------+
101 rows in set (0.06 sec)
5 创建一张表
mysql> CREATE TABLE t_employee(id INT);
Query OK, 0 rows affected (0.59 sec)
affected 受影响的数据
6 删除指定表
mysql> DROP TABLE t_employee;
Query OK, 0 rows affected (0.51 sec)
7 查询表设计结构
mysql> DESC employee;
+----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| password | varchar(255) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| admin | bit(1) | YES | | NULL | |
| dept_id | bigint(20) | YES | | NULL | |
+----------+--------------+------+-----+---------+----------------+
7 rows in set (0.02 sec)
多用导入其他人定义的表
Field:表中的字段
Type:指定字段对应的数据类型
Null:当前字段的值是否允许为空
Key:当前字段的约束(规定当前字段存储数据的特点)
Default:默认值,MySQL中任意一种数据类型的默认值都是NULL
Extra:备注,一般显示的是指定数据库的方言约束
六 数据类型
1 常用类型 – 数值型
①整数型:INT/BIGINT , 其中的(n)表示该数据最大位数,一般没有特殊要求不写
②小数型:DOUBLE/DECIMAL
DOUBLE(m,n):一般是应用在除了金钱以外的字段,其中m表示数据总位数,n表示小数部分有几位
DECIMAL:一般应用在金钱上
2 常用类型 – 字符型
①MySQL中没有单个字符类型,都是字符串类型;因此值既可以定义在""中也可以定义在’';在Java中统一使用String类型接收
②CHAR(n):MySQL服务会按照n的个数进行存储
③VARCHAR(n):MySQL服务会按照实际的存储个数进行数据存储(实际上还有一位标识位)
3 常用类型 – 日期型
①MySQL数据库中的日期类型数据值必须定义在引号中
②DATE:操作年月日
③DATETIME:操作年月日时分秒
④TIMESTEMP:时间戳,以毫秒的形式显示,距1970.1.1 00:00至今的时长
4 与Java数据类型的对应
Mysql | Java |
---|---|
INT(n) | Integer/int |
BIGINT(n) | Long/long |
DOUBLE(m,n) | Double/double |
DECIMAL | BigDecimal |
CHAR(n) | String |
VARCHAR(n) | StringBuffer/StringBuilder |
TEXT | String |
DATE | java.util.Date |
DATETIME | java.util.Date |
TIMESTEMP | java.util.Calendar |