MySQL数据库第一章
MySQL数据库概述 MySQL是一种开源免费的关系型数据库管理系统,具有小巧、功能齐全、使用便捷等特点,适用于中小型甚至大型应用。数据库分为关系型(如MySQL、Oracle)和非关系型(如Redis、MongoDB)两类。MySQL通过SQL语言进行操作,包含数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)和数据控制语言(DCL)。创建数据表时需要指定列类型(数值、字符串
MySQL数据库
文章目录
第一章 初识MySQL
数据库介绍
数据库(Database,简称DB)
概念:
长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”
作用:
保存、管理数据
数据库分类
关系型数据库(SQL)
MySQL、Oracle、SQL Server、SQLite、DB2
非关系型数据库(NOSQL)
Redis、MongoDB
DBMS
数据库管理系统(Database Management System)
数据管理软件,科学组织和存储数据、高效地获取和维护数据
核心定义与功能
DBMS(Database Management System)是操纵和管理数据库的核心软件工具,其核心功能包括:
- 数据定义:通过数据定义语言(DDL)创建数据库结构(如表、索引等)
- 数据操作:支持增删改查(CRUD)操作,通过数据操作语言(DML)实现
- 数据安全与完整性:设置用户权限、主键/外键约束等,确保数据准确性和安全性
- 并发控制与恢复:管理多用户并发访问的事务隔离,支持故障恢复(如日志备份)
- 存储优化:管理物理存储方式及索引,提升查询效率
主要类型
- **关系型(RDBMS)**:如MySQL、Oracle,基于表格结构,支持SQL语言,强调数据一致性和事务ACID特性
- **非关系型(NoSQL)**:如MongoDB、Redis,适用于非结构化数据,支持高扩展性和灵活的数据模型
MySQL简介
概念:是现流行的开源、免费的关系型数据库
特点:
- 免费、开源数据库
- 小巧、功能齐全
- 使用便捷
- 可运行于Windows或Linux操作系统
- 可适用于中小型甚至大型网站应用
运行机制
MySQL使用
连接数据库
打开MySQL命令窗口
- 在DOS命令行窗口(cmd.exe)
- 在窗口中进入 安装目录\mysql\bin
- 可设置环境变量
连接数据库语句
mysql -h 服务器主机地址 –u 用户名 -p用户密码
结构化查询语句SQL
分类:
名称 | 解释 | 命令 |
---|---|---|
DDL(数据定义语言) | 定义和管理数据对象,如数据库,数据表等 | CREATE、DROP、ALTER |
DML(数据操作语言) | 用于操作数据库对象中所包含的数据 | INSERT、UPDATE、DELETE |
DQL(数据查询语言) | 用于查询数据库数据 | SELECT |
DCL(数据控制语言) | 用来管理数据库的语言,包括管理权限及数据更改 | GRANT、COMMIT、ROLLBACK |
命令行操作
创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名;
删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
查看数据库
SHOW DATABASES;
使用数据库
USE 数据库名;
工具建表
- 显示表结构
- desc表名
- 显示表创建语句
- show create table表名
创建数据表
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
-- 反引号用于区别MySQL保留字与普通字符而引入的
列类型
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
-- 表列类型设置
-- 列类型
- 规定数据库中该列存放的数据类型
- 数值类型
- 字符串类型
- 日期和时间型数值类型
- NULL值
数值类型
类型 | 说明 | 取值范围 | 存储需求 |
---|---|---|---|
tinyint | 非常小的数据 | 有符值:-27~27-1 无符号值:0~2^8-1 | 1字节 |
smallint | 较小的数据 | 有符值:-215~215-1 无符号值:0~2^16-1 | 2字节 |
mediumint | 中等大小的数据 | 有符值:-223~223-1 无符号值:0~2^24-1 | 3字节 |
int | 标准整数 | 有符值:-231~231-1 无符号值:0~2^32-1 | 4字节 |
bigint | 较大的整数 | 有符值:-263~263-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 |
NULL值
- 理解为“没有值”或“未知值”
- 不要用NULL进行算术运算,结果仍为NULL
数据字段属性
表列类型设置
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
-- 表列类型设置
-- [ 属性 ] [ 索引 ] [注释]
数据字段属性
- UNSIGNED
- 无符号的
- 声明该数据列不允许负数
- ZEROFILL
- 0填充的
- 不足位数的用0填充,如int(3),5则为005
- AUTO_INCREMENT
- 自动增长的,每添加一条数据,自动在上一个记录数上加1
- 通常用于设置主键,且为整数类型
- 可定义起始值和步长
- NULL 和 NOT NULL
- 默认为NULL,即没有插入该列的数值
- 如果设置为NOT NULL,则该列必须有值
- DEFAULT
- 默认的
- 用于设置默认值
- 例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值
数据字段注释
CREATE TABLE [ IF NOT EXISTS ] `test` (
`id` int (11) UNSIGNED COMMENT ‘编码号’
)COMMENT=‘测试表’;
数据表的类型
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
-- 表列类型设置
-- [ 表类型 ]
/*
CREATE TABLE 表名(
#省略一些代码
) ENGINE = MyISAM
-- 或者
CREATE TABLE 表名(
#省略一些代码
) ENGINE = InnoDB
*/
-
MySQL的数据表的类型
- MyISAM、InnoDB 、HEAP、BOB、CSV等
-
常见的MyISAM与InnoDB类型
-
名称 MyISAM InnoDB 事务处理 不支持 支持 数据行锁定 不支持 支持 外键约束 不支持 支持 全文索引 支持 不支持 表空间大小 较小 较大,约2倍
-
MySQL注释
**#…… 单行注释 **
/……/ 多行注释
设置数据表字符集
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
-- 表列类型设置
-- [ 表字符集 ]
/*
-- 创建时通过命令来设置
CREATE TABLE 表名(
#省略一些代码
)CHARSET = utf8;
-- 如无设定,则根据MySQL数据库配置文件my.ini
-- (Windows系统)中的参数设定 如:character-set-sever = utf8
*/
索引
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
-- 表列类型设置
-- [ 索引 ]
数据表的存储位置
- MySQL数据表以文件方式存放在磁盘中
- 包括表文件、数据文件以及数据库的选项文件
- 位置:MySQL安装目录\data下存放数据表。目录名对应数据库名,该目录下文件名对应数据表
注意:
InnoDB类型数据表只有一个*.frm文件,数据文件为上一级目录的 ibdata1 文件
MyISAM类型数据表对应三个文件:
*.frm -- 表结构定义文件
*.MYD -- 数据文件
*.MYI -- 索引文件
修改数据表
修改表名
ALTER TABLE 旧表名 RENAME AS 新表名
添加字段
ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ]
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [ 属性 ]
删除字段
ALTER TABLE 表名 DROP 字段名
删除数据表
DROP TABLE [ IF EXISTS ] 表名
- IF EXISTS 为可选,判断是否存在该数据表
索引文件
### 修改数据表
**修改表名**
```sql
ALTER TABLE 旧表名 RENAME AS 新表名
添加字段
ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ]
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [ 属性 ]
删除字段
ALTER TABLE 表名 DROP 字段名
删除数据表
DROP TABLE [ IF EXISTS ] 表名
- IF EXISTS 为可选,判断是否存在该数据表
- 如删除不存在的数据表会抛出错误

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)