【数据库原理 | MySQL】一文打通 DDL语句

news2024/11/26 1:59:15

在这里插入图片描述

🤵‍♂️ 个人主页: @计算机魔术师
👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。

书接上文介绍了数据库的前世今生,本文讲解SQL语句中的DDL语句

文章目录

  • 二、SQL
    • 2.1 SQL通用语法
    • 2.2 SQL的分类
  • 三、 SQL之DDL
    • 3.1 数据库操作
      • 1)查询所有数据库
      • 2) 查询当前数据库(select等用法)
      • 3)查询创建数据库的建库语句
      • 4)创建数据库
      • 5)删除数据库
      • 6)切换数据库
    • 3.2 表操作
      • 3.2.1 查询创建
        • 1)查询数据库所有表
        • 2)查看表结构
        • 3) 查询指定表的建表语句
        • 4)创建表结构
      • 3.2.2 表字段的数据类型
        • 1) 数值类型
        • 2)字符类型
        • 3) 时间类型
      • 3.2.3 表操作-修改
      • 3.2.3 表操作-删除
  • 个人总结(选读*)

二、SQL

SQL编程语言是对关系型数据库操作的一套统一标准的语言,全程:Structed Query Language,结构化查询语言

2.1 SQL通用语法

  1. SQL语句可以单行书写,也可以多行书写,以分号结尾
  2. SQL语句可以用空格/缩进来增强语句可读性
  3. MySQL数据库的语句不分大小写,使用关键字建议使用大写
  4. 注释:
    单行注释 : -- #
    多行注释 /* */

2.2 SQL的分类

我们对SQL功能进行分类,主要分为四类

  • DDL(Defined) DML(Manipulation) DQL(Query) DCL(Contrl)
分类全称作用
DDLData Defined Language数据库定义语言,用于定义数据库对象(数据库,表,数据字段)
DMLData Manipulation Language数据库操作语言,对数据库表中数据进行增删改查
DQLData Query Language数据库查询语言,用于查询数据库表的记录
DCLData Contrl Language数据库控制语言,用来创建数据库用户,控制数据库的访问权限。

三、 SQL之DDL

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 。

3.1 数据库操作

1)查询所有数据库

show databases;

在这里插入图片描述

2) 查询当前数据库(select等用法)

select 在其他编程语言类似于 print write 可以用于打印字符串、数字、数学表达式结果等

  • 查看MySQL版本
select version();  # version() 函数 返回版本号,select输出该字符串

在这里插入图片描述

  • 输出当前时间
select now();  # now() 

在这里插入图片描述

  • 查看当前数据库
select database();  # database() 不接受任何参数,返回默认或当前数据库的名称,没有则返回  NULL

在这里插入图片描述

关于select更多操作(点击链接跳转)

3)查询创建数据库的建库语句

该语句一般很少用到

show create table 表名;

在这里插入图片描述

4)创建数据库

create database [if not exists] 数据库名 [default charset utf8] [collate 排序规则];
  • 案例: 创建一个数据库 命名为: myDatabase, 使用字符集 utf8mb4(这里的utf8mb4是四个字节的因为utf8中文是三个字节,且不能敲utf-8mb4,会报错)

由于创建同名数据库会报错,我们往往添加 if not exists 语句判断是否以及存在同名

  • 实现代码
create database if not exists myDatabase charset utf8mb4

在这里插入图片描述

5)删除数据库

drop database [if exists] 数据库名;

在这里插入图片描述

6)切换数据库

如果想要操作一个数据库中的表,则需要切换到该数据库,不然是无法操作的

use 数据库名;

可以看到当前数据库成功切换
在这里插入图片描述

3.2 表操作

3.2.1 查询创建

1)查询数据库所有表

show tables;

我们切换到系统数据库sys查看表
在这里插入图片描述

2)查看表结构

descent(n. 下降)

desc table 表名;

作用:

查看表的字段字段类型是否可为NULL是否默认存在默认值

在这里插入图片描述

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

show create table 表名;

作用(主要是查看建表语句):

部分参数建表时并未指定也能查询到,如存贮引擎,数据集等(因为这些都是数据库的默认值)
在这里插入图片描述

4)创建表结构

一个二维表基本结构就是

字段(相当于表格中的列头)字段类型

注意!!最后一个字段没有逗号

create table 表名(
	字段1 字段1类型 [comment 字段注释],
	字段2 字段2类型 [comment 字段注释],
	字段3 字段3类型 [comment 字段注释],
	字段4 字段4类型 [comment 字段注释]...
	字段n 字段n类型 [comment 字段注释]
)[comment 表的注释]

例如:建立如下表
在这里插入图片描述

  • 代码
