当前位置: 首页 > article >正文

SQL语句(一)—— DDL

目录

一、SQL 基础知识

(一)SQL 通用语法

(二)SQL 分类

二、DDL —— 数据库操作

1、查询所有数据库

2、查询当前数据库

3、创建数据库

4、删除数据库

5、切换数据库

三、DDL —— 表操作

(一)查询创建

1、查询当前数据库所有表

2、查看指定表结构

3、查询指定表的建表语句

4、创建表结构

(二)数据类型

1、数值类型

2、字符串类型

3、日期时间类型

(三)修改

1、添加字段

2、修改数据类型

3、修改字段名和字段类型

4、删除字段

5、修改表名

(四)删除

1、删除表 

2、删除指定表,并重新创建表


        SQL 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

一、SQL 基础知识

(一)SQL 通用语法

        在学习具体的SQL语句之前,先来了解一下SQL语言的通用语法。

SQL语句可以单行或多行书写,以分号结尾

SQL语句可以使用空格/缩进来增强语句的可读性。

MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

④ 注释:单行注释为 “-- 注释内容” 或 “# 注释内容”;多行注释为 “/* 注释内容 */”

(二)SQL 分类

        SQL语言,根据其功能,主要分为四类:DDL、DML、DQL、DCL。

        1、DDL:全称为 Data Definition Language,即数据定义语言。用来定义数据库对象(数据库、表、字段)

        2、DML:全称为 Data Manipulation Language,即数据操作语言。用来对数据库表中的数据进行增删改

        3、DQL:全称为Data Query Language,即数据查询语言。用来查询数据库中表的记录

        4、DCL:全称为Data Control Language,即数据控制语言。用来创建数据库用户控制数据库的访问权限

二、DDL —— 数据库操作

1、查询所有数据库

show databases;

2、查询当前数据库

select datebase();

3、创建数据库

create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;

        这条指令的基本形式是 create database 数据库名,方括号中的部分可加可不加。

        if not exists:同一个数据库服务器中,不能创建两个名称相同的数据库,否则会报错。可以通过 if not exists 参数来解决这个问题,数据库不存在,则创建该数据库,如果存在,则不创建。

        default charest 字符集:如果不指定,则使用默认的字符集utf8mb4,建议使用这个。

create database my123;

4、删除数据库

drop database [ if exists ] 数据库名 ;

        如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

drop database my123;

5、切换数据库

use 数据库名 ;

        我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。 比如,切换到itcast数据库,执行如下SQL:

use itcast;

三、DDL —— 表操作

(一)查询创建
1、查询当前数据库所有表

show tables;

        比如,我们可以切换到 sys 这个系统数据库,并查看系统数据库中的所有表结构。

use sys;
show tables;

2、查看指定表结构

desc 表名;

        通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为NULL,是否存在默认值等信息。

3、查询指定表的建表语句

show create table 表名 ;

        通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询到,因为这部分是数据库的默认值,如:存储引擎、字符集等。

4、创建表结构

CREATE TABLE 表名(
    字段1 字段1类型 [COMMENT 字段1注释 ],
    字段2 字段2类型 [COMMENT 字段2注释 ],
    字段3 字段3类型 [COMMENT 字段3注释 ],
    ......
    字段n 字段n类型 [COMMENT 字段n注释 ] 
) [ COMMENT 表注释 ] ; 

        注意:[...] 内为可选参数,最后一个字段后面没有逗号,因为这就是一条SQL语句,一条SQL语句只有一个逗号。

        比如,我们创建一张表 tb_user,对应的结构如下,那么建表语句为:

create table tb_user(id int comment '编号',name varchar(50) comment '姓名',age int comment '年龄',gender varchar(1) comment '性别'
) comment '用户表';
(二)数据类型

        在上述的建表语句中,我们在指定字段的数据类型时,用到了int,varchar,那么在MySQL中除了以上的数据类型,还有哪些常见的数据类型呢?

        接下来,我们详细介绍一下MySQL的数据类型。 MySQL中的数据类型有很多,主要分为三类:数值类型字符串类型日期时间类型

1、数值类型

        对表格进行归纳,前 5 个数据类型 tinyint、smallint、mediumint、int/integer、bigint 表示整型数据仅仅是取值范围不同。接下来 2 个数据类型 float、double 表示浮点型数据

        最后一个 decimal 是精确的浮点型数据,其中的 M 表示小数的位数有多少位D 表示小数点后面有多少位。例如,decimal(10,2),即小数的整体位数是 10 位,小数点后面有 2 位。

        同时,float 与 double 也可以对位数进行规定,如double(4,1),但是我们常用的精确的浮点型数据类型还是decimal。

        同时如果希望是无符号数,则可在数据类型后面加上 unsigned,如 age tinyint unsigned。

