SQL语句(一)—— DDL

news2025/4/7 23:44:32

目录

一、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). 生日字段 birthday
 birthday date
 
-- 2). 创建时间 createtime
 createtime 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 表名;

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328267.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Husky目标跟踪

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

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

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

Springcache+xxljob实现定时刷新缓存

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

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

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

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

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

使用python完成手写数字识别

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

OpenLayers:如何控制Overlay的层级?

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

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

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

数据结构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;或…

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到系…

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

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

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

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

GoLand 2024.3 中文 GO语言开发工具

GoLand 2024.3 中文 GO语言开发工具 文章目录 GoLand 2024.3 中文 GO语言开发工具一、介绍二、效果三、下载 一、介绍 JetBrains GoLand 2024 &#xff0c;是一款GO语言开发工具&#xff0c;全行代码补全&#xff1a;能使用本地运行的上下文感知深度学习模型&#xff0c;可以自…

CentOS 7 强制升级Docker 24.x终极指南(解决MySQL8镜像兼容性问题)

CentOS 7 强制升级Docker 24.x终极指南&#xff08;解决MySQL8镜像兼容性问题&#xff09; 旧版本&#xff1a; 新版本docker&#xff1a; 一、问题背景与方案选型 1.1 典型报错分析 The designated data directory /var/lib/mysql/ is unusable根本原因&#xff1a;旧版…

【区块链安全 | 第十九篇】类型之映射类型

文章目录 映射类型可迭代映射 映射类型 映射类型使用语法 mapping(KeyType KeyName? > ValueType ValueName?)&#xff0c;映射类型的变量声明使用语法 mapping(KeyType KeyName? > ValueType ValueName?) VariableName。 KeyType 可以是任何内置值类型、bytes、st…

Flask与 FastAPI 对比:哪个更适合你的 Web 开发?

在开发 Web 应用时&#xff0c;Python 中有许多流行的 Web 框架可以选择&#xff0c;其中 Flask 和 FastAPI 是两款广受欢迎的框架。它们各有特色&#xff0c;适用于不同的应用场景。本文将从多个角度对比这两个框架&#xff0c;帮助你更好地选择适合的框架来构建你的 Web 应用…

QT 中的元对象系统(五):QMetaObject::invokeMethod的使用和实现原理

目录 1.简介 2.原理概述 3.实现分析 3.1.通过方法名调用方法的实现分析 3.2.通过可调用对象调用方法的实现分析 4.使用场景 5.总结 1.简介 QMetaObject::invokeMethod 是 Qt 框架中的一个静态方法&#xff0c;用于在运行时调用对象的成员函数。这个方法提供了一种动态调…