MYSQL-SQL-01-DDL(Data Definition Language,数据定义语言)

DDL(数据定义语言)

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

一、数据库操作

1、 查询mysql数据库管理系统的所有数据库

  1. 语法:
show databases;
  1. 示例:
    在这里插入图片描述

2、查询当前所在的数据库

  1. 语法:
select database();
  1. 示例:
    在这里插入图片描述

3、创建数据库

  1. 语法:([]括号内的表示是可选的)
 create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;
  • 不加if not exists的情况:当所创建的数据库已经存在的时候,就会报错了。
    在这里插入图片描述

  • IF NOT EXISTS 是一个条件子句,用于检查指定的数据库是否已经存在

    • 如果数据库不存在,则执行创建数据库的语句;
    • 如果数据库已经存在,则不执行创建操作,并且不会返回错误。
  • 这个子句作用:因为它可以防止因尝试创建已经存在的数据库而导致的错误。这在自动化脚本或应用程序中尤其重要,因为它们可能需要多次运行,并且不应该因为数据库已经存在而失败。

  • 加上if not exists(一般都会加上的)
    在这里插入图片描述

  1. 示例:
-- 创建一个company数据库, 使用数据库默认的字符集。
CREATE DATABASE company;-- 如果company数据库不存在,则创建company数据库,如果存在则不创建
CREATE DATABASE IF NOT exists company;-- 创建数据库company并指定字符集utf8mb4CREATE DATABASE company DEFAULT CHARSET utf8mb4;-- 创建数据库时company指定字符集utf8mb4并指定排序规则为utf8mb4_general_ci
CREATE DATABASE company DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
  • 在创建数据库时,排序规则(COLLATE)是用于定义字符串比较和排序的规则。这些规则决定了文本数据如何进行排序和比较,包括是否区分大小写、是否区分重音等。
    • 排序规则(Collation)由字符集和排序规则名称组成,格式为 charset_collation。例如,utf8mb4_general_ci 是一个常见的排序规则,其中 utf8mb4 是字符集,general_ci 是排序规则名称,ci 表示不区分大小写(case-insensitive)。
      • 排序:排序规则决定了字符串的排序方式。在 ORDER BY 语句中使用排序规则可以确保字符串按照预期的顺序进行排序。
      • 比较:排序规则影响字符串比较操作,如 =、!=、>、< 等。选择合适的排序规则可以确保字符串比较的结果符合语言规则或业务需求。

4、删除数据库

  1. 语法:
 drop database [ if exists ] 数据库名 ;
  • if exists是一个条件子句,判断当前数据库是否存在该数据库:

    • 数据库存在则执行sql,删除数据库
    • 当数据库不存在时,SQL 语句不会执行删除操作,而是直接忽略该语句,且不返回错误
  • 删除一个不存在的数据库
    在这里插入图片描述

  • 使用if exists删除一个不存在数据库
    在这里插入图片描述

  1. 示例:
-- 如果company数据库存在则删除company数据库,不存在则不删除。
-- 如果删除一个不存在的数据库,将会报错,使用if exists就是防止报错DROP DATABASE IF EXISTS company;

5、切换数据库

  1. 语法:
use 数据库名 ;
  1. 示例:
-- 使用company数据库
use company;

在这里插入图片描述

二、表操作

1、表操作—查询操作

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

  1. 语法:
show tables;

在这里插入图片描述

1.2、查看指定表结构

  1. 语法:
desc 表名;
  1. 示例:
-- 查看emp表的结构
desc emp;

在这里插入图片描述

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

  1. 语法:
show create table 表名 ;
  1. 示例:
-- 查看emp表的建表语句
show create table emp;

在这里插入图片描述

1.4、创建表结构

  1. 语法:
CREATE TABLE  表名(
字段1  字段1类型 [ COMMENT  字段1注释 ],
字段2  字段2类型 [COMMENT  字段2注释 ],
字段3  字段3类型 [COMMENT  字段3注释 ],......
字段n  字段n类型 [COMMENT  字段n注释 ] 
) [ COMMENT  表注释 ] ;
  1. 示例:
 create table tb_user(id int comment '编号',name varchar(50) comment '姓名',age int comment '年龄',gender varchar(1) comment '性别') comment '用户表';

表结构如图:
在这里插入图片描述

2.、表操作—数据类型

  1. MySQL中的数据类型有很多,主要分为三类数值类型、字符串类型、日期时间类型

2.1、数值类型

在这里插入图片描述

2.2、字符串类型

在这里插入图片描述

  • char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。

  • varchar是变长字符串,指定的长度为最大占用长度 。

  • char和varchar相对来说,char的性能会更高些。

2.3、日期类型

在这里插入图片描述