2、字符串类型

        char 与 varchar 都可以描述字符串。char 表示定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关,例如char(10)。而 varchar 表示变长字符串,指定的长度为最大占用长度,例如varchar(10)。

        char 中未占用的字符,会用空格来补位;varchar 则是存多少个字符就占用多少个空间。即varchar在规定具体长度的同时,还需要根据当前字符串修改长度,所以相对而言char的性能会更高一些,用空间换时间

        还有两个就是blob与text,只是前缀的不同导致长度的不同,其前缀为tiny、无、medium、long。blob中存储的文本形式是二进制形式的、而 text 中的就是文本

3、日期时间类型

--例如: 
-- 1). 生日字段 birthdaybirthday date-- 2). 创建时间 createtimecreatetime datetime
(三)修改
1、添加字段

alter table 表名 add 字段名 类型 [ comment 注释 ] [ 约束 ];

       其中 “alter table 表名” 是选中具体的表,“add 字段名 类型” 是具体的操作,“comment 注释” 是给代码添加注释。代码中方括号的部分可以省略。

        添加字段的意思,就是在一张表中,再加一列如为 emp 表增加一个新的字段”昵称”为 nickname,类型为varchar(20)。代码与执行结果如下:

alter table emp add nickname varchar(20) comment '昵称';

2、修改数据类型

alter table 表名 modify 字段名 新数据类型; 

3、修改字段名和字段类型

alter table 表名 change 旧字段名 新字段名 类型 (长度) [ comment 注释 ] [ 约束 ]; 

        将 emp 表的 nickname 字段修改为 username,类型为varchar(30)。代码与执行结果如下:

alter table emp change nickname username varchar(30) comment '昵称';

4、删除字段

alter table 表名 drop 字段名;

        将 emp 表的字段 username 删除,代码与执行结果如下:

alter table emp drop username;

5、修改表名

alter table 表名 rename to 新表名;

        将emp表的表名修改为 employee,具体代码如下:

alter table emp rename to employee;
(四)删除
1、删除表 

drop table [ if exists ] 表名;

        可选项 if exists代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不加该参数项,删除一张不存在的表,执行将会报错)。

        如果tb_user表存在,则删除tb_user表,具体代码如下:

drop table if exists tb_user;
2、删除指定表,并重新创建表

truncate table 表名;

        注意: 在删除表的时候,表中的全部数据也都会被删除;这个操作就是将这张表进行重置

相关文章:

SQL语句(一)—— DDL

目录 一、SQL 基础知识 (一)SQL 通用语法 (二)SQL 分类 二、DDL —— 数据库操作 1、查询所有数据库 2、查询当前数据库 3、创建数据库 4、删除数据库 5、切换数据库 三、DDL —— 表操作 (一)查…...

硬件负载均衡:让服务像“牛顿钟”一样稳!

硬件负载均衡:让服务像“牛顿钟”一样稳! 大家好,我是 Echo_Wish,今天要聊聊提高服务可用性的一大利器——硬件负载均衡。如果你是运维领域的一员,肯定对“负载均衡”这个词耳熟能详。然而,很多朋友一提到硬件负载均衡,脑袋可能就卡住了:这是啥?跟软件负载均衡有啥区…...

Husky目标跟踪

1.0设备清单 幻影峡谷、适配器 摄像头及数据线、显卡欺骗器 外接屏幕、键盘鼠标 Husky底盘、便携显示屏、键盘鼠标 移动电源 1.1连线 插排——移动电源幻影峡谷——适配器——插排摄像头——幻影峡谷(摄像头固定在机械臂前方的底盘上)键盘鼠标显示器…...

高通camx IOVA内存不足,导致10-15x持续拍照后,点击拍照键定屏无反应,过一会相机闪退

定屏闪退问题分析思路: 定屏问题如果是相机问题,一般会出现返帧,导致预览卡死。当然还有其他情况,我们先看返帧情况,发现request和result开始都正常,到12:53:05.443038就没有返帧了,定屏了。往…...

Python----机器学习(线性回归:自求导的方法实现)

一、线性回归方程 目标: 线性回归的目标是找到最佳的系数来使模型与观察到的数据尽可能拟合。 应用: 预测:给定自变量的值,预测因变量的值。 回归分析:确定自变量对因变量的影响程度 线性回归是统计学和机器学习中最简…...

Parasoft C++Test软件单元测试_操作指南

系列文章目录 Parasoft C++Test软件静态分析:操作指南(编码规范、质量度量)、常见问题及处理 Parasoft C++Test软件单元测试:操作指南、实例讲解、常见问题及处理 Parasoft C++Test软件集成测试:操作指南、实例讲解、常见问题及处理 进阶扩展:自动生成静态分析文档、自动…...

QT之QML(简单示例)

需求一:点击按钮弹出菜单,并且自定义菜单弹出位置。 mouse.x 和 mouse.y 获取的是相对于 MouseArea(在这个例子中是 Button)左上角的局部坐标。如果你想要在鼠标点击位置显示 Menu,你需要将这个局部坐标转换为相对于应…...

【自动化运维】Python 的安装和使用

Python 的安装和使用 文章目录 Python 的安装和使用一、Linux环境安装Python1.1、设置Yum仓库1.2、安装依赖包1.3、编译Python1.3.1、解压Python压缩包1.3.2、配置Python1.3.3、编译及安装1.3.4、链接软连接 1.4、测试Python3运行1.5、设置国内pip更新源1.6、更新pip版本&#…...

Springcache+xxljob实现定时刷新缓存

目录 SpringCache详解 SpringCache概述 核心原理 接口抽象与多态 AOP动态代理 核心注解以及使用 公共属性 cacheNames KeyGenerator:key生成器 key condition:缓存的条件,对入参进行判断 注解 xxl-job详解 SpringcacheRedis实现…...

线性规划建模工具 PuLP 学习指南

PuLP 是一个用 Python 编写的线性规划建模工具,它提供了直观的 API 来定义和求解各种优化问题。以下是学习 PuLP 的全面指南: 1. 安装 PuLP pip install pulp2. 基本概念 问题类型 LpProblem: 表示优化问题LpVariable: 表示决策变量LpConstraint: 表…...

vue2拖拉拽做个模拟公式工具

1. 成图 2. 介绍 就是简单拖拉拽来做个规则运算器&#xff0c;具体运算规则、校验规则自己加。 3. 代码 HTML代码 <template><div class"red-cont"><div class"red-top"><divclass"red-top-left"><div class&quo…...

两点与圆(异或神通)

给出 n 个圆&#xff0c;保证任意两个圆都不相交且不相切。 然后给出两个点 (x1​,y1​),(x2​,y2​)&#xff0c;保证均不在某个圆上。现在要从 (x1​,y1​)→(x2​,y2​) 画条曲线&#xff0c;问这条曲线最少穿过多少次圆的边界&#xff1f; 输入格式 第一行为一个整数 n&…...

Windows查重工具,强烈推荐大家收藏!

我大家在用电脑的时候&#xff0c;是不是发现用得越久&#xff0c;电脑里的软件和文件就越多&#xff1f; 今天我给大家带来的这两款重复文件查找神器&#xff0c;简直就是电脑里的“清洁小能手”&#xff0c;能帮你把那些重复的文件和文件夹找出来。 Easy DupLicate Finder 重…...

使用Python快速接入DeepSeek API的步骤指南

使用Python快速接入DeepSeek API的步骤指南 1. 前期准备 注册DeepSeek账号 访问DeepSeek官网注册账号 完成邮箱验证等认证流程 获取API密钥 登录后进入控制台 → API管理 创建新的API Key并妥善保存 安装必要库 pip install requests # 可选&#xff1a;处理复杂场景 pip…...

使用python完成手写数字识别

入门图像识别的第一个案例,看到好多小伙伴分享,也把自己当初的思路捋捋,写成一篇博客,作为记录和分享,也欢迎各位交流讨论。 实现思路 数据集:MNIST(包含60,000个训练样本和10,000个测试样本) 深度学习框架:Keras(基于TensorFlow) 模型架构:卷积神经网络(CNN) 实…...

OpenLayers:如何控制Overlay的层级?

我最近在使用Overlay的时候遇到了一个问题&#xff0c;我向地图中添加了两种不同的Overlay&#xff08;下图中的蓝色标牌和粉色标牌&#xff09;&#xff0c;我希望粉色标牌可以显示在最上层&#xff0c;可偏偏蓝色标牌却将其遮挡住了。于是我对Overlay的层级开始起了兴趣&…...

清晰易懂的 Flutter 卸载和清理教程

以下是为 Flutter 彻底卸载与清理教程&#xff0c;覆盖 Windows、macOS、Linux 系统&#xff0c;步骤清晰无残留&#xff0c;确保完全删除 Flutter SDK、依赖工具及 IDE 配置。 一、通用步骤&#xff1a;确认 Flutter 安装方式 Flutter 通常通过以下方式安装&#xff1a; 手动…...

docker-compose部署以及常用命令

一&#xff1a;常用命令 1.docker compose restart//重启 2.docker compose down// 停止 3.docker compose ps//列出 4.sudo docker-compose up -d 启动并且在后台运行 二:yaml配置文件 version: 3.5 services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:…...

《Golang高性能网络编程:构建低延迟服务器应用》

