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 表名;

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

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

 分享一张壁纸:

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

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

相关文章

JAVA的学习日记

JAVA的学习日记(2024.3.1)(b站韩顺平老师课程学习笔记版) ps:捡起忘光光的Java语言 Sublime //1. public是公有,class是类 //2. public class Hello表示Hello是一个类,是一个public公有的类 //3. Hello{…

解决Unable to load class ‘org.gradle.api.attributes.VerificationType‘

在使用AdnroidStudio开发过程中难免会遇到Unable to load class org.gradle.api.attributes.VerificationType报错,可以尝试清理缓存重启解决 打开 File-》Invalidate Caches... 重启AndroidStudio后,重新加载即可,但也不是百分百解决。

【MySQL】:高效利用MySQL函数实用指南

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. MySQL函数概论二. 字符串函数三. 数值函数四. 日期函数五. 流程函数&#x1…

基于NSFW数据集的违规图片检测系统

目录 一、功能介绍 二、安装部署说明 2.1数据集简介 2.2文件目录说明 一、功能介绍 本程序是一个违规图片检测系统,能够识别用户上传的信息图片,是否包含有敏感(NSFW,Not Safe For Work)信息。 本程序使用雅虎开源的NS…

芯科科技为全球首批原生支持Matter-over-Thread的智能锁提供强大助力,推动Matter加速成为主流技术

智能锁领域的先锋企业U-tec和Nuki选择芯科科技解决方案,成为Matter-over-Thread应用的领先者 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)今…

2024广东水展即将开幕 | 聚焦净水行业热点抢占行业新机遇

2024广东水展即将开幕 | 聚焦净水行业热点抢占行业新机遇 随着消费升级和人们对环境健康的意识增强,人们除了关注净水产品的性能外,对产品的设计、服务、多应用场景化等需求也愈发多样化。节能环保、智能化成为产品迭代升级主要方向。据奥维云网数据显示…

Docker中使用Tomcat并部署war工程

系列文章目录 文章目录 系列文章目录前言一、构建镜像二、运行镜像三、列出正在运行的容器四、停止正在运行的容器 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文…

物联网技术助力智慧城市安全建设:构建全方位、智能化的安全防护体系

一、引言 随着城市化进程的加速和信息技术的迅猛发展,智慧城市已成为现代城市发展的重要方向。在智慧城市建设中,安全是不可或缺的一环。物联网技术的快速发展为智慧城市安全建设提供了有力支持,通过构建全方位、智能化的安全防护体系&#…

Kali Linux 安装 + 获取 root 权限 + 远程访问

一、什么是Kali kali是linux其中一个发行版,基于Debian,前身是BackTrack(简称BT系统)。kali系统内置大量渗透测试软件,可以说是巨大的渗透系统,涵盖了多个领域,如无线网络、数字取证、服务器、密…

Python读取hbase数据库

1. hbase连接 首先用hbase shell 命令来进入到hbase数据库,然后用list命令来查看hbase下所有表,以其中表“DB_level0”为例,可以看到库名“baotouyiqi”是拼接的,python代码访问时先连接: def hbase_connection(hbase…

red hat 6.9版本7.9版本 忘记root密码重置方法

文章目录 1、重置密码具体步骤Oracle Linux 6.9版本:1、开机到此界面按e2、在以下界面选择后按e3、选择相应内核后按e4、在此界面输入 single 回车5、回到内核界面后按b进入引导系统6、在#后输入passwd root修改密码7、修改密码:8、Reboot重启9、使用新密…

PostgreSQL中int类型达到上限的一些处理方案

使用int类型作为表的主键在pg中是很常见的情况,但是pg中int类型的范围在-2147483648到2147483647,最大只有21亿,这个在一些大表中很容易就会达到上限。一旦达到上限,那么表中便没办法在插入数据了,这个将会是很严重的问…

word文档空格不能有下划线【笔记】

word文档空格不能有下划线 2024-3-1 21:20:24 推荐 word下划线打不出来了,是怎么回事? 问题 字后面打不出来下划线 操作 1.点击文件 左上角,点击“文件”。 2.点击选项 鼠标下滑,点击“选项”。 3.点击常规与保存 点击“…

java基础-mysql

文章目录 mysql基础面试题什么是mysql什么是事务并发事务带来的影响事物的隔离级别索引大表优化什么是池化思想,什么是数据库连接池,为什么要用数据库连接池⾏锁,表锁;乐观锁,悲观锁MySQL主备同步的基本原理SQL什么情况…

[⑥5G NR]: 无线接口协议,信道映射学习

5G系统整体包括核心网、接入网以及终端部分,接入网与终端间通过无线空口协议栈进行连接。无线接口可分为三个协议层:物理层(L1)、数据链路层(L2)和网络层(L3)。 L1:物理…

【python】json转成成yaml中文编码异常显示成:\u5317\u4EAC\u8DEF123\u53F7

姊妹篇:【python】json转成成yaml json数据 {"name": "张三","age": 30,"isMarried": false,"children": [{"name": "小王","age": 5},{"name": "小李",&qu…

Linux---进程信号

一、信号的概念 信号是一种向目标进程发送通知消息的机制 信号的特性(可以结合红绿灯、防空警报等生活样例来理解) 1、在信号没有出现之前,我们就已经知道如何去处理信号,即我们认识信号 2、信号是异步产生的,即我们不知道它具体何时产生 3、…

基于MQTT协议实现微服务架构事件总线

一、场景描述 昨天在博客《客户端订阅服务端事件的实现方法》中提出了利用websocket、服务端EventEmitter和客户端mitt实现客户端订阅服务端事件,大大简化了客户端对服务端数据实时响应的逻辑。上述方案适用于单服务节点的情形。 对于由服务集群支撑的微服务架构&…

Redis 之七:穿透、击穿、雪崩

(本内容部分来自知乎网等网络) Redis 缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严…

Educational Codeforces Round 132 (Rated for Div. 2) E. XOR Tree(启发式合并+贪心)

题目 n(n<2e5)个点的树&#xff0c;点i权值ai&#xff08;1<ai<2^30&#xff09; 修改最少的点的权值&#xff0c;使得树上不存在异或和为0的简单路径&#xff0c;输出最少的点数 权值可以被修改成任意正整数&#xff08;可以是无限大&#xff09; 思路来源 官方…