目录
一、数据库语言
1.1 DDL(数据库定义语言)
1.2 DML(数据库操作语言)
1.3 DQL(数据库查询语言)
1.4 DCL(数据控制语言)
二、操作数据库
2.1 创建数据库
2.2 查看数据库
2.3 删除数据库
2.4 选择数据库
三、数据库表操作
3.1 创建表
3.1.1数据库表字段类型
3.1.2 给表字段添加注释
3.2 查询创建的数据库表结构
3.2.1 存储引擎
3.3 修改和删除数据库表
3.3.1 修改表名
3.3.2 添加表字段
3.3.3 修改字段
3.3.4 删除表字段
3.3.5 删除表
一、数据库语言
1.1 DDL(数据库定义语言)
定义和管理数据库对象,如定义数据库,数据库表等;如:CREATE、DROP、ALTER
1.2 DML(数据库操作语言)
用于操作数据库对象中所包含的数据;如:INSERT、UPDATE、DELETE
1.3 DQL(数据库查询语言)
用于查询数据库;如:SELETE
1.4 DCL(数据控制语言)
用来管理数据库的语言,包括管理权限及数据更改;如:ROLLBACK、COMMIT、GRANT
二、操作数据库
2.1 创建数据库
create database [if not exists] 数据库名
2.2 查看数据库
SHOW DATABASES
2.3 删除数据库
DROP DATABASE [IF EXISTS] 数据库名
2.4 选择数据库
USE 数据库名
三、数据库表操作
3.1 创建表
CREATE TABLE `表名称`( `字段名` 类型 [属性] [索引] [注释], `字段名` 类型 [属性] [索引] [注释], `字段名` 类型 [属性] [索引] [注释], `字段名` 类型 [属性] [索引] [注释])“[]”中的内容是可以省略不写的; ``反引号的作用是:当定义的名称和系统关键字冲突时可以使用反引号来进行区别例: CREATE TABLE t_students( id INT PRIMARY KEY, name varchar(50) NOT NULL, age int, sex CHAR(4), birthday DATETIME, score decimal(4,1) );
3.1.1数据库表字段类型
字符串类型
类型 | 说明 | 取值范围 |
---|---|---|
char[(长度)] | 固定长字符串,检索快,但是浪费内存空间,效率高(适合用于已知该字段的长度)当传入的字符串长度不够长度时会补空格 | 0<=M<=255 |
varchar[(长度)] | 可变字符串,节省内存空间,效率低(长适用于不知道字符串长度时)传入的字符串的长度是多少就占多少 | 0<=M<=65535 |
text | 文本串(4个G左右的大小) | 4294967295长度+4个字节 |
tinytext | 微型文本串 | 16777215长度+3个字节 |
数值类型
类型 | 说明 | 取值范围 | 存储需求 |
---|---|---|---|
tinyint | 非常小的数据 | -2^7~2^7-1 | 1个字节 |
smallint | 较小的数据 | -2^15~2^15-1 | 2个字节 |
mediumint | 中等大小的数据 | -2^23~2^23-1 | 3个字节 |
int | 标准整数 | -2^31~2^31-1 | 4个字节 |
bigint | 较大的整数 | -2^63~2^63-1 | 8个字节 |
float | 单精度浮点数 | ±1.1754351e-38 | 4个字节 |
double | 双精度浮点数 | ±2.2250738585072014e-308 | 8个字节 |
decimal(位数,小数点位数) | 字符串形式的浮点数 | decimal(m,d) | m个字节 |
日期和时间类型
类型 | 说明 | 取值范围 |
---|---|---|
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类型
可以理解为“没有值”或者是“未知值” 在mysql中,NULL和0都表示为假,1为真
3.1.2 给表字段添加注释
注释:给字段添加注释相当于给字段添加描述,方便后期维护和修改字段 在字段后添加COMMENT '注释内容' 例:CREATE TABLE t_students( id INT PRIMARY KEY, name varchar(50) NOT NULL, age int COMMENT '年龄', sex CHAR(4), birthday DATETIME, score decimal(4,1) );
3.2 查询创建的数据库表结构
方式一:desc 表名称 方式二:show create 表名称(可以查看到建表的语句) 例:CREATE TABLE `t_students` (`id` int(11) DEFAULT NULL,`name` varchar(50) DEFAULT NULL,`age` int(11) DEFAULT NULL,`sex` char(4) DEFAULT NULL,`birthday` datetime DEFAULT NULL,`score` decimal(4,1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
3.2.1 存储引擎
存储引擎就是:将数据库表往磁盘上写的规则; ENGINE=[InnoDB]就规定了当前表的存储引擎;[]表示可以更改
查看当前数据库支持的存储引擎
show engines
数据库存储引擎MYLSAM和LnnoDB的区别
对比项 | MyISAM | InnoDB |
---|---|---|
外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行表锁 | 表锁,即使操作一条记录也会锁住整个表,不适合高并发操作 | 行锁,操作时只锁某一行,不对其它行有影响,适合高并发操作 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响 |
默认安装 | Y | Y |
默认使用 | N | Y |
关注点 | 性能:节省资源、消耗少、简单业务 | 事务:并发写,事务、更大资源 |
3.3 修改和删除数据库表
3.3.1 修改表名
ALTER TABLE 旧表名 RENAME as 新表名 例:ALTER TABLE t_students RENAME as xuesheng
3.3.2 添加表字段
ALTER TABLE 表名 ADD 表字段 类型 属性; 例:ALTER TABLE xuesheng ADD address VARCHAR(50) COMMENT '家庭地址';
3.3.3 修改字段
-- 方式一:MODIFY只能修改数据类型和属性 ALTER TABLE 表名 MODIFY 字段名 类型 属性; 修改式覆盖式修改,1,有一定的默认值2,如果要换类型(当存在数据时就不能改类型),3、必须满足隐式转换;ALTER TABLE 表名 MODIFY `字段名` 类型 [属性];例: ALTER TABLE xuesheng MODIFY `name` VARCHAR(40); -- 方式二:既可以修改类型和属性,还可以修改字段名ALTER TABLE 表名 CHANGE 旧字段名 新字段名例: ALTER TABLE xuesheng CHANGE `name` uname VARCHAR(50);
3.3.4 删除表字段
ALTER TABLE 表名DROP 字段名 例:ALTER TABLE xuesheng DROP age
3.3.5 删除表
DROP TABLE [ IF EXISTS ] 表名 例:DROP TABLE xuesheng