2.4、创建表是字段类型如何选择

  1. 在MySQL中创建表时,字段类型的选择应该基于数据的实际类型和预期用途。正确的数据类型选择对于数据库的性能、存储效率和数据完整性都至关重要。
  2. 在选择字段类型时应考虑的因素:
    • 1、数据类型
      • 整数类型:如 TINYINT、SMALLINT、MEDIUMINT、INT(或 INTEGER)、BIGINT。选择时应考虑数据的大小范围是否需要存储负数
      • 浮点数类型:如 FLOAT、DOUBLE、DECIMAL。FLOAT 和 DOUBLE 用于存储近似值,而 DECIMAL 用于存储精确值(如货币),因为它可以指定小数点后的位数。
      • 字符串类型:如 CHAR、VARCHAR。CHAR 是固定长度的,而 VARCHAR 是可变长度的。选择时应考虑数据的最大长度和是否需要存储空字符串。
      • 日期和时间类型:如 DATE、TIME、DATETIME、TIMESTAMP、YEAR。这些类型用于存储日期和时间值,每种类型都有其特定的用途和存储格式。
      • 文本类型:如 TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT。用于存储大量文本数据,选择时应考虑数据的最大长度和性能考虑(长文本字段可能会影响查询性能)。
      • 二进制类型:如 BINARY、VARBINARY、BLOB(包括 TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB)。用于存储二进制数据,如图像、音频、视频等。
    • 2、存储需求:
      • 考虑每个字段所需存储空间的大小,以及整个表在数据库中的存储效率。
      • 使用合适的数据类型可以减少存储浪费和提高查询性能。
    • 3、数据完整性:
      • 选择正确的数据类型可以确保数据的准确性和一致性。
      • 例如,使用 DECIMAL 类型存储货币可以避免浮点数的舍入误差。
    • 4、性能考虑:
      • 某些数据类型(如 TEXT 和 BLOB)可能会影响查询性能,尤其是在涉及排序和索引时。
      • 选择合适的数据类型和索引策略可以优化查询性能。
    • 5、未来扩展:
      • 考虑数据的未来增长和变化,选择能够容纳预期数据增长的数据类型。
  • 在选择字段类型时,务必仔细分析数据的实际需求和预期用途,以确保选择最适合的数据类型。如果不确定,可以先选择一个初步的数据类型,并在实际应用中根据需要进行调整和优化。

举例:设计一张员工信息表,要求如下:

1.编号(纯数字)
2.员工工号(字符串类型,长度不超过10位)
3.员工姓名(字符串类型,长度不超过10位)4.性别(男/女,存储一个汉字)
5.年龄(正常人年龄,不可能存储负数)心
6.身份证号(二代身份证号均为18位,身份证中有X这样的字符)
7.入职时间(取值年月日即可)

CREATE TABLE EmployeeInfo (  ID INT AUTO_INCREMENT PRIMARY KEY,          -- 编号,纯数字,自动递增  EmployeeID VARCHAR(10) NOT NULL,             -- 员工工号,字符串类型,长度不超过10位  EmployeeName VARCHAR(10) NOT NULL,           -- 员工姓名,字符串类型,长度不超过10位  Gender CHAR(1) CHECK (Gender IN ('男', '女')), -- 性别,存储一个汉字,只能是'男'或'女'  Age INT UNSIGNED CHECK (Age >= 0),           -- 年龄,正常人年龄,不可能存储负数,使用无符号整数  IDCard CHAR(18) NOT NULL,                    -- 身份证号,二代身份证号均为18位,允许包含X字符  EntryDate DATE NOT NULL                      -- 入职时间,取值年月日即可  
);

3、表操作—修改

3.1、为表添加新字段

  1. 语法:
ALTER TABLE 表名 ADD  字段名  类型 (长度)  [ COMMENT 注释 ]  [ 约束 ];-- 这里的约束就是什么非空约束,外键约束,主键约束等等
  1. 示例:
-- 为emp表增加一个新的字段”昵称”为nickname,类型为varchar(10)ALTER TABLE emp ADD nickname varchar(10)  COMMENT '昵称'

在这里插入图片描述

3.2、为表修改字段类型(modify)

  1. 语法:

ALTER TABLE 表名 MODIFY column  字段名  新数据类型 (长度);-- column可以省略
ALTER TABLE 表名 MODIFY  字段名  新数据类型 (长度);
  1. 示例:
-- 为emp表的字段”昵称”为nickname的类型修改为varchar(255)ALTER TABLE emp MODIFY nickname VARCHAR(255)-- 为emp表的字段”昵称”为nickname的类型修改为varchar(255)并修改昵称ALTER TABLE emp MODIFY nickname VARCHAR(255) COMMENT '昵称2';

在这里插入图片描述

