MySQL学习笔记第一天
1.初识数据库
1.数据库分类
- 关系型数据库 (SQL)
- mysql、Oracle、SqlServer。。。
- 通过表和表,行和列之间的关系进行数据的存储
- 非关系型数据库 (NO SQL)
- Redis,MongDB
- 对象存储,通过对象自身的属性来决定。
2.DBMS(数据库管理系统)
- 数据库的管理软件 科学有效的管理数据,维护和获取数据
- MySQL 数据库管理系统!
3.连接数据库
mysql -uroot -p(密码)
4.数据库命令行
/*[17:39:22][ 0 ms]*/ SHOW DATABASES; --查看所有数据库
/*[17:41:20][ 0 ms]*/ USE school;
/*[17:41:20][ 15 ms]*/ SELECT DATABASE();
/*[17:41:51][ 0 ms]*/ SHOW TABLES; --查看数据库中的所有表
/*[17:42:20][ 0 ms]*/ DESCRIBE student; --查看数据库中所有标的信息
/*[17:45:51][ 0 ms]*/ CREATE DATABASE class; --创建数据库
/*[17:46:09][ 0 ms]*/ CREATE DATABASE grade;
5.数据库语言分类
- DDL 定义
- DML 操作
- DQL 查询
- DCL 控制
2.操作数据库
操作数据库>操作数据库中的表>操作数据库中表的数据
2.1操作数据库
-
创建数据库
CREATE DATABASE IF NOT EXISTS class;
-
删除数据库
DROP DATABASE IF EXISTS class;
-
使用数据库
USE
school
; -
查看数据库
SHOW DATABASE; 查看所有的数据库
2.2数据库的数据类型
数值
- tinyint 十分小的数据 ,一个字节
- smallint 较小的数据 两个字节
- mediumint 三个字节
- int 标准的整数 四个字节(常用)
- bigint 较大的数据 八个字节
- float 浮点数 四个字节
- double浮点数 八个字节
- 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数据库的字段属性
Unsignde:
- 无符号的整数
- 不能声明为负数
zerofill:
- 0填充的
- 不足的位数使用0 来填充
自增:
- 通常 理解为自增,自动在上一条记录的基础上+1(默认)
- 通常用来设置唯一的主键 index,必须是整数类型
- 可以自定义设置主键自增的起始值和步长
非空:Null not null
- 假设设置not null,不给赋值就报错
- null ,如果不填写值 默认就是null
默认:
- 设置默认的值
- sex 默认值为男, 不手动设置就会是男
规范:每个标都必须存在以下字段(阿里巴巴规范)
主键
version 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
2.3创建数据库表
学号id 登录密码varchar(20) 姓名 性别varchar(2),出生日datetime,家庭住址,email
CREATE TABLE IF NOT EXISTS `student1`(
`id` INT(4) AUTO_INCREMENT NOT NULL COMMENT'学号',
`name` VARCHAR(20) NOT NULL DEFAULT'匿名' COMMENT'姓名',
`password` VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT'性别',
`birth` DATETIME NOT NULL COMMENT'出生日期',
`address` VARCHAR(30) NOT NULL COMMENT'家庭住址',
`email` VARCHAR(20) COMMENT'邮件',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET `utf8`;
格式:
create table [if not exists] `表名`(
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
primary key(`字段名`)
)[表引擎][字符集设置][注释]
常用命令
SHOW CREATE DATABASE school; --查看创建数据库的SQL语句
SHOW CREATE TABLE student1; --查看创建表的SQL语句
DESC student1; --显示表的结构
2.4 数据表的类型
关于数据库引擎
INNODB 默认使用
MYISAM 早些年使用
MYISAM INNODB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为MYISAM的两倍
常规使用操作:
- MYISAM 节约空间 速度加快
- INNODB 安全性更高 事务的处理 多表多用户操作
在物理空间存在的位置
所有数据库文件都存在data目录下,一个文件夹就对应一个数据库
本质还是文件的存储!
mysql引擎在物理文件下的区别
- INNODB 在数据库表中只有一个*frm文件以及上级目录下的ibdata1文件
- MYISAM对应文件
- *.frm - 表结构的定义文件
- *.MYD 数据文件
- *.MYI 索引文件