1_1、mysql基础--DDL

本文详细介绍了MySQL的DDL(Data Definition Language),包括对数据库和数据表的增删改查操作。重点讲解了数值类型如INT(11)、DECIMAL(M,D)的含义,以及字符串类型VARCHAR(20)和日期类型的使用。此外,还讨论了NULL值在MySQL中的特殊性。" 113623515,4906091,Linux cgroup深入解析:资源限制与内存管理,"['Linux', 'Docker', '系统管理', '资源调度']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DDL

DDL(Data Definition Language),数据定义语言,该部分语言用于对数据库、数据表的操作(不包括对表中数据记录的操作),具体包括:

  • 对数据库的操作
  • 对数据表的操作

二、 对数据库的操作–【增/删/改/查/切换】

操作DDL SQL
创建数据库create database [if not exists] mydb1 [charset=utf8mb4]
删除数据库drop database [if exists] mydb1;
修改数据库编码alter database mydb1 character set utf8mb4;
查看所有的数据库show databases;
切换数据库(选择要操作的库)use mydb1;

示例–创建数据库并指定字符集和排序规则

CREATE DATABASE IF NOT EXISTS db1
CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

1、对于一些需要占据4bytes的文字,mysql的utf8是不支持的,所以字符集一般选utf8mb4;

2、COLLATE用于指定每个国家对应语言的排序规则,是和数据编码(CHARSET)相关的,影响字符类型(VARCHAR,CHAR,TEXT等)的比较或排序,utf8mb4默认对应utf8mb4_general_ci;

3、COLLATE中的_ci字样,表示大小写无关,也就是说"A"和"a"在排序和比较的时候是一视同仁的。selection * from table1 where field1="a"同样可以把field1为"A"的值选出来。对于那些_cs后缀的COLLATE,表示大小写敏感的。

三、对数据表的操作–【增/删/改/查】

操作DDL-SQL
create table [if not exists] 表名 (
字段名1 类型[(宽度)] [约束条件] [comment ‘字段说明’],
字段名2 类型[(宽度)] [约束条件] [comment ‘字段说明’],
字段名3 类型[(宽度)] [约束条件] [comment ‘字段说明’]
)[表的一些设置];
DROP TABLE 表名;
查看所有的表SHOW TABLES;
查看表结构DESC 表名;
查看建表语句SHOW CREATE TABLE table_name;
添加列alter table 表名 add 列名 类型(长度) [约束];
删除列alter table 表名 drop 列名;
修改列alter table 表名 change 旧列名 新列名 类型(长度) 约束;
修改表名rename table 表名 to 新表名;

示例–创建表

CREATE TABLE `t_put_in_roi_ad_plan`(
`id` bigint(20) UNSIGNED PRIMARY KEY,
`channel` bigint(20) UNSIGNED NOT NULL COMMENT '使用channel区分巨量引擎、广点通等',
`account` bigint(20) UNSIGNED NOT NULL COMMENT '广告账户',
`ad_id`   bigint(20) UNSIGNED NOT NULL COMMENT '广告计划',
`group_id` INT(11) UNSIGNED NOT NULL COMMENT '广告分组:0\1\2\3代表A1\A2\B1\b2',
`stop_count` bigint(20) UNSIGNED COMMENT '小于ROI阈值次数',
`sub_channel` bigint(20) UNSIGNED NOT NULL COMMENT '子渠道',
`status` TINYINT(4) NOT NULL DEFAULT 1 COMMENT '计划开启/关闭:0-关闭,1-开启,关闭时不计算ROI、不进行状态操作,但参与判断是否为新的adId分组',
`is_stoped` TINYINT(4) NOT NULL DEFAULT 0 COMMENT '暂停标记:0-未暂停,1-已暂停',
`is_deleted` TINYINT(4) NOT NULL DEFAULT 0 COMMENT '删除标记:0-未删除,1-已删除',
`stoped_time` datetime NULL COMMENT '暂停时间,用于-暂停超过72小时删除广告计划的时间对比',
`created_by` VARCHAR(255),
`created_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modified_by` VARCHAR(255),
`modified_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
INDEX (`channel`,`account`),
UNIQUE INDEX(`channel`,`account`,`ad_id`,`sub_channel`)
) COMMENT '投放ROI广告计划表';

3.1 常用数据类型

3.1.1 数值类型

类型大小范围(有符号)范围(无符号)用途
TINYINT1 byte(-128,127)(0,255)小整数值
SMALLINT2 bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 bytes(-3.402 823 466 E+38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
DOUBLE8 bytes(-1.797 693 134 862 315 7 E+308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
DECIMALDECIMAL(M,D)依赖于M和D的值依赖于M和D的值小数值
3.1.1.1 int(11)代表什么意思?

(1)11表示数字的显示宽度;
(2)显示宽度并不影响可以存储在该列中的最大值。INT(5) 和 INT(11)可以存储相同的最大值。哪怕设置成 INT(20) 并不意味着将能够存储20位数字(BIGINT),该列还是只能存储INT的最大值;
(3)当列设置为UNSIGNED ZEROFILL时,INT(11)才有意义,其表示的意思为如果要存储的数字少于11个字符,则这些数字将在左侧补零。(注意:ZEROFILL默认的列为无符号,因此不能存储负数)。

int(11)使用举例

1、表结构:
CREATE TABLE product(
price1 INT(11) UNSIGNED,
price2 INT(11) UNSIGNED ZEROFILL,
price3 INT(20) UNSIGNED ZEROFILL
);

2、插入数据及结果

  • 场景1:INSERT INTO product VALUES(1,1,1);

在这里插入图片描述

  • 场景2:INSERT INTO product VALUES(2,-2,2);

在这里插入图片描述

  • 场景3:INSERT INTO product VALUES(1,1,111111111111);

在这里插入图片描述

3.1.1.2 DECIMAL(M,D)的说明

DECIMAL底层使用字符串进行存储,所以小数位最精确,浮点数一般都用DECIMAL类型。

(DOUBLE、FLOAT因为涉及到小数位数截断,造成四舍五入,所以不精确)

3.1.2 字符串类型

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据
3.1.2.1 VARCHAR(20)的说明

1、表示可以存储20个字符,1个汉字或1个数字/字母都表示1个字符;

2、varchar是一种可变长度的类型,当插入的长度小于定义长度时,插入多长就存多长,varchar比char会更加节省空间;

3、char是一种固定长度的类型,无论储存的数据有多少都会固定长度,如果插入的长度小于定义长度,不足的部分用隐藏空格填充;但char查找效率会很高。

3.1.3 日期类型

3.1.4 NULL

在mysql中,null和任何值都不相同,包括他自身(即null不等于null)。所以数据表中,某列即使有唯一约束,仍可以插入null值。

1、从开发者视角学习MYSQl系列文章:https://blog.youkuaiyun.com/maoxuemin/article/details/123523457
2、快速问答入口:https://gitee.com/wendakuai/introducton/wikis/question

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值