长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”(Database,简称DB)
分类
-
关系型数据库(SQL)
MySQL、Oracle、SQL Server、SQLite、DB2
-
非关系型数据库(NOSQL)
Redis、MongoDB
DBMS:
数据库管理系统(Database Management System)数据管理软件,科学组织和存储数据、高效地获取和维护数据
MySQL中创建表时,编码为utf8mb4
连接数据库
打开MySQL命令窗口: 在DOS命令行窗口(cmd.exe)在窗口中进入 安装目录\mysql\bin
连接数据库语句: mysql -h localhost –u 用户名 -p用户密码
结构化查询语句SQL
名称 | 解释 | 命令 |
---|---|---|
DDL(数据定义语言) | 定义和管理数据对象,如数据库,数据表等 | CREATE、DROP、ALTER |
DML(数据操作语言) | 用于操作数据库对象中所包含的数据 | INSERT、UPDATE、DELETE |
DQL(数据查询语言) | 用于查询数据库数据 | SELECT |
DCL(数据控制语言) | 用来管理数据库的语言,包括管理权限及数据更改 | GRANT、COMMIT、ROLLBACK |
命令行操作数据库
/*创建数据库 判断是否存在*/ CREATE DATABASE if not EXISTS myschool; /*删除数据库*/ DROP DATABASE if EXISTS myschool; /*查看库*/ show DATABASES; /*切换数据库*/ use myschool; /*创建表*/ CREATE table if not EXISTS `student` ( id int PRIMARY KEY auto_increment, name VARCHAR(50) not null DEFAULT "张三", money DECIMAL(3,2) ) # 创建表 create table if not EXISTS subject( subjectNo int(11) auto_increment, subjectName VARCHAR(50) not null COMMENT "课程名称", classHour int(4) COMMENT "课时" DEFAULT 10, gradeId int(4) COMMENT "年级", PRIMARY key(subjectNo) ) /*删除表*/ DROP TABLE student; # auto_increment 自动递增 # not null 非空 # COMMENT 注释 # DEFAULT 10 默认值 # PRIMARY key(subjectNo) 主键设置
常见的数据类型
数值类型
类型 | 说明 | 取值范围 | 存储需求 |
---|---|---|---|
tinyint | 非常小的数据 | 有符值: -2^7~ 2^7-1无符号值:0 ~ 2^8-1 | 1字节 |
smallint | 较小的数据 | 有符值: -2^15~ 2^15-19无符号值: 0 ~ 2^16-1 | 2字节 |
mediumint | 中等大小的数据 | 有符值: -2^23 ~ 2^23-1 无符号值: 0 ~ 2^24-1 | 3字节 |
int | 标准整数 | 有符值: -2^31~ 2^31-1 无符号值:0 ~ 2^32-1 | 4字节 |
bigint | 较大的整数 | 有符值: -2^63 ~2^63-1无符号值:0 ~2^64-1 | 8字节 |
float | 单精度浮点数 | ±1.1754351e -38 | 4字节 |
double | 双精度浮点数 | ±2.2250738585072014e -308 | 8字节 |
decimal | 字符串形式的浮点数 | decimal(m,d) | m个字节 |
字符串类型
类型 | 说明 | 最大长度 |
---|---|---|
char[(M)] | 固定长字符串,检索快但费空间, 0 <= M <= 255 | M字符 |
varchar[(M)] | 可变字符串0 <= M <= 65535 | 变长度 |
tinytext | 微型文本串 | 2^8–1字节 |
text | 文本串 | 2^16–1字节 |
日期和时间型数值类型
类型 | 说明 | 取值范围 |
---|---|---|
DATE | YYYY-MM-DD,日期格式 | 1000-01-01~ 9999-12-31 |
TIME | Hh:mm:ss ,时间格式 | -838:59:59~838:59:59 |
DATETIME | YY-MM-DD hh:mm:ss | 1000-01-01 00:00:00 至9999-12-31 23:59:59 |
TIMESTAMP | YYYYMMDDhhmmss格式表示的时间戳 | 197010101000000 ~2037年的某个时刻 |
YEAR | YYYY格式的年份值 | 1901~2155 |
日期类型默认当前时间:now( ) 或CURRENT_TIMESTAMP
存储引擎
常见的MyISAM与InnoDB类型
名称 | MyISAM | InnoDB |
---|---|---|
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |