初识MySQL
一、数据库
1.概念
Database,简称DB。存储在计算机磁盘上的有组织,可共享的大量数据集合。
2.数据库的分类
分为关系
型数据库和非关系型数据库。
常见关系型数据库有:MySQL, Oracle, SQL Server, SQLite, DB2等。
常见非关系型数据库有:Redis, MongoDB等
3.数据库管理系统
Database Manage System, 简称DBMS。
4.MySQL
MySQL与Oracle同属于Oracle公司。
二、结构化查询语言
1.SQL分类
Structured Query Language, 简称SQL。
结构化查询语句分类:
名称 | 描述 | 命令 |
---|---|---|
数据定义语言(DDL) | 数据库、数据表的创建、修改和删除 | CREATE、ALTER、DROP |
数据操作语言(DML) | 数据的增加,修改和删除 | INSERT、UPDATE、DELETE |
数据查询语言(DQL) | 数据的查询 | SELECT |
数据控制语言(DCL) | 用户授权,事物的提交和回滚 | GRANT、COMMIT、ROLLBACK |
2.数据库操作
-
创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序规则;
-
修改数据库
ALTER DATABASE 数据库名称 CHARACTER SET 字符集 COLLATE 排序规则;
-
删除数据库
DROP DATABASE [IF EXISTS] 数据库名称;
-
查看数据库
SHOW DATABASES;
-
使用数据库
USE 数据库名称;
切换数据库或选择数据库
3. 列类型
数据库中有数据表,数据表有多列,每列为一种列类型
列类型分为数值类型,日期时间类型,字符串类型
- 数值类型
类型 | 说明 | 存储需求 |
---|---|---|
tinyint | 非常小的数据 | 1字节 |
smallint | 较小的数据 | 2字节 |
mediumint | 中等大小的数据 | 3字节 |
int | 标准整数 | 4字节 |
bigint | 较大整数 | 8字节 |
float | 单精度浮点数 | 4字节 |
double | 双精度浮点数 | 8字节 |
decimal | 字符串形式的浮点数 decimal(m, d) m表示共几位,d表示小数点后有几位 | m字节 |
- 日期时间类型
类型 | 说明 |
---|---|
DATE | YYYY-MM-dd,日期格式,1000-9999年 |
TIME | HH:mm:ss,时间格式 |
DATAETIME | YY-MM-dd HH:mm:ss |
TIMESTAMP | YYYY-MM-dd HH:mm:ss,格式表示的时间戳,1970-2038年 |
YEAR | YEAR,格式的年份值,1901-2155年 |
- 字符串类型
类型 | 说明 | 长度 |
---|---|---|
chat[(M)] | 固定长字符串,检索快但费空间, 0<=M<=255 | M字符 |
varchar[(M)] | 可变字符串,最大占用M个字节,0<=M<=65535 | 变长度 |
text | 文本串 | 最大2^16-1 |
- 列类型修饰属性
属性名 | 说明 | 示例 |
---|---|---|
UNSIGNED | 无符号,只用于修饰数值类型,不能出现负数 | UNSIGNED INT(4),表示4位非负整数 |
ZEROFILL | 不足位数用0填充 | INT(4) ZEROFILL |
NOT NULL | 不能为空 | VARCHAT(20) NOT NULL |
DEFAULT | 设置默认值 | INT(4) DEFAULT 0,设置为0 |
AUTO_INCREMENT | 自增长,只用于数值类型,必须为键,不能为空 | INT(11) AUOTO_INCREMENT NOT NULL PRIMARY KEY,第一次向该列插入值时为1,第二次为2 |
4.数据表操作
-
数据表类型
有MyISAM、InnoDB、HEAP、BOB、CSV等
最常用的是MyISAM和InnoDB
-
MyISAM和InnoDB的区别
名称 | MyISAM | InnoDB |
---|---|---|
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |
事务:涉及的所有操作是一个整体,要么都执行,要么都不执行。
数据行锁定:当用户在修改某行数据时,可以直接将该条数据锁定。
当涉及业务操作以查询为主时使用MyISAM;当经常有修改和删除操作时,使用InnoDB。
- 创建数据表
CREATE TABLE [IF NOT EXISTS] 数据表名称(
字段名1 列类型(长度) [修饰属性] [键/索引] [COMMENT 注释],
......
)[ENGINE = 数据表类型] [CHARSET=字符集编码] [COMMENT=注释];
表中一定有一个主键:PRIMARY KEY
如果字段名是命令行关键字,为字段名添加反引号。
查看数据表:show tables;
查看表结构:desc 表名;
-
修改数据表
-
修改表名
ALTER TABLE 表名 RENAME AS 新表名;
-
增加字段
ALTER TABLE 表名 ADD 字段名 列类型(长度)[修饰属性] [键/索引] [COMMENT 注释];
-
修改字段
-- modify只能修改字段的修饰属性 ALTER TABLE 表名 MODIFY 字段名 列类型(长度)[修饰属性] [键/索引] [COMMENT 注释]; ALTER TABLE 表名 CHANGE 原字段名 新字段名 列类型(长度)[修饰属性] [键/索引] [COMMENT 注释];
-
删除字段
ALTER TABLE 表名 DROP 字段名;
-
删除数据表
DROP TABLE [IF EXISTS] 表名;
-