MySQL 数据类型详解及SQL语言分类-DDL篇
在数据库开发中,选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型,包括数值类型、字符串类型和日期类型,并解释SQL语言的四大分类:DDL、DML、DQL和DCL。
1.MySQL 数据类型
SQL语言是不区分大小写的,大写小写都可以,以 ; 分隔开,注意所有符号都是英文的
(1)数值类型
无符号类型就是后面加上 unsigned

(2)字符串类型
有些类型后面需要加参数,例如:
char(10)表示10各字符大小,一旦设置好长度就是固定的,实际上我只需要1个字符大小,但是它占10个字符大小长度,不够的后面全是空格补充;
varchar(10)表示最大是10个字符长度,我输入2个字符它就占2个大小,上限是10;

(3)日期和时间类型

2.SQL 语言分类
-
DDL (Data Definition Language): 数据定义语言,用于定义数据库结构。
- CREATE: 创建数据库或表。
- ALTER: 修改数据库或表结构。
- DROP: 删除数据库或表。
-
DML (Data Manipulation Language): 数据操作语言,用于数据的增删改。
- INSERT: 插入数据。
- UPDATE: 更新数据。
- DELETE: 删除数据。
-
DQL (Data Query Language): 数据查询语言,用于查询数据。
- SELECT: 查询数据。
-
DCL (Data Control Language): 数据控制语言,用于权限控制。
- GRANT: 授予权限。
- REVOKE: 撤销权限。
3. DDL 语句示例及说明
让我们打开cmd 输入: mysql -u rooot -p 或者 直接打开 MySQL自带的命令行工具,来了解一下DDL的语法,它是针对于数据库的操作,而我们知道关系型数据库以二维表存储数据,也包含对表的操作,但是不能给表添加数据,添加数据就要用到DML
再说一遍,大小写都可以,注意空格和英文符号,还有单词别拼错了
数据库操作
- SHOW DATABASES; 显示所有数据库。
- CREATE DATABASE 数据库名; 创建一个名为
数据库名的数据库。 - USE 数据库名; 使用指定的数据库。
- SELECT DATABASE(); 返回当前使用的数据库。
- DROP DATABASE 数据库名; 删除名为
数据库名的数据库。
常用SQL语句选项
这些可以写也可以不写,可以根据需求例如:
create database if not exists itheima default charset utf8mb4;
IF EXISTS 和 IF NOT EXISTS
例如:如果一个数据库已经 存在/删除 ,我们不加这些选项 直接 创建/删除 时会报错 ,这就是为什么要加这个的原因,如果不存在就创建,如果存在就不创建, create database if not exists test;
DEFAULT CHARSET
用来设置字符集,MySQL8.0默认是 utf8
(1)show databases;
首先输入密码后,输入 show databases; 它会显示都有哪些数据库,information_schema,mysql,performance_schema,sys。这四个数据是系统默认会有的,别轻易修改里面的内容
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.39 MySQL Community Server - GPLCopyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
(2)create database +数据库名;
我们用于学习,先自己创建一个数据库,输入 create database ittest; 这会创建一个名为 ittest 的数据库
mysql> create database if not exists ittest;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ittest |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
(3)use 数据库名;
这个命令用来切换不同数据库进行操作,输入 use ittest; 出现 Database changed 说明成功切换到对 ittest 的操作
mysql> select database();
+------------+
| database() |
+------------+
| itheima |
+------------+
1 row in set (0.00 sec)mysql> use ittest;
Database changed
mysql>
(4)select database();
用来查询当前所在数据库是哪个,上面示例已经演示过了
(5)drop database 数据名;
用于删除数据库,输入 drop database ittest; 删除ittest数据库
mysql> use ittest;
Database changed
mysql> drop database ittest;
Query OK, 0 rows affected (0.01 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| itheima |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)mysql>
表操作
(1)show tables;
查看数据库的表单信息,输入 show tables; 我们可以看到有两个表(当然这两个表是我提前创建好的)
mysql> show tables;
+-------------------+
| Tables_in_itheima |
+-------------------+
| emp |
| tb_user |
+-------------------+
2 rows in set (0.00 sec)mysql>
(2)create table 表名;
创建表格,注意格式,每行用 , 逗号隔开,最后一行除外,注释用 comment '注释内容'
进行描述,末位再写 ; 分号,格式如下
CREATE TABLE tb_user (-> id INT COMMENT '编号',-> name VARCHAR(50) COMMENT '姓名',-> age INT COMMENT '年龄',-> gender VARCHAR(1) COMMENT '性别'-> ) COMMENT='用户表';
Query OK, 0 rows affected (0.03 sec)mysql> show tables;
+-------------------+
| Tables_in_itheima |
+-------------------+
| tb_user |
+-------------------+
1 row in set (0.00 sec)
(3)desc 表名;
查看表单,输入 desc tb_user; 会显示数据类型
desc tb_user;
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| name | varchar(50) | YES | | NULL | |
| age | int | YES | | NULL | |
| gender | varchar(1) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
(4)alter table 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO …;
add 用来增加信息,modify修改 数据类型,change 修改 名称和数据类型 ,drop用来删除,rename to 用来重命名表单
-- 在表 `employees` 中添加一个新的列 `email`,数据类型为 VARCHAR(100)
ALTER TABLE employees ADD email VARCHAR(100) COMMENT '员工电子邮件';-- 修改表 `employees` 中 `age` 列的数据类型为 `SMALLINT`,并添加注释
ALTER TABLE employees MODIFY age SMALLINT UNSIGNED COMMENT '员工年龄';-- 修改表 `employees` 中的列 `name`,将其名称更改为 `full_name` 并将数据类型更改为 `VARCHAR(255)`
ALTER TABLE employees CHANGE name full_name VARCHAR(255) COMMENT '员工全名';-- 删除表 `employees` 中的列 `email`
ALTER TABLE employees DROP email;-- 将表 `employees` 重命名为 `staff`
ALTER TABLE employees RENAME TO staff;
(5)truncate table 表名;
TRUNCATE TABLE 是 MySQL 中用于快速清空表数据的 SQL 语句,它会删除表中的所有记录,但保留表的结构、列、索引和约束。(其实是删除重新创建了一个)
-- 清空 `employees` 表中的所有数据
TRUNCATE TABLE employees;
总结:
我们详细了解了MySQL中的各种数据类型,包括数值类型、字符串类型和日期类型,并且对每种类型的范围和占用字节大小有了清晰的认识。此外,我们深入学习了DDL,接着我会继续更新DML,DQL,DCL的部分。
最后制作不易,给个赞吧…

相关文章:
MySQL 数据类型详解及SQL语言分类-DDL篇
在数据库开发中,选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型,包括数值类型、字符串类型和日期类型,并解释SQL语言的四大分类:DDL、DML、DQL和DCL。 1.MySQL 数据类型 SQL语言是不区分大…...
Leet Code 128-最长连续序列【Java】【哈希法】
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出:4 …...
网络协议(概念版)
通讯:首先要得知对方的IP地址。 最终是根据MAC地址(网卡地址),输送数据到网卡,被网卡接收。 如果网卡发现数据的目标MAC地址是自己,就会将数据传递给上一层进行处理;如果目标MAC地址不是自己,…...
Pulsar官方文档学习笔记——消息机制
pulsar 基于3.x最新官方文档学习记录 概念与架构 典型的推送订阅模式。生产者发送消息,消费者订阅topic消费信息并回应ACK。订阅创建后,Pulsar会保留所有消息。仅消息被所有订阅 成功消费了才会丢弃(可以配置消息保留机制保留一定量&#…...
PyTorch--残差网络(ResNet)在CIFAR-10数据集进行图像分类
完整代码 import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms# Device configuration device torch.device(cuda if torch.cuda.is_available() else cpu)# Hyper-parameters num_epochs 80 batch_size 100 learning_rate…...
ETAS工具链自动化实战指南<一>
----自动化不仅是一种技术,更是一种思维方式,它将帮助我们在快节奏的工作环境中保持领先! 目录 往期推荐 场景一:SWC 之间 port自动连接 命令示例 参数说明 场景二:SWC与ECU 自动映射 命令示例 参数说明 场景三&…...
疫情期间我面试了13家企业软件测试岗位,一些面试题整理
项目的测试流程 拿到需求文档后,写测试用例 审核测试用例 等待开发包 部署测试环境 冒烟测试(网页架构图) 页面初始化测试(查看数据库中的数据内容和页面展示的内容是否一致,并且是否按照某些顺序排列)…...
PINCE——Linux 原生游戏内存修改器,一款替代 Cheat Engine 的强大游戏修改器,Linux 游戏玩家必备神器!
PINCE——Linux 原生游戏内存修改器,一款替代 Cheat Engine 的强大游戏修改器,Linux 游戏玩家必备神器! PINCE 是 GNU Project Debugger(GDB) 的前端/反向工程工具,常用作程序调试器,主要用于游戏领域,修改…...
为IntelliJ IDEA安装插件
安装插件 插件是开发工具的扩展程序,通常由第三方提供,当安装了插件后,原开发工作的菜单、按钮等开发环境可能会发生变化,例如出现了新的菜单项,或出现了新的按钮,甚至一些全新的编码方式,通常…...
ES6 Promise
ES6 Promise 对象 一、概述 是异步编程的一种解决方案。 从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。 Promise 状态 状态的特点 Promise 异步操作有三种状态:pending(进行中)、fulfilled(…...
html+css 实现hover 凹陷按钮
前言:哈喽,大家好,今天给大家分享html+css 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、原理解析💡1.这是一个,hover时凹陷的效果。每个按钮是一个button…...
什么是负载均衡?负载均衡器如何运作?
往期文章 负载均衡器:LVS、Nginx、HAproxy如何选择? 目录 往期文章什么是负载均衡?为什么需要负载均衡?负载均衡工作原理?静态负载均衡算法动态负载均衡算法 参考 什么是负载均衡? 负载均衡是一种网络技术…...
(Arxiv-2023)潜在一致性模型:通过少步推理合成高分辨率图像
潜在一致性模型:通过少步推理合成高分辨率图像 Paper Title: Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference Paper是清华发表在Arxiv 2023的工作 Paper地址 Code地址 ABSTRACT 潜在扩散模型 (LDM) 在合成高分辨率图像方…...
Unity与UE,哪种游戏引擎适合你?
PlayStation vs Xbox,Mario vs Sonic,Unreal vs Unity?无论是游戏主机、角色还是游戏引擎,人们总是热衷于捍卫他们在游戏行业中的偏爱。 专注于游戏引擎,Unity和Unreal Engine(简称UE4)是目前市…...
这五本大模型书籍,把大模型讲的非常详细,收藏我这一篇就够了
当然可以。在当前的大模型时代,随着自然语言处理(NLP)技术的迅速发展,出现了许多优秀的书籍来帮助读者理解这些复杂的技术。以下是几本值得推荐的大模型书籍,它们涵盖了从基础理论到高级实践的内容,可以帮助…...
伊朗通过 ChatGPT 试图影响美国大选, OpenAI 封禁多个账户|TodayAI
OpenAI 近日宣布,他们已经封禁了一系列与伊朗影响行动有关的 ChatGPT 账户,这些账户涉嫌利用该 AI 工具生成并传播与美国总统选举、以色列 – 哈马斯战争以及奥运会等相关的内容。 OpenAI 表示,这些账户与一个名为 “Storm-2035” 的秘密伊朗…...
windows系统如何走后面之windows系统隐藏账户
系统隐藏账户是一种最为简单有效的权限维持方式,其做法就是让攻击者创建一个新的具有管理员权限的隐藏账户,因为是隐藏账户,所以防守方是无法通过控制面板或命令行看到这个账户的。 自然我们需要一些前提条件,比如说有一个网站&am…...
Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy
Elasticsearch(ES)(版本7.x)数据更新后刷新策略RefreshPolicy 介绍 ES数据写入后,默认1s后才会被搜索到(refresh_interval为1); 这样可能是考虑到性能问题,毕竟实时IO 消耗较多资源 造成的问题 例如一个索引现在有…...
【运维】从一个git库迁移到另一个库
工作目录: /home/java/hosts 10.60.100.194 脚本 hosts / hostsShell GitLab (gbcom.com.cn) 核心代码...
and design vue表格列宽度拖拽,vue-draggable-resizable插件使用
and design vue2版的table表格不能拖拽列的宽度,通过vue-draggable-resizable插件实现 我用的是and design 1.7.8的版本,先下插件 yarn add vue-draggable-resizable2.1.0我这版本的and design用最新3.0.0以上的插件会有问题,实现不了效果&a…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
