【数据库 | 基础】DDL语句以及数据类型

文章目录

DDL---数据库操作

查询

创建

删除

使用

DDL---表操作---创建

查询

创建

MySQL中的数据类型

小案例

DDL---表操作---修改(结构)

添加字段

修改字段

删除字段

修改表名

删除


数据库DDL (Data Definition Language)是用于定义和管理数据库结构的语言,包含创建、修改、删除****数据库等核心操作。

DDL---数据库操作

查询

查询所有数据库

SHOW DATABASES;-- :列出当前数据库服务器中所有可用的数据库名称。

查询当前数据库

SELECT DATABASE(); -- 返回当前会话正在使用的数据库名称(即当前默认数据库)。

创建

CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];

部分 说明
CREATE DATABASE 创建一个新数据库
IF NOT EXISTS 可选 。如果数据库已存在,不报错,直接跳过。强烈建议加上,避免重复执行时报错。
数据库名 要创建的数据库名称(如 my_shopblog_db)。建议使用字母、数字、下划线,避免特殊字符或中文。
DEFAULT CHARACTER 字符集 指定默认字符集,例如 utf8mb4(推荐)
COLLATE 指定排序规则,例如 utf8mb4_unicode_ciutf8mb4_general_ci

删除

DROP DATABASE [IF EXISTS] 数据库名;

|-------------|---------------------------------|
| IF EXISTS | 如果数据库不存在,加上IF EXISTS不报错。否则报错。 |

使用

USE 数据库名;-- 数据库服务器中有多个数据库,选中当前操纵的数据库

DDL---表操作---创建

查询

查询当前数据库所有表

SHOW TABLES;-- 解释:查询当前数据库所有表。

查询表结构

DESC(DESCRIBE) 表名;

查询指定表的创建语句

SHOW CREATE TABLE 表名;

创建

CREATE TABLE 表名(

字段1 字段1类型 [COMMENT 字段1注释],

字段2 字段2类型 [COMMENT 字段1注释],

字段3 字段3类型 [COMMENT 字段1注释],

...

字段n 字段n类型 [COMMENT 字段1注释]

)[COMMENT 表注释];

注意:[....]为可选择参数,最后一个字段后面不要加逗号。

MySQL中的数据类型

MySQL中的数据库类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
数值类型

类型 字节数 有符号(Signed)范围 无符号(Unsigned)范围 描述
TINYINT 1 −1 0 ~ −1 小整数值
SMALLINT 2 −1 0 ~ −1 小整数值
MEDIUMINT 3 −1 0 ~ −1 大整数值
INT或INTEGER 4 −1 0 ~ −1 大整数值
BIGINT 8 −1 0 ~ −1 极大整数值
FLOAT 4 (-3.402823466E+38~3.402823466351E+38) 0 和 (1.175494351E~ 38~3.402823466E+38) 单精度浮点值
DOUBLE 8 ±1.7976931348623157E±308 0和(2.2250738585072014 E-308~1.7976931348623157 E + 308) 双精度浮点值
DECTMAT 依赖于M(精度)和D(标度)的值 依赖于M(精度)D(标度)的值 小数值(精确认点数)

字符串类型

类型名称 最大大小(字节) 描述
CHAR(M) M的范围:0~255字节 定长字符串。性能高
VARCHAR(M) M的范围:0~65535 变长字符串,性能较差,需要根据内容来计算所占的空间
TINYBLOB 0~255 字节 不超过255个字符的二进制
TINYTEXT 0~255 字节 短文本字符串
BLOB 0~65,535 字节 二进制形式的长文本数据
TEXT 0~65,535 字节 长文本数据
MEDIUMBLOB 0~16,777,215 字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0~16,777,215 字节 中等长度文本数据
LONGBLOB 0~4,294,967,295 字节 二进制形式的极大文本数据
LONGTEXT 0~4,294,967,295 字节 极大文本数据

日期时间类型

类型名称 大小(字节) 范围 格式 描述
DATE 3 '1000-01-01''9999-12-31' YYYY-MM-DD 仅存储日期,不包含时间部分。
TIME 3 '-838:59:59''838:59:59' HH:MM:SS-HH:MM:SS 日期值或持续时间
YEAR 1 19012155 YYYY(四位) 仅存储年份
DATETIME 8 '1000-01-01 00:00:00''9999-12-31 23:59:59' YYYY-MM-DD HH:MM:SS 混合日期和时间
TIMESTAMP 4 '1970-01-01 00:00:01' UTC'2038-01-19 03:14:07' UTC YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳

小案例

sql 复制代码
create table emp(
  id int COMMENT '编号',
  workno VARCHAR(10) COMMENT '工号',
  name VARCHAR(10) COMMENT'姓名',
  gender char(1) COMMENT '性别',
  age TINYINT UNSIGNED COMMENT '年龄', -- 无符号整数
  idcard char(18) COMMENT '身份证号',
  entrydata date COMMENT '入职年龄'
)COMMENT '员工表';

desc emp; -- 查看表结构 

DDL---表操作---修改(结构)

添加字段

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释][约束];

例子:为emp表增加一个新字段"昵称"为nickname,类型为varchar(20)

sql 复制代码
ALTER table emp ADD nickname VARCHAR(20) COMMENT '昵称';
desc emp; -- 查看表结构 

修改字段

修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];

例子:将emp表的nichname 字段修改username, 类型为varchar(30);

sql 复制代码
ALTER table emp CHANGE nickname username VARCHAR(30);
desc emp; -- 查看表结构 

删除字段

ALTER TABLE 表名 DROP 字段名;

例子:将emp表的字段username 删除

sql 复制代码
ALTER table emp drop username;
desc emp; -- 查看表结构 

修改表名

ALTER TABLE 表名 RENAME TO 新表名;

例子:将emp表的表名修改为employee.

sql 复制代码
ALTER TABLE emp RENAME TO employee;
desc employee;

删除

删除表

DROP TABLE [IF EXISTS] 表名;

删除指定表,并创建创建该表

TRUNCATE TABLE 表名;

注意:在删除表时,表中的全部数据也会被删除。

相关推荐
泷羽Sec-静安1 小时前
Less-9 GET-Blind-Time based-Single Quotes
服务器·前端·数据库·sql·web安全·less
李宥小哥2 小时前
结构型设计模式2
网络·数据库·设计模式
猫头虎2 小时前
永久免费白嫖多个域名,一键托管Cloudflare,免费申请SSL加密证书,轻松建站、搭建线路伪装
服务器·开发语言·网络·数据库·python·网络协议·ssl
真正的醒悟3 小时前
什么是安全设备组网
服务器·数据库·php
小哈里3 小时前
【软考架构】2025H2系统架构设计师考试复习.jpg(软件架构、软件工程、数据库、Web开发、高项)
数据库·架构·系统架构·软件工程·后端开发
B站_计算机毕业设计之家3 小时前
深度学习:Yolo水果检测识别系统 深度学习算法 pyqt界面 训练集测试集 深度学习 数据库 大数据 (建议收藏)✅
数据库·人工智能·python·深度学习·算法·yolo·pyqt
wei_shuo5 小时前
全场景自动化 Replay 技术:金仓 KReplay 如何攻克数据库迁移 “难验证“ 难题
数据库·自动化·king base
葡萄城技术团队5 小时前
打破误解!MongoDB 事务隔离级别深度实测:快照隔离竟能防住 8 种异常?
数据库
Gold Steps.5 小时前
数据库正常运行但是端口变成了0?
数据库·mysql