在本文中&#xff0c;我们将深入探讨Golang高性能网络编程&#xff0c;帮助您构建低延迟服务器应用。我们将介绍Golang的网络编程特性、优化技巧和实际案例&#xff0c;让您更好地理解和应用Golang在网络编程领域的优势。 高性能网络编程简介 什么是Golang高性能网络编程 高性能…...

非对称加密技术深度解析:从数学基础到工程实践

一、密码学范式革命&#xff1a;从对称到非对称 1.1 对称加密的局限性 传统对称加密算法&#xff08;如AES、DES&#xff09;采用共享密钥机制&#xff0c;加解密使用相同密钥。虽然计算效率优异&#xff08;AES-256加密速度可达800MB/s&#xff09;&#xff0c;但在密钥分发环…...

Ubuntu 22.04/24.04 配置apt 源

前言 在 Ubuntu 系统部署与运维中&#xff0c;​APT 源配置是保障软件安装效率与系统稳定性的核心环节。然而&#xff0c;随着 Ubuntu 24.04 LTS&#xff08;Noble&#xff09;的发布&#xff0c;其 APT 源配置格式与 22.04 LTS&#xff08;Jammy&#xff09;存在显著差异。 …...

数据结构C语言练习(设计循环队列)

一、循环队列简介 循环队列是一种线性数据结构&#xff0c;基于 FIFO&#xff08;先进先出&#xff09;原则&#xff0c;将队尾连接到队首形成循环。其核心优势是能复用队列之前用过的空间&#xff0c;避免普通队列 “假溢出” 问题。实现时&#xff0c;通常申请 k1 大小的数组…...

vscode代码片段的设置与使用

在 Visual Studio Code (VS Code) 中&#xff0c;可以通过自定义**代码片段&#xff08;Snippets&#xff09;**快速插入常用代码模板。以下是详细设置步骤&#xff1a; 步骤 1&#xff1a;打开代码片段设置 按下快捷键 Ctrl Shift P&#xff08;Windows/Linux&#xff09;或…...

在Vue中如何高效管理组件状态

在Vue中高效管理组件状态&#xff0c;可以采用以下几种策略&#xff1a; 使用Vuex进行状态管理&#xff1a; 对于复杂的应用&#xff0c;使用Vuex是一个非常有效的状态管理方案。Vuex提供了一个集中存储管理所有组件的状态&#xff0c;并以响应式的方式更新视图。它包括以下几个…...

uniapp -- 列表垂直方向拖拽drag组件

背景 需要在小程序中实现拖拽排序功能,所以就用到了m-drag拖拽组件,在开发的过程中,发现该组件在特殊的场景下会有些问题,并对其进行了拓展。 效果 组件代码 <template><!-- 创建一个垂直滚动视图,类名为m-drag --><scroll...

一款非常小的软件,操作起来非常丝滑!

今天我想给大家分享一款超级实用的小软件&#xff0c;它是一款电脑上用的倒计时和关机助手。 关机助手 帮你自动关机 这款关机助手特别小巧&#xff0c;完全不需要安装&#xff0c;文件大小才60KB&#xff0c;比一个小小的文件还小。你只需要把它下载下来&#xff0c;双击打开…...

FrameWork基础案例解析(四)

文章目录 单独拉取framework开机与开机动画横屏Android.mk语法单独编译SDKmake 忽略warning单独修改和编译Camera2单独编译Launcher3Android Studio 导入、修改、编译Settings导入 Android Studio 导入、修改、编译Launcher3android 开机默认进入指定Launcher植入自己的apk到系…...

嵌入式电量与功耗优化:从理论到实战

目录 一、为什么功耗是个大问题? 电池寿命的命门 效率决定竞争力 运营成本的隐形杀手 环保不是空话 二、功耗从哪来?硬件软件一个都跑不了 硬件:功耗的物理根源 处理器:耗电主力军 存储器:偷偷摸摸的耗电鬼 电源管理单元(PMU):幕后功臣也有损耗 时钟系统:滴…...

通过 C# 提取PDF文档中的图片

当 PDF 文件中包含有价值的图片&#xff0c;如艺术画作、设计素材、报告图表等&#xff0c;提取图片可以将这些图像资源进行单独保存&#xff0c;方便后续在不同的项目中使用&#xff0c;避免每次都要从 PDF 中查找。本文将介绍如何使用C#通过代码从PDF文档中提取图片&#xff…...

国标GB28181视频监控平台EasyCVR保驾护航休闲娱乐“九小场所”安全运营

凭借降低人力资源、节约物资成本的优势&#xff0c;在多个场景得到广泛应用。如今&#xff0c;棋牌室、洗浴中心、酒店这类人员频繁流动和密集的场所&#xff0c;已成为安全管理的重点。​ 尽管部分棋牌室已安装了监控设备&#xff0c;但是设备功能单一&#xff0c;只能实现一…...