create table  rivers_and_lakes(
id int comment "id",
name varchar(10) comment "name",
age tinyint comment  "age",
gender char(1) comment "gender"
)comment "江湖";

实际中在表中,很少用男,女来存贮性别,一般都是用0,1,节省内存。
在这里插入图片描述

3.2.2 表字段的数据类型

在上述创建表语句,我们用到了varchar,tinyint等,那么表究竟有哪些数据类型呢?

1) 数值类型

类型字节大小有符号(signed)范围无符号(unsigned)范围描述
tinyInt1bytes-128~1270~255小整数值
smallInt2bytes-32768~327670~65535大整数值
mediumInt3bytes-8388608,83886070,16777215大整数值
int/integer4bytes-2147483648, 21474836470,4294967295大整数值
bigInt8bytes − 2 63 , 2 63 − 1 -2^{63} ,2^{63}-1 263,2631 0 , 2 64 − 1 0,2^{64}-1 02641大整数值
float4bytes-3.402823466 E+38, 3.402823466351 E+380 和 (1.175494351 E- 38,3.402823466 E+38)单精度浮点数值
double8bytes-1.7976931348623157 E+308, 1.7976931348623157 E+3080 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308)双精度浮点数值
decimal(十进制,小数)依赖于M(精度)和D(标度)的 值小数值(精 确定点数)

精度是指数字长度标度是小数位如:123.45精度为5 标度为2|依赖于M(精度)和D(标度) 的值

其实可以看到无符号正数范围是有符号正数范围的两倍,是由于在二进制中无符号将第一个二进制数作为大小,幂加一

  • 可以看到int分为了五份,从1bytes8bytes, 分得这么细的原因显然是为了节省空间,数据库在面对大型数据才不会太浪费空间

2)字符类型

类型字节大小描述
char(重要)0-255 bytes定长字符串(需要指定长度)
varchar(重要)0-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) 时间类型

类型字节大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳

3.2.3 表操作-修改

1). 添加字段

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

2). 修改数据类型

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

3). 修改字段名和字段类型

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

4). 删除字段

ALTER TABLE 表名 DROP 字段名;

5). 修改表名

ALTER TABLE 表名 RENAME TO 新表名;

3.2.3 表操作-删除

1). 删除表

DROP TABLE [ IF EXISTS ] 表名;

2). 删除指定表, 并重新创建表(相当于清空数据)

TRUNCATE TABLE 表名;

个人总结(选读*)

在以上的对数据库或者表操作中,方法其实都是有规律的,总结规律如下

动作 ++ 对象 [附加条件]

如:

  1. 查询所有数据库 & 查询所有表
数据库: show databases;
表: show tables
  1. 创建数据库
create database 数据库名称;
create table 表名称

等等诸如此类,都是比较语义化的代码

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

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

相关文章

I.MX6ULL_Linux_系统篇(19) kernel编译及Makefile分析

Linux 内核 Linux 由 Linux 基金会管理与发布, Linux 官网为 https://www.kernel.org,所以你想获取最新的Linux 版本就可以在这个网站上下载,网站界面如图所示: 从图中可以看出最新的稳定版 Linux 已经到了 6.2,NXP …

Python常用标准库-sys库一文详解

目录 前言 一、Sys库概述 二、Sys查看版本信息 1.sys.version获取Python版本信息 2.sys.api_version获取解释器中C的API版本 3.sys.getwindowsversion系统功能版本 4.sys.hexversion()获取Python解释器的版本值 5.sys.implementation获取当前正在运行的Python解释器的实现…

Redis源码---如何实现一个性能优异的Hash表

目录 前言 Redis 如何实现链式哈希? 什么是哈希冲突? 链式哈希如何设计与实现? Redis 如何实现 rehash? 什么时候触发 rehash? rehash 扩容扩多大? 渐进式 rehash 如何实现? 前言 Hash …

数据处理 |遍历所有文件夹及子目录文件夹方法总结与实例代码详解

深度学习中不可避免的数据预处理~1. glob.glob()方法 2. pathlib中的Path方法3. os.walk()方法1. glob.glob()方法 语法glob.glob(pathname)(多指定文件类型,查找jpg,png,txt,json等)缺点:查找文件较慢2. 路径操作库pathlib中的Pa…

【计算机三级网络技术】 第四篇 路由设计技术基础

文章目录一、分组转发二、路由选择1.理想的路由算法的基本特征2.路由算法的度量标准3.路由算法分类:4.IP路由选择与路由汇聚(重点)三、自治系统与Internet的路由选择协议1.自治系统2.路由选择协议的分类四、内部网关协议1.RIP的基本概念2.RIP的原理3.RIP的运行过程五…

Android Lmkd 低内存终止守护程序

