MySQL基础-----SQL语句之DDL语句

目录

前言

 开启登录数据库

一、数据库操作 

1.查询所有数据库

 2.切换使用数据库

3.查询当前使用的数据库

4.创建数据库 

创建一个hello数据库, 使用数据库默认的字符集。

 创建一个itheima数据库,并且指定字符集

 5.删除数据库

 二、表操作

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

2.查看指定表结构 

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

4.创建表-建表语句

 5.创建表-数据类型

数值类型 

字符串类型 

日期时间类型 

 6.表操作-修改

01.添加字段

02.修改数据类型 

03.修改字段名和字段类型

 04.删除字段

05.修改表名

7.表操作-删除

删除表

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


前言

        上一期我们简单介绍了MySQL数据库的相关内容以及SQL语句的分类,那么本期我们开始学习SQL语句中的ddl语句部分,DDL语句即Data  Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段),下面我会通过数据库和表的操作来演示。

 开启登录数据库

        cmd 管理员进入,然后用指令开启MySQL服务器net start mysql  

        然后就是登录等等操作,在上一期就讲解过了这里就不多说了(上一期链接:MySQL入门------数据库与SQL概述-CSDN博客)。

一、数据库操作 

1.查询所有数据库

show databases; 

 2.切换使用数据库

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

use 数据库名称;

3.查询当前使用的数据库

select database(); 

 

4.创建数据库 

创建一个hello数据库, 使用数据库默认的字符集。

 create database hello;

 在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。

 可以通过if not exists 参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不创建。

 create database if not exists hello;

 创建一个itheima数据库,并且指定字符集

create database itheima default charset utf8mb4;

 5.删除数据库

drop database [ if exists ] 数据库名字;

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

 二、表操作

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

show tables; 

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

use sys;

show tables;

2.查看指定表结构 

desc 表名; 

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

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

show create table 表名;

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

4.创建表-建表语句

 create table 表名(

        字段1 类型 [comment 注释],

        字段2 类型 [comment 注释],

        字段3 类型 [comment 注释],

        ……

) [comment 注释];

注意: [...] 内为可选参数, 后一个字段后面没有逗号

 5.创建表-数据类型

在上述的建表语句中,我们在指定字段的数据类型时,用到了int ,varchar,那么在MySQL中除了以上的数据类型,还有哪些常见的数据类型呢? 接下来,我们就来详细介绍一下MySQL的数据类型。

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

数值类型 

类型

大小

有符号(SIGNED)范围

无符号(UNSIGNED)范围

描述

TINYINT

1byte

(-128,127)

(0,255)

小整数值

SMALLINT

2bytes

(-32768,32767)

(0,65535)

大整数值

MEDIUMINT

3bytes

(-8388608,8388607)

(0,16777215)

大整数值

INT/INTEGER

4bytes

(-2147483648,

2147483647)

(0,4294967295)

大整数值

BIGINT

8bytes

(-2^63,2^63-1)

(0,2^64-1)

极大整数值

FLOAT

4bytes

(-3.402823466 E+38,

3.402823466351 E+38)

0 和 (1.175494351 E-

38,3.402823466 E+38)

单精度浮点数值

DOUBLE

8bytes

(-1.7976931348623157

E+308,

1.7976931348623157

E+308)

0 和

(2.2250738585072014

E-308,

1.7976931348623157

E+308)

双精度浮点数值

DECIMAL

 

依赖于M(精度)和D(标度) 的值

依赖于M(精度)和D(标度)的值

小数

值(精

确定点数)

要根据实际情况去选择恰当的数据类型,比如年龄不会出现负数,所以要选择无符号类型。

字符串类型 

类型

大小

描述

CHAR

0-255 bytes

定长字符串(需要指定长度)

VARCHAR

0-65535 bytes

变长字符串(需要指定长度)

TINYBLOB

0-255 bytes

不超过255个字符的二进制数据

TINYTEXT

0-255 bytes

短文本字符串

BLOB

0-65 535 bytes

二进制形式的长文本数据

TEXT

0-65 535 bytes

长文本数据

MEDIUMBLOB

0-16 777 215 bytes

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215 bytes

中等长度文本数据

LONGBLOB

0-4 294 967 295 bytes

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295 bytes

极大文本数据

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为 大占用长度 。相对来说,char的性能会更高些。 

日期时间类型 

类型

大小

范围

格式

描述

DATE

3

1000-01-01 至 9999-12-31

YYYY-MM-DD

日期值

TIME

3