3.3、修改字段名(change)和字段类型

  1. 语法:
ALTER TABLE 表名 CHANGE column  旧字段名  新字段名  类型 (长度)  [ COMMENT 注释 ]  [ 约束 ];-- column可以省略ALTER TABLE 表名 CHANGE  旧字段名  新字段名  类型 (长度)  [ COMMENT 注释 ]  [ 约束 ];
  1. 示例:
-- 修改emp表中字段名为nickname的为nick,字段类型修改为varchar(100)
ALTER TABLE emp CHANGE  nickname  nick  VARCHAR(100);

在这里插入图片描述

3.4、修改表名

  1. 语法:
 ALTER TABLE 表名 RENAME TO 新表名;
  1. 示例:
-- 修改employeeinfo的表名为employeeALTER TABLE employeeinfo rename to employee;

在这里插入图片描述

3.5、删除字段

  1. 语法:
 ALTER TABLE 表名 DROP  字段名;
  1. 示例:
-- 删除emp表中的nick字段ALTER TABLE emp DROP nick;

在这里插入图片描述

4、表操作—删除

4.1、删除表

  1. 语法:
DROP  TABLE [ IF  EXISTS ]  表名;
  1. 示例:
-- 如果emp表存在,则删除emp表
DROP  TABLE IF  EXISTS  emp;

在这里插入图片描述

4.2、清空表数据

  1. 语法:
TRUNCATE  TABLE 表名;
  1. 示例:
-- 清空emp表的数据
TRUNCATE  TABLE emp;

在删除表的时候,表中的全部数据也都会被删除,表的结构依旧存在。
在这里插入图片描述

注意情况表数据还可以使用delete,但是delete属于DML语言了,而这里的truncate属于DDL(数据定义语言)

truncate与delete区别可以看一下这个

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

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

相关文章

django(3)jinja2模版的使用

