MySQL基础
前言
web:
前端(页面:展示数据)
后台(连接点:链接数据库JDBC,链接前端,链接后端(控制视图的跳转,给前端传数据))
数据库(存储数据)
**数据库:**数据仓库,软件安装在操作系统之上
作用:存储数据,管理数据。
数据库可以跨平台。 SQL重要
500万条以下都可以存放。
MySQL:常用于中小型和大型的网站,用于大型网站时可以使用集群
一个数据库可以存放多各网站的信息。
数据库的分类:
- 关系型数据库(SQL)
- MySQL,Oracle,Sql Server,DB2,SQLite
- 通过表和表之间,行和列之间的关系进行数据的存储
- 非关系型数据库(NoSQL)
- Redis,MongDB
- 给关系型数据库,对象存储,通过对象的自身属性来决定。
**DBMS:**数据库管理系统
- 数据库的管理程序,对数据进行维护和读取。
DB DBMS
MySQL中的常用方法
MySQL中的关键字不区分大小写。
1、创建数据库
CREATE DATABASE [IF NOT EXISTS] hhhh;
2、删除数据库
DROP DATABASE [IF EXISTS] hhhh;
3、使用数据库
USE `hhhh`
4、查看数据库
SHOW DATABASES -- 查看所有的数据库
5、查看表的结构
DESC `表名`; -- 查看表的结构
6、数据表的定义语句
SHOW CREATE TABLE `hhhh`; -- 查看hhhh数据表的定义语句
7、查看创建数据库语句
SHOW CREATE DATABASE school; -- 查看创建数据库语句
8、修改表名
ALTER TABLE `旧名` RENAME AS `新名`;
9、在表中增加新的字段
ALTER TABLE `表名` ADD `字段名` 属性;
10、修改表的字段
-- MODIFY
ALTER TABLE `表名` MODIFY `字段名` 属性;
ALTER TABLE hhhh1 MODIFY age INT(4);
-- MODIFY 直接对字段的属性进行修改,修改约束
-- CHANGE
ALTER TABLE hhhh1 CHANGE age age1 VARCHAR(20);
ALTER TABLE `表名` CHANGE `旧字段` `新字段名` 属性;
-- CHANGE 修改字段的名字同时也可以修改字段的属性
11、删除表的字段
ALTER TABLE `表名` DROP `字段`;
ALTER TABLE hhhh1 DROP age1;
数据库基本知识
数据库的物理存储位置
所有数据库文件都存在 data 目录下,一个文件夹就对应一个数据库
本质还是文件的存储!
MySQL引擎在物理文件上的区别
- INNODB 在数据库中只有一个 *.frm 文件,以及上级目录下的 ibdata1 文件
- MYISAM
- *.frm 表结构的定义文件
- *.MYD 数据结构(data)
- *.MYI 索引文件(index)
数据库中的列类型
数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- int 标准的整数 4个字节
- bigint 较大的数据 8个字节
- float 浮点数 4个字节
- double 浮点数 8个字节 (精度问题!)
- decimal 字符串形式的浮点数 金融计算式一般采用这种
**注意:**整型在创建时限制长度在设置时实际上设置的是自动补零的长度。
decimal 在使用时可以采用 decimal(9,5)的方法来限制数据的长度以及小数位数,超过了小数的限制位数或者不满足会自动补 0 或者 截断。如果小数位不满足要求,但是补 0 后位数超出限制,在严格模式下会报错,非严格模式下会将数据按照满足要求的最大数存储。
字符
- char 字符串固定大小的 0 ~ 255
- verchar 可变字符串 0 ~ 65535
- tinytext 微型文本 2^8 - 1
- text 文本串 2^16 - 1 保存大文本
时间
Java.util.Data
- date YYYY-MM_DD 日期格式
- time HH:mm:ss 时间格式
- datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
- timestamp 时间戳(全球统一) 1970.1.1到现在的毫秒数,同样常用
- year 年份表示
null
- 没有值,未知
- 注意不要使用NULL进行计算,结果为null
数据库的字段属性
Unsigned
- 无符号整数
- 申明该列不能是负数
zerofill
- 不足的位数使用0填充
自增
- 自动在上一条数据的基础上 +1(默认)
- 通常用来设计唯一的主键 ~ 必须是整数类型
- 可以自定义设计主键自增的起始值 和 增量的大小
非空:not null
- 设置为非空的如果不填写值会报错
- 未设置非空的数据未填写数据时默认null
默认:
- 设置默认值
**拓展 **
每一个表都必须储存以下五个字段!未来做项目用,每一个记录都存在意义!
id 主键
'version' 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
数据库的创建
目标︰创建一个schoo1数据库
创建学生表(列,字段)使用SDQL创建
学号int登录密码varchar(20)姓名,性别varchar(2),出生日期(datatime),家庭住址, email
注意点,使用英文,表的名称和字段尽量使用``括起来
AUTO_INCREMENT自增
字符串使用单引号括起来!
所有的语句后面加 ,(英文的),最后一个不用加
PRIMARY KEY主键,一般一个表只有一个唯一的主键!
CREATE TABLE `hhhh` (
`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(3) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` datetime DEFAULT NULL COMMENT '出生日期',
`address` varchar(50) DEFAULT NULL COMMENT '家庭住址',
`email` varchar(20) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
创建数据库的标准格式
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
......
`字段名` 列类型 [属性] [索引] [注释],
PRIMARY KEY(`字段名`) (主键的设定)
) [表类型][字符集设置][注释]
常用命令:
DESC `表名`; 查看表的结构
SHOW CREATE TABLE `hhhh`; 查看hhhh数据表的定义语句
SHOW CREATE DATABASE school; 查看创建数据库语句
数据库表的类型
-
INNODB 默认使用
-
MYISAM 早些年使用
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
- MYISAM 节约空间,速度快
- INNODB 安全性搞,事务的处理,多表多用户操作