-838:59:59 至 838:59:59

HH:MM:SS

时间值或持续时间

YEAR

1

1901 至 2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00 至

9999-12-31 23:59:59

YYYY-MM-DD

HH:MM:SS

混合日期和时间值

TIMESTAMP

4

1970-01-01 00:00:01 至

2038-01-19 03:14:07

YYYY-MM-DD

HH:MM:SS

混合日期和时间值,时间戳

 下面创建一个emp员工表,要求如下:

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

建表语句如下:

create table emp(
    id int comment '编号',
    num varchar(10) comment '编号',
    name varchar(10) comment '名字',
    gender char(1) comment '性别',
    age tinyint unsigned comment '年龄',
    idcard char(18) comment '身份证',
    entrydate date comment '入职时间'
) comment '员工表';

SQL语句编写完毕之后,就可以在MySQL的命令行中执行SQL,然后也可以通过 desc 指令查询表结构信息: 

表结构创建好了,里面的name字段是varchar类型, 大长度为10,也就意味着如果超过10将会报错,如果我们想修改这个字段的类型 或 修改字段的长度该如何操作呢?接下来再来讲解DDL语句中,如何操作表字段。 

 6.表操作-修改

01.添加字段

alter table emp add 字段名 类型 [comment '注释'];

案例:下面在上面emp表的基础上添加一个老板名字的字段 

 alter table emp add emloyer varchar(10) comment '老板';

02.修改数据类型 

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

案例:把上面老板的数据类型由varchar(10)改为varchar(20)

alter table emp modify emloyer varchar(20);

03.修改字段名和字段类型

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

案例 : 将emp 表的emloyer 字段修改为 username ,类型为 varchar(30)
alter table emp change emloyer username varchar(30) comment '昵称';

 04.删除字段

 ALTER TABLE 表名 DROP 字段名;

案例 : 将emp 表的字段 username 删除

 alter table emp drop username;

05.修改表名

ALTER TABLE 表名 RENAME TO 新表名;
案例 : 将emp 表的表名修改为 employee

 alter table emp rename to employee;

7.表操作-删除

删除表

DROP TABLE [ IF EXISTS ] 表名;

可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作 ( 如果不
加该参数项,删除一张不存在的表,执行将会报错 )
案例 :
如果 tb_user 表存在,则删除 tb_user
删除指定表, 并重新创建表

其中的数据被全部删除了,只保留下表结构

TRUNCATE TABLE 表名;

注意: 在删除表的时候,表中的全部数据也都会被删除。

以上就是本期的全部内容了,我们下次见!

 分享一张壁纸:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UE5中实现后处理深度描边

后处理深度描边可以通过取得边缘深度变化大的区域进行描边,一方面可以用来做角色的等距内描边,避免了菲尼尔边缘光不整齐的问题,另一方面可以结合场景扫描等特效使用,达到更丰富的效果: 后来解决了开启TAA十字线和锯齿…

基于ssm江苏融汇房地产营销策划有限公司的宣传网站

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

c# 获取源码路径与当前程序所在路径

获取源码路径 private static string GetFilePath([CallerFilePath] string path null) {return path;}//当程序所在路径string str67 System.Environment.CurrentDirectory;//源码路径 var path GetFilePath();var directory Path.GetDirectoryName(path);参考

彻底搞懂回溯算法(例题详解)

目录 什么是回溯算法: 子集问题: 子集问题II(元素可重复但不可复选): 组合问题: 组合问题II(元素可重复但不可复选): 排列问题: 排列问题II(元素可重复但不可复选): 什么是回溯算法: 「回溯是递归的副产品&…

嵌入式学习31-指针和函数知识回顾

1.指针: 1.提供一种间接访问数据的方法 2.空间没有名字,只有一个地址编号 2.指针: 1.地址:区分不同内存空间的编号 2.指针:指针就是地址,地址就是指针 3.指针变量:存放指针的变量称为指针变量,简称为指针 3.指针的定义: int *p NULL; …

Github 2024-02-26 开源项目日报Top10

