1、数据库
概念:数据库,英文名称为Database,简称DB。从专业角度解释为存储在计算机磁盘上的有组织,可共享的大量数据的集合。
1.1、数据库的类型
数据库分为关系型数据库 和非关系数据库 两大类。常见的关系型数据库由MySQL 、 Oracle 、 SQL 、Server 、 SQLite 、 DB2等。
数据库管理系统,英文名称为Database Management System,简称DBMS。主要用于科学组织和存储数据、高效的获取和维护数据。
2、结构化查询语言
2.1、SQL分类
| 名称 | 描述 | 命令 |
|---|---|---|
| 数据定义语言(DDL) | 数据库、数据表的创建、修改和删除 | CREATE、ALTER、DROP |
| 数据操作语言( DML ) | 数据的增加、修改和删除 | INSERT、UPDATE、DELETE |
| 数据查询语言( DQL ) | 数据的查询 | SELECT |
| 数据控制语言( DCL ) | 用户授权、事务的提交和回滚 | GRANT、COMMIT、ROLLBACK |
2.2、数据库操作
2.2.1、创建数据库的语法
sql
CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序规则;
示例:创建数据库lesson,并指定字符集为 GBK,排序规则为 GBK_CHINESE_CI
sql
CREATE DATABASE IF NOT EXISTS lesson DEFAULT CHARACTER SET GBK COLLATE GBK_CHINESE_CI;
2.2.2、修改数据库的语法
sql
ALTER DATABASE 数据库名称 CHARACTER SET 字符集 COLLATE 排序规则;
示例:修改数据库lesson的字符集为 UTF8,排序规则为 UTF8_GENERAL_CI
sql
ALTER DATABASE lesson CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
2.2.3、删除数据库的语法
sql
DROP DATABASE [IF EXISTS] 数据库名称;
示例:删除数据库lesson
sql
DROP DATABASE IF EXISTS lesson;
2.2.4、查看数据库语法
sql
SHOW DATABASES;
2.2.5、查看数据库语法
sql
USE 数据库名称;
示例:使用数据库lesson
sql
USE lesson;
3、列类型
在 MySQL中,常用列类型主要分为数值类型、日期时间类型、字符串类型。
3.1 数值类型
| 类型 | 说明 | 存储需求 |
|---|---|---|
| tinyint | 非常小的数据 | 1字节 |
| smallint | 较小的数据 | 2字节 |
| mediumint | 中等大小的数据 | 3字节 |
| int | 标准整数 | 4字节 |
| bigint | 较大的整数 | 8字节 |
| float | 单精度浮点数 | 4字节 |
| double | 双精度浮点数 | 8字节 |
| decimal | 字符串形式的浮点数 | m个字节 |
3.2、日期时间类型
| 类型 | 说明 |
|---|---|
| DATE | YYYY-MM-dd,日期格式 |
| TIME | HH:mm:ss,时间格式 |
| DATETIME | YY-MM-dd HH:mm:ss |
| TIMESTAMP | YYYY-MM-dd HH:mm:ss格式表示的时间戳 |
| YEAR | YYYY格式的年份值 |
3.3、字符串类型
| 类型 | 说明 |
|---|---|
| char [(M)] | 固定长字符串,检索快但费空间, 0 <= M <= 255 |
| varchar [(M)] | 可变字符串0 <= M <= 65535 |
| text | 文本串 |
3.4、列类型修饰属性
| 属性名 | 示例 |
|---|---|
| UNSIGNED | INT(4) UNSIGNED,表示只能为4位大于等于0的整数 |
| ZEROFILL | INT(4) ZEROFILL,如果给定的值为10,此时只有2位,而该列需要4位,不足的2位由0来填充,最终值为0010 |
| NOT NULL | VARCHAR (20) NOT NULL,表示该列数据不能为空值 |
| DEFAULT | INT(4) DEFAULT 0,表示该列不赋值时默认为0 |
| AUTO_INCREMENT | INT(11) AUTO_INCREMENT NOT NULLPRIMARY KEY。第一次为该列中插入值时为1,第二次为2 |
4、数据表操作
4.1、 数据表类型
MySQL中的数据表类型有许多,如 MyISAM、InnoDB、HEAP、BOB、CSV等。其中最常用的就是MyISAM和 InnoDB
4.2、MyISAM与 InnoDB的区别
InnoDB 支持事务、行锁、外键,适合业务核心表;MyISAM 无事务、表锁,适合读多写少的静态表。
4.3、创建数据表
sql
CREATE TABLE [IF NOT EXISTS] 数据表名称(
字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
字段名2 列类型(长度) [修饰属性] [键/索引] [注释],
字段名3 列类型(长度) [修饰属性] [键/索引] [注释],
......
字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
) [ENGINE = 数据表类型][CHARSET=字符集编码] [COMMENT=注释];
示例:创建学生表,表中有字段学号、姓名、性别、年龄和成绩
sql
CREATE TABLE IF NOT EXISTS student(
`number` VARCHAR(30) NOT NULL PRIMARY KEY COMMENT '学号,主键', name VARCHAR(30) NOT NULL COMMENT '姓名',
sex TINYINT(1) UNSIGNED DEFAULT 0 COMMENT '性别:0-男 1-女 2-其他', age TINYINT(3) UNSIGNED DEFAULT 0 COMMENT '年龄',
score DOUBLE(5, 2) UNSIGNED COMMENT '成绩'
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';
4.4、修改数据表
- 修改表名
sql
ALTER TABLE 表名 RENAME AS 新表名;
示例:将student表名称修改为 stu
sql
ALTER TABLE student RENAME AS stu;
- 增加字段
sql
ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
示例:在 stu表中添加字段联系电话(phone),类型为字符串,长度为11,非空
sql
ALTER TABLE stu ADD phone VARCHAR(11) NOT NULL COMMENT '联系电话';
- 查看表结构
sql
DESC 表名; -- 查看表结构
- 修改字段
sql
-- MODIFY 只能修改字段的修饰属性
ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
-- CHANGE 可以修改字段的名字以及修饰属性
ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];
示例: 将 stu表中的 sex字段的类型设置为 VARCHAR,长度为2,默认值为'男',注释为 "性别,男,女,其他"
sql
ALTER TABLE stu MODIFY sex VARCHAR(2) DEFAULT '男' COMMENT '性别:男,女,其他';
示例:将 stu表中 phone字段修改为 mobile,属性保持不变
sql
ALTER TABLE stu CHANGE phone mobile VARCHAR(11) NOT NULL COMMENT '联系电话';
- 删除字段
sql
ALTER TABLE 表名 DROP 字段名;
示例:将 stu表中的 mobile字段删除
sql
ALTER TABLE stu DROP mobile;
4.5、删除数据表
sql
DROP TABLE [IF EXISTS] 表名;
示例:删除数据表 stu
sql
DROP TABLE IF EXISTS stu;