一、低内存终止守护程序 Android 低内存终止守护程序 (lmkd) 进程可监控运行中的 Android 系统的内存状态,并通过终止最不必要的进程来应对内存压力大的问题,使系统以可接受的性能水平运行。 所有应用进程都是从zygote孵化出来的,记录在AMS…

Android问题笔记 - 打开Android Studio先弹出项目选择框

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例 👉关于作者 众所周知,人生是一个漫长的流程,不断克服困难,不断…

leetcode 427. Construct Quad Tree(构建四叉树)

刚看到题的时候是懵的,这也太长了。到底是要表达什么呢。 不妨把这个矩阵看成一个正方形的图片,想象你在处理图片,从整体逐步到局部。 刚开始看一整张图片,如果是全0或全1,这个就是叶子节点,怎么表达叶子节…

网络货运平台“降本提质引流增值”秘籍是什么?

2月24日,2022(第五届)中国网络货运平台年会在厦门举行,数据宝作为中物联副会长单位受邀参加峰会,数据宝轮值CEO肖斌发表题为“网络货运平台数字化创新应用实践分享”的主题分享。 据交通运输部统计,截止到2…

某建筑设计研究院“综合布线管理软件”应用实践

某建筑设计研究院有限公司(简称“某院”)隶属于国务院国资委直属的大型骨干科技型中央企业。“某院”前身为中央直属设计公司,创建于1952年。成立近70年来,始终秉承优良传统,致力于推进国内勘察设计产业的创新发展&…

CASENet中edge GT是如何产生的

1:首先下载cityscape数据集,包含两个大文件夹,具体的数据集介绍参考此链接。cityscape数据集解析 看一下gtFine子文件夹,另一个也是同理: 2:将下载好的数据集放到data_orig中,还有一个文件…

报错记录:element-admin框架打包后静态文件加载异常与登录异常解决方案

报错记录:element-admin框架打包后静态文件加载异常与登录异常解决方案 一、静态文件加载异常解决方案 二、登录异常解决方案 现象 element-admin如果用 electron 打包 是会有个问题: electron serve 运行没问题 electron build 打release 包 就会出错…

AST之path常用属性和方法总结笔记

文章目录1. path常用属性总结1.1 path.node1.2 path.scope1.3 path.parentPath1.4 path.parent1.5 path.container1.6 path.type1.7 path.key2. path常用方法总结2.1 path.toString2.2 path.replaceWith2.3 path.replaceWithMultiple2.4 path.remove2.5 path.insertBefore2.6 p…

TypeScript 常用知识

「 推荐一个学习 ts 基础的专栏,满满的干货:typeScript 」 1、为什么推荐使用 TypeScript 【】ts 是 js 的超集,包含 js 的所有元素 【】ts 通过对代码进行类型检查,可以帮助我们避免在编写 js 时经常遇到令人痛苦的错误 【】强…

第六节 方法

方法 方法是一种语法结构。 方法的作用: 1.提高代码的复用性 2.让程序逻辑更加清晰 方法定义的完整格式: 修饰符 返回值类型 方法名(形参列表){ 方法体的代码(需要执行的功能代码) return 返回值&#xff…

Unity性能优化: 性能优化之内存篇

前言 本文和传统的内存优化不一样,不是讲如何降低内存占用,而是讲编程开发中要注意的内存问题以及一些内存技术的演变与原理。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀 1: Application进程…

maven项目无法解析插件

发现问题使用IDEA创建Maven项目时,报错无法解析插件 org.apache.maven.plugins:maven-clean-plugin这里使用的是IDEA捆绑的Maven插件解决方案查看Maven配置打开用户设置文件settings.xml,在其中加入如果该路径下没有此文件,可以自己创建一个。…

软件分析笔记02---Intermediate Representation

整体contents compiler (source code ——> machine code) non-trivial非平凡的 经过 语义分析->语法分析->类型检查等各种trivial的分析(前端),生成中间代码IR->进行non-trivial的分析(及静…

Linux 基础介绍-基础命令

文章目录01 学习目标02 Linux/Unix 操作系统简介2.1 Linux 操作系统的目标2.2 Linux 操作系统的作用2.3 Unix 家族历史2.4 Linux 家族历史2.5 Linux 和Unix 的联系2.6 Linux 内核介绍2.7 Linux 发行版本2.8 Unix/Linux 开发应用领域介绍03 Linux 目录结构3.1 Win 和Linux 文件系…

C++之入门之引用,内联函数

一、引用 1、引用的概念 在C中,引用的本质其实就是给一个已经存在的变量”起别名“。也就是说,引用与它所引用的对象共用一块空间。(同一块空间的多个名字) 就比如说,李逵又叫黑旋风,而黑旋风就是指李逵…