根据Github Trendings的统计,今日(2024-02-26统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4C项目1Go项目1TypeScript项目1HTML项目1Jupyter Notebook项目1Rust项目1Shell项目1JavaScript项目…

keil MDK安装armcc V5编译器

不知道从什么时候开始,Keil MDK默认不支持V5的编译器了,里面默认只有V6的编译器,设置界面跟V5有很大的差异不太熟悉。最可怕的是,之前使用V5编译的工程,换成V6编译器后居然报错...虽然修改一下应该也可以正常编译&…

IOS 发布遇到“Unable to authenticate with App Store Connect”错误咋解决?

问题: 在开发ios app后,先发布adhoc版本,测试通过后,再发布testflight版本测试,但是可能会遇到一下问题。 解决办法: 在Signing &Capabilities中,在ios下边要指定有发布权限的Team账号&a…

30-k8s集群的七层代理-ingress资源(进阶知识)

一、ingress概述 1,引发问题 目前使用svc资源做网络暴露,使用nodeport类型,一个业务对应一个宿主机端口,那么如果业务多了,所占用的宿主机端口也就多了,虽然说宿主机端口一般情况下都是够用的,…

《YOLOv9:从入门到实战》报错解决 专栏答疑

前言:Hello大家好,我是小哥谈。《YOLOv9:从入门到实战》专栏上线后,部分同学在学习过程中提出了一些问题,笔者相信这些问题其他同学也有可能遇到。为了让大家可以更好地学习本专栏内容,笔者特意推出了该篇专…

1、Linux-安装

一、Linux和Windows的一些区别 1、Linux严格区分大小写——【Windows创建文件夹时不区分大小写】 2、Linux中所有内容都以文件形式存储,包括硬件 3、Linux不靠拓展名区分文件类型,而是可以通过读取文件开头的一些字节来区分。 但是在实际使用中一般要…

《CrackCollect》

CrackCollect 类型:益智学习 视角:2d 乐趣点:趣味化英语学习,闯关增加学习动力 时间:2019 个人职责: 1、所有功能的策划讨论 2、所有开发工作 3、所有上架工作 此游戏旨在针对英语水平处于初级阶段的人&…

【Pytorch】论文复现 Vision Transformer (ViT)

文章目录 0. 进行设置1. 获取数据2. 创建Dataset和DataLoader3. 复现 ViT 论文:概述4. Equation 1: 将数据拆分为 patch 并创建类、位置和 patch 嵌入5. Equation 2: Multi-Head Attention (MSA)6. Equation 3: Multilayer Perceptron (MLP)7. 创建 Transformer 编码…

简单的生活案例解释:关系图卷积网络(RGCN)

目录 1、用一个简单的生活案例来解释关系图卷积网络(RGCN)2、RGCN与FB15K-237文件格式详情数据集构成结合RGCN和FB15K-237参考文献1、用一个简单的生活案例来解释关系图卷积网络(RGCN) 假设你是一名社交媒体平台的工程师,你的任务是分析用户之间的关系,以便为他们推荐更…

C++_AVL树

目录 1、AVL的概念 2、平衡因子的调整概念 3、AVL树的插入 3.1 调整平衡因子代码实现 3.2 右旋操作 3.2 左旋操作 3.3 双旋-先右旋再左旋 3.4 双旋-先左旋再右旋 3.5 旋转操作的小结 4、AVL的验证与实现 结语 前言: 在C中,AVL树是在二叉搜索…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-34-处理https 安全问题或者非信任站点-下篇

1.简介 这一篇宏哥主要介绍playwright如何在IE、Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打开不安全的链接。举例来说&#xff0c…

Revit-二开之东西南北立面FilledRegion的CurveLoop计算-(4)

东西南北FilledRegion的CurveLoop计算 上一篇以东立面视图为例创建FilledRegion,接下来我们将立面视图创建FilledRegion的CurveLoop汇总一下。 上图是对四个立面坐标系间的绘制方便我们计算FilledRegion的CurveLoop。 东立面CurveLoop计算 private CurveLoop GetEastCurveL…

ARM系列 -- 虚拟化(一)

今天来研究一个有意思的话题,虚拟化(virtualization)。 开始前,先闲扯一下,最近一个词比较火,“元宇宙(Metaverse)”。在维基百科里面是这么定义元宇宙的,“The Metaver…

【JavaSE】时间类相关API以及使用

目录 时间类相关API 1.Date类 2.SimpleDateFormat类 3.Calendar类 4.JDK8-时区,时间和格式化 5.JDK8-日历和工具类 时间类相关API 以下内容是通过观看黑马java的常见API视频总结加笔记,其中有JDK7以及以前的时间类,包括:Date&…

uniapp npx update-browserslist-db@lates 问题解决

在uniapp运行项目时,会有这种报错,其实这是表明browserslistlatest版本低了,在催你升级版本,browserslistlatest是用来支持解析css用的,当然,你也可以直接忽略这个报错提示,也可以正常运行项目。…