启动模版 安装jinja2 pip install jinja2 配置setting TEMPLATES中添加配置 {BACKEND: django.template.backends.jinja2.Jinja2,DIRS: [os.path.join(BASE_DIR,jinja2)], #模版在项目中的所在位置} template中各项的含义 这个配置项中模版自上而下加载&#xff0c;重名…

Spring Boot框架的电影评论系统设计与实现

3系统分析 3.1可行性分析 通过对本电影评论网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本电影评论网站采用SSM框架&#xff0c;JAVA作为开发语言&#…

基于单片机的智能小区门禁系统设计(论文+源码)

1总体架构 智能小区门禁系统以STM32单片机和WiFi技术为核心&#xff0c;STM32单片机作为主控单元&#xff0c;通过WiFi模块实现与手机APP的连接&#xff0c;构建整个门禁系统。系统硬件包括RFID模块、指纹识别模块、显示屏、按键以及继电器。通过RFID绑定IC卡、APP面部识别、指…

Linux中Kconfig结构分析

目录结构中&#xff0c;某一层的内容无非就是&#xff0c;要么全是目录&#xff0c;要么全是文件&#xff0c;要么既有目录又有文件&#xff0c;我们的Kconfig文件通常是分布在各级目录中。那么&#xff0c;这些Kconfig如何一层一层地去组织起来呢&#xff1f; 首先明确下&…

VTK的学习方法-第二类型应用

VTK的高级使用方法是自己写一个算法&#xff08;Filter&#xff09;&#xff0c;本文使用的数据类型位polydata&#xff0c;这个数据类型应用比较广泛。 我们的算法一般是继承VTK里面的vtkpolydataalgorithm&#xff0c;然后自己添加一些变量&#xff0c;重写&#xff08;over…

京东 北京 java 中级: 哪些情况下的对象会被垃圾回收机制处理掉? 哪些对象可以被看做是 GC Roots 呢?对象不可达,一定会被垃圾收集器回收么?

我同学最近在面试java的岗位, 这是他遇到的某些关于java的JVM中垃圾回收相关的部分的问题, 他来问我, 我特以此文章来解答. 公司 京东 base 北京 面试时间 2024年10月23日16:00:00 他跟我说, 面试官一上来就问了一个关于JVM的问题, 直接就给他难住了, 问题是 : 哪些情况下…

深入理解Qt中的QTableView、Model与Delegate机制

文章目录 显示效果QTableViewModel(模型)Delegate(委托)ITEM控件主函数调用项目下载在Qt中,视图(View)、模型(Model)和委托(Delegate)机制是一种非常强大的架构,它们实现了MVC(模型-视图-控制器)设计模式。这种架构分离了数据存储(模型)、数据展示(视图)和数据操作(委托),使…

通过Python爬虫获取商品销量数据,轻松掌握市场动态

为什么选择Python爬虫&#xff1f; 简洁易用&#xff1a;Python语言具有简洁的语法和丰富的库&#xff0c;使得编写爬虫变得简单高效。强大的库支持&#xff1a;Python拥有强大的爬虫框架&#xff08;如Scrapy、BeautifulSoup、Requests等&#xff09;&#xff0c;可以快速实现…

【记录】Django数据库的基础操作

数据库连接 在Django中使用 mysqlclient 这个包用于数据库的连接&#xff0c;切换至 Django环境中直接 pip install mysqlclient 安装此包 1 数据库连接配置 在项目目录下的setting.py中配置 DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: mini,#数据库名US…

uniapp修改input中placeholder样式

Uniapp官方提供了两种修改的属性方法&#xff0c;但经过测试&#xff0c;只有 placeholder-class 属性能够生效 <input placeholder"请输入手机验证码" placeholder-class"input-placeholder"/><!-- css --> <style lang"scss" s…

Python的买家秀大揭秘:用代码点亮API数据

在一个充满无限可能的数字世界里&#xff0c;Python侦探正准备开始他的新任务&#xff1a;揭开买家秀API数据的神秘面纱。这不仅是一次技术的挑战&#xff0c;更是一次与时间赛跑的较量。Python侦探&#xff0c;这位编程界的福尔摩斯&#xff0c;打开了他的笔记本电脑&#xff…

C++大坑之——多继承(菱形继承)

文章目录 前言一、多继承是什么&#xff1f;1. 多继承概念2. 多继承语法 二、菱形继承1. 为什么会有菱形继承问题&#xff1f;2. 代码感受菱形继承3. 虚拟继承1&#xff09;虚拟继承概念及语法2&#xff09;虚拟继承的原理 4. 为什么要有虚基表&#xff1f;5. 为什么要有偏移量…

bootloader跳转app卡死(IAP卡死)

1、 关闭所有中断再跳转APP 一般bootloader跳转到APP时要关闭app中用到的中断(防止中断打断程序的运行&#xff0c;导致程序跑飞&#xff09;&#xff0c;那么查看系统中用到的中断&#xff1a;串口中断、滴答定时器中断&#xff0c;所以&#xff0c;跳转之前要关闭这两个中断&…

Vlan和Trunk

VLAN的定义 虚拟局域网&#xff0c;用来在二层网络中隔离广播域不同VLAN的设备在二层网络中无法互相通讯&#xff08;二层隔离技术&#xff09; VLAN的转发过程举例 源MAC字段后加上VLAN TAG字段&#xff0c;其中VLAN ID用来标识VLAN。 PC发送数据帧进入交换机&#xff0c;会…

使用SearXNG-搭建个人搜索引擎(附国内可用Docker镜像源)

介绍 SearXNG是聚合了七十多种搜索服务的开源搜索工具。我们可以匿名浏览页面&#xff0c;不会被记录和追踪。作为开发者&#xff0c;SearXNG也提供了清晰的API接口以及完整的开发文档。 部署 我们可以很方便地使用Docker和Docker compose部署SearXNG。下面给出Docker部署Se…

vscode插件live server无法在手机预览调试H5网页

环境 Window10、vscode&#xff1a;1.94.2、Live Server&#xff1a;v5.7.9、Live Server (Five Server)&#xff1a;v0.3.1 问题 PC端预览没有问题&#xff0c;但是在手机点击链接显示访问失败 排查 1. 是否同一局域网 意思就是电脑、手机是不是访问同一个网络。电脑插得…

微信互助学习平台(lw+演示+源码+运行)

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了微信互助学习平台的开发全过程。通过分析微信互助学习平台管理的不足&#xff0c;创建了一个计算机管理微信互助学习平台的方案。文章介绍了微信互助学习平台的…

论文精读:TiC-CLIP: Continual Training of CLIP Models(一)

论文精读&#xff1a;TiC-CLIP: Continual Training of CLIP Models&#xff08;一) 论文介绍 在多模态学习领域&#xff0c;CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;模型因其在图像和文本联合嵌入方面的卓越性能而受到广泛关注。然而&#xff0…

【C++】vector(1)

&#x1f608;个人主页: 起名字真南 &#x1f608;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 引言1 vector 的基本知识1.1 vector 的特点 2 vector 的主要功能和操作2.1 vector 的构造2.2 vector 的增删改查2.3 vector 的容量 引言 在C的标准模板库&#xff08;STL&…

MySQL——数据库

什么是数据库 数据库&#xff08;DB , DataBase&#xff09;概念&#xff1a;数据仓库&#xff0c;软件&#xff0c;安装在操作系统&#xff08;window&#xff0c;linux&#xff0c;max&#xff0c;...&#xff09;之上学习数据库最重要的就是学习SQL语句存储500万以下的数据…