1.初始MySQL
JavaEE: 企业级Java开发 Web
前端(页面:展示,数据!)
后台(连接点:连接数据库JDBC,连接前端(控制,控制视图调整,以及给前端传数据)
数据库(存数据,Txt,Excel,Word)
只会写代码,学好数据库----基本混饭吃;
操作系统,数据结构与算法----还不错的程序员
离散数学,数字电路,体系结构,编译原理,实战----优秀~
1.1 为什么学数据库
1.岗位需求
2.大数据时代,数据变现
3.被迫需求:存数据 不用IOE(太贵
4.数据库是所有软件体系最核心的存在 DBA:数据库管理员
1.2 什么是数据库
数据库(DB,DataBase)
概念:数据仓库,软件,安装再操作系统(windows,linux,mac,。。。)之上,SQL,可以存储大量数据(500万)
作用:存数据,管理数据 同Excel
1.3 数据库分类
关系型数据库:行,列 Excel (SQL)
- M有SQL,Oracle,Sql Server,DB2,SQLlite
- 通过表和表直接,行和列之间的关系进行数据的存储, 学院信息表,考勤表等
非关系型数据库:{key:value} (NoSQL--Not Only SQL)
- Redis,MongDB
- 非关系型数据库,对象存储,通过对象的自身的属性来决定
DBSM(数据库管理系统)
- 数据库管理软件,科学有效地管理我们的数据。维护和获取数据
- MySQL,本质是一个数据库管理系统
1.4 MySQL
MySQL是一个关系型数据库管理系统
前世:瑞典MySQL AB 公司开发
今生:Oracle 旗下产品
MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一
开源的数据库软件
体积小、速度快、总体拥有成本低,招人成本低
大中小型网站,因为它可以做集群
1.5 安装SQLyog
1.安装
2.注册
3.打开一个数据库
4.新建一个数据库 school
右键root@localhost
每一个sqlyog的执行操作,本质就是对应了一个sql,可以再软件的理是记录中查看
5.新建一张表student
1.字段: id, name, age
6.查看表
右键打开表
添加完只后点刷新保存
1.7 连接数据库
命令行连接
mysql -uroot -p密码 --连接数据库
uodate mysql.user set authentication_string=password('123456') where user='root' and Host='localhost'; --更新密码
flush privileges; --刷新权限
----------------------------------
--所有语句都使用 ; 结尾
show database; --查看所有的数据库
mysql>use school --切换数据库 use 命令
databases changed
-------
show tables; --查看数据中的所有的表
describe student; --desc也行,显示数据库中所有表的信息
mysql>create databases westos;--创建一个数据库
exit; --退出连接
--单行注释(SQL的本来注释)
/*
SQL的多行注释
*/
改密码实际是操作的这里
CRUD 增删改查 CV程序猿 API程序猿 CRUD程序猿
DDL 数据库定义语言
DML 数据库操作语言
DQL 数据库查询语言
DCL 数据库控制语言
2.操作数据库
操作数据库>操作数据库中的表>操作数据库中表的数据
mysql不区分大小写
2.1 操作数据库(了解)
1 创建数据库
CREATE DATABASE IF NOT EXISTS westos --因为已经有一个westos了,不加IF NOT EXISTS会报错
2 删除数据库
DROP DATABASE IF EXISTS westos
3 使用数据库
-- tab 键上面` 如果表名或者字段名是一个特殊字符就需要`
USE `school`
SELECT USER FROM student
SELECT `USER` FROM student
4.查看数据库
SHOW DATABASES -- 查看所有的数据库
- 对照sqlyog可视化操作的历史记录查看sql
- 语法和关键字必须强记
2.2 数据库的数据(列)类型
数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节
- bigint 较大的数据 8个字节
- float 浮点数 4个字节
- double 浮点数 8个字节
- decimal 字符串形式的浮点数 金融计算时,一般使用这个
字符串
- char 字符串固定大小的 0~255
- verchar 可变字符串 0~65535 常用,对应于String
- tinytext 微型文本 2^8-1
- text 文本串 2^16-1 保存大文本
时间日期
java.util.Date
- 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填充 int(3)----->005
自增:
- 自动在上一条记录的基础上+1
- 通常用来设计唯一的主键 index,必须是整数类型
- 可以自定义设计主键的起始值和步长
非空: NULL not null
- 假设设置为 not null,如果不赋值,就报错
- NULL,如果不填值,默认就是null
默认:
- 设置默认的值
- sex,如果不指定该列的性别,则默认为某性别
每一个表,都应该存在下面几个字段。做项目用,表示一个记录存在的意义
id 主键
`version` 乐观锁
is_delete 伪删除
gmt_creat 创建时间
gmt_update 修改时间
2.4 创建数据库表(重点)
-- 注意点,表的名称和字段尽量使用` `括起来
-- auto_increment 自增
-- comment 注释
-- 字符串使用单引号'括起来
-- 所有的语句后面加 ,,最后一个不要加
-- DEFAULT 默认
-- PRIMARY KEY 主键 一般一个表就一个
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'家庭住址',
`email` VARCHAR(50)DEFAULT NULL COMMENT'邮箱',
PRIMARY KEY (`id`)
)ENGINE INNODB DEFAULT CHARSET=utf8
格式
CREATE TABLE [IF NOT EXISTS ]`表名`(
`字段名` 列类型[属性][索引][注释],
)[表类型}[字符集设置][注释]
SHOW CREATE DATABASE school -- 查看创建数据库的语句
CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */
SHOW CREATE TABLE student -- 查看student数据表的定义语句
CREATE TABLE `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 '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
2.5 数据库表的类型
关于数据库引擎
- INNODB 默认使用
- MyISAM 早些年使用
MyISAM | INNODB | |
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 表锁 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为前者2倍 |
常规使用操作:
- MyISAM 节约空间,速度较快
- INNODE 安全性搞,事务的处理,多表多用户操作
在物理空间存在的位置
所有文件都存在于data目录下
本质还是文件的存储
MySQL引擎在物理文件上的区别
INNODB在数据库表中只要一个*.frm文件,以及上级目录下的ibdata1文件
MyISAM对应文件
- *.frm 表结构的定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件(index)
设置数据库表的字符节编码,不设置的话,会是mysql默认的字符集编码,不支持中文
CHARSET=utf8
可以在my.ini中配置默认的编码
character-set-server=utf8
2.6 修改和删除表
修改
-- 修改表
ALTER TABLE student RENAME AS student1
-- 增加表的字段
ALTER TABLE student1 ADD age INT(11)
-- 修改表的字段 重命名 修改约束
ALTER TABLE student1 MODIFY age VARCHAR(11) -- 修改约束
ALTER TABLE student1 CHANGE age age1 INT(1) -- 字段重命名
删除
-- 删除表的字段
ALTER TABLE student1 DROP age1
-- 删除表
DROP TABLE IF EXISTS student1
所有的创建和删除操作都尽量加上判断,以免报错
注意点:
- 字段名使用 `` 包裹
- 注释 -- /* */
- sql关键字大小写不敏感,建议小写,大写的单词有点不认识