MySQL
1.初识MySQL
javaEE:企业级Java开发, Web
前端(页面:展示,数据!)
后台(连接点: 连接数据库JDBC, 链接前端(控制,控制视图跳转,和给前端传递数据))
数据库(存数据,Txt,Excel、word)
只会写代码,学好数据库,基本混饭吃
操作系统,数据结构与算法!当一个不错的程序猿!
离散数学,数字电路,体系结构,编译原理+实战经验,高级程序员——优秀的程序员
1.1为什么学习数据库
- 岗位需求
- 现在的世界,大数据时代,得数据库者得天下
- 被迫需求:存数据
- 数据库是所有软件体系中最核心的存在 DBA
1.2什么是数据库
数据库(DB, DataBase)
概念:数据仓库,软件,安装在操作系统(window,linux,mac....)之上!SQL,可以存储大量的数据
作用:存储数据,管理数据
1.3数据库分类
关系型数据库:(SQL)
- Mysql、Oracle、Sql Server, DB2, SQLite
- 通过表和表之间,行和列之间的关系进行数据的存储,学员信息表,考勤表...
非关系型数据库:{key:value} (NoSQL)(not only SQL)
- Redis\ MongDB
- 非关系型数据库,对象存储,通过对象得自身属性来决定。
DBMS(数据库管理)
- 数据库管理软件,科学有效的管理我们得数据,维护和过去数据;
- MySQL数据库管理系统
1.4MySQL简介
MySQL是一个关系型数据库管理系统
前世:瑞典MySQL AB公
今生:属于Oracle旗下产品
MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
体积小,速度快、总体拥有成本低,招人成本比较低,所有人必须会~
中小型网站、或者大型网站、集群
安装建议:
- 尽量不要使用exe,注册表
- 尽可能使用压缩包安装
1.4连接数据库
命令行连接!
DDL:数据库定义语言
DML:数据库操作语言
DQL:数据库查询语言
DCL:数据库控制语言
2.操作数据库
操作数据库>操作数据库中的表>操作数据库表中得数据
2.1操作数据库
学习思路:
- 对照MySQL可视化软件历史记录查看mysql
- 固定的语法和关键字必须记住
2.2数据库的列类型
-
数值
-
tinyint 是分销的数据 1个字节
-
smallint 较小的数据 2个字节
-
mediumint 中等大小的数据 3个字节
-
int 标准的整数 4个字节
-
bigint 较大的数据 8个字节
-
float 浮点数 4个字节
-
double 浮点数 8个字节(精度问题!)
-
decimal 字符串形式的浮点数 金融计算的时候,一般使用decimal
-
-
字符串
-
char 字符串固定大小的 0~255
-
varchar 可变字符串 0~65535 常用的 String
-
tinytext 微型文本 2^8-1
-
text 文本串 2^16-1
-
-
时间日期
- date YYYY-MM--DD 日期格式
- time HH:mm:ss 时间格式
- datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
- timestamp 时间戳 1970.1.1到现在的毫秒数!! 较为常用
- year 年份表示
-
null
- 没有值,未知
- ==注意,不要使用NULL进行运算,结果为NULL
2.3数据库的字段属性(重点)
- Unsigned
- 无符号的整数
- 声明了该类不能声明为负数
- zerofill
- 0填充的
- 不足的位数,使用0来填充
- 自增
- 通常理解为自增,自动在上一条记录的基础上+1(默认)
- 通常用来设计唯一的逐渐~index,必须是整数类型
- 可以自定义主键自增的起始值和步长
- 非空 Null not null
- 假设设置为not null,如果不给它赋值,就会报错!
- NUll,如果不填写值,默认就是null
- 默认
- 设置默认的值!
- sex 默认值为男
2.4创建数据库
- 创建表
CREATE TABLE IF NOT EXISTS `student` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL comment '邮箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
格式
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名` 列表型 [属性] [索引] [注释],
`字段名` 列表型 [属性] [索引] [注释],
......
`字段名` 列表型 [属性] [索引] [注释],
)[表类型][字符集设置][注释]
2.5数据表的类型
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用的
*/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
常规使用操作:
- MYISAM 节约空间,速度较快
- INNODB 安全性高,事物的处理,多表多用户操作
2.6修改删除表
修改
注意点:
- ``所有的字段名,使用这个包裹!
- 注释 -- /**/
- sql 关键字大小写不敏感,建议写小写
- 所有的符号用中文
3.MySQL数据管理
3.1外键(了解即可)
删除有外键关系的表的时候,必须要先删除引用别人的表(从表),再删除被引用的表(主表)
以上的操作都是物理外键,数据库级别的外键,不建议使用(避免数据库过多造成困扰)
最佳实践:
- 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)
- 我们想使用多张表的数据,想使用外键(程序去实现)
3.2DML语言(全部记住)
数据库意义:数据存储 数据管理
DML语言:数据操作语言
- insert
- update
- delete
3.3添加
3.4修改
条件:where子句运算符 id等于某个值,大于某个值,在某个区间内修改,操作符会返回布尔值
操作符 | 含义 | 范围 | 结果 |
---|---|---|---|
= | 等于 | 5=6 | false |
<>或!= | 不等于 | 5<>6 | true |
> | |||
< | |||
<= | |||
>= | |||
BETWEEN...and | 在某个范围内 | [2,5] | |
AND | 我和你&& | 5>1 and1>2 | false |
OR | 我或你|| |
3.5删除
了解即可:DELETE删除的问题,重启数据库,现象
- innodb 自增列从1开始(存在内存中的,断电即失)
- MyISAM 继续从上一个子增量开始(存在文件中的,不会丢失)
4.DQL查询数据(最重点)
4.1DQL
(Data Query LANGUAGE:数据查询语言)
- 所有的查询操作都用它 Select
- 简单的查询,复杂的查询它都能做
- 数据库中最核心的语言,最重要的语句
- 使用频率最高的语句
4.2指定查询字段SELECT
语法:SELECT 字段....FROM 表
有时候,列名字不是那么见名知意,我们起别名 AS 字段名 as 别名 表名 as 别名
数据库中的表达式:文本值,列,Null,函数,计算表达式,系统变量....
select 表达式 from 表
4.3where条件语句
作用:检索数据中符合条件的值
4.4联表查询
join