MySQL创建和管理表

news2025/7/14 1:48:35

基础知识

一条数据存储的过程

存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。
那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起来呢? 在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据

在这里插入图片描述

我们要先创建一个数据库,而不是直接创建数据表呢?

因为从系统架构的层次上看,MySQL 数据库系统从大到小依次是 数据库服务器 、 数据库 、 数据表 、数据表的 行与列 。

MySQL 数据库服务器之前已经安装。所以,我们就从创建数据库开始。

标识符命名规则

1、数据库名、表名不得超过30个字符,变量名限制为292、必须只能包含 A–Z, a–z, 09, _共63个字符
3、数据库名、表名、字段名等对象名中间不要包含空格
4、同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
5、必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来
6、保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了

MySQL中的数据类型

类型类型举例
整数类型TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT
浮点类型FLOAT、DOUBLE
定点数类型DECIMAL
位类型BIT
日期时间类型YEAR、TIME、DATE、DATETIME、TIMESTAMP
文本字符串类型CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
枚举类型ENUM
集合类型SET
二进制字符串类型BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
JSON类型JSON对象、JSON数组
空间数据类型单值:GEOMETRY、POINT、LINESTRING、POLYGON;集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION

其中,常用的几大类型介绍如下:

数据类型描述
INT从-231到231-1的整型数据。存储大小为 4个字节
CHAR(size)定长字符数据。若未指定,默认为1个字符,最大长度255
VARCHAR(size)可变长字符数据,根据字符串实际长度保存,必须指定长度
FLOAT(M,D)单精度,占用4个字节,M=整数位+小数位,D=小数位。 D<=M<=255,0<=D<=30,默认M+D<=6
DOUBLE(M,D)双精度,占用8个字节,D<=M<=255,0<=D<=30,默认M+D<=15
DECIMAL(M,D)高精度小数,占用M+2个字节,D<=M<=65,0<=D<=30,最大取值范围与DOUBLE相同。
DATE日期型数据,格式’YYYY-MM-DD’
BLOB二进制形式的长文本数据,最大可达4G
TEXT长文本数据,最大可达4G

创建和管理数据库

创建数据库

1、创建1数据库

CREATE DATABASE 数据库名;

2、创建数据库并指定

CREATE DATABASE 数据库名 CHARACTER SET 字符集;

3、判断数据库是否已经存在,不存在则创建数据库( 推荐 )

CREATE DATABASE IF NOT EXISTS 数据库名;

如果MySQL中已经存在相关的数据库,则忽略创建语句,不再创建数据库。

注意:DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再删旧库完成的。

使用数据库

1、查看当前所有的数据库

SHOW DATABASES; #有一个S,代表多个数据库

2、查看当前正在使用的数据库

SELECT DATABASE(); #使用的一个 mysql 中的全局函数

3、查看指定库下所有的表

SHOW TABLES FROM 数据库名;

4、查看数据库的创建信息

SHOW CREATE DATABASE 数据库名;
或者:
SHOW CREATE DATABASE 数据库名\G

5、使用/切换数据库

USE 数据库名;

要操作表格和数据之前必须先说明是对哪个数据库进行操作,否则就要对所有对象加上“数据库名.”。

修改数据库

更改数据库字符集

ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如:gbk、utf8等

删除数据库

1、删除指定的数据库

DROP DATABASE 数据库名;

2、删除指定的数据库( 推荐 )

DROP DATABASE IF EXISTS 数据库名;

创建表

1、创建方式1

CREATE TABLE [IF NOT EXISTS] 表名(
字段1, 数据类型 [约束条件] [默认值],
字段2, 数据类型 [约束条件] [默认值],
字段3, 数据类型 [约束条件] [默认值],
……
[表约束条件]
);

加上了IF NOT EXISTS关键字,则表示:如果当前数据库中不存在要创建的数据表,则创建数据表;如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表。

必须指定:

表名
列名(或字段名),数据类型,长度

可选指定:

约束条件
默认值

-- 创建表
CREATE TABLE emp (
-- int类型
emp_id INT,
-- 最多保存20个中英文字符
emp_name VARCHAR(20),
-- 总位数不超过15位
salary DOUBLE,
-- 日期类型
birthday DATE
);

2、创建方式2

CREATE TABLE emp1 AS SELECT * FROM employees;
CREATE TABLE emp2 AS SELECT * FROM employees WHERE 1=2; -- 创建的emp2是空表
CREATE TABLE dept80
AS
SELECT employee_id, last_name, salary*12 ANNSAL, hire_date
FROM employees
WHERE department_id = 80;

查看数据表结构

在MySQL中创建好数据表之后,可以查看数据表的结构。MySQL支持使用 DESCRIBE/DESC 语句查看数据表结构,也支持使用 SHOW CREATE TABLE 语句查看数据表结构。

语法格式如下:

SHOW CREATE TABLE 表名\G

使用SHOW CREATE TABLE语句不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码。

修改表

修改表指的是修改数据库中已经存在的数据表的结构。

使用 ALTER TABLE 语句可以实现:

向已有的表中添加列
修改现有表中的列
删除现有表中的列
重命名现有表中的列

追加一个列

语法:

ALTER TABLE 表名 ADDCOLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;
ALTER TABLE dept80
ADD job_id varchar(15);

修改一个列

可以修改列的数据类型,长度、默认值和位置
修改字段数据类型、长度、默认值、位置的语法格式如下:

ALTER TABLE 表名 MODIFYCOLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名
2;
ALTER TABLE dept80
MODIFY salary double(9,2) default 1000;

对默认值的修改只影响今后对表的修改

重命名一个列

使用 CHANGE old_column new_column dataType子句重命名列。语法格式如下:

ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;
ALTER TABLE dept80
CHANGE department_name dept_name varchar(15);

删除一个列

删除表中某个字段的语法格式如下:

ALTER TABLE 表名 DROPCOLUMN】字段名
ALTER TABLE dept80
DROP COLUMN job_id;

重命名表

1、使用RENAME

RENAME TABLE emp
TO myemp;

2、

ALTER table dept
RENAME [TO] detail_dept; -- [TO]可以省略

删除表

在MySQL中,当一张数据表 没有与其他任何数据表形成关联关系 时,可以将当前数据表直接删除。
数据和结构都被删除
所有正在运行的相关事务被提交
所有相关索引被删除

语法格式:

DROP TABLE [IF EXISTS] 数据表1 [, 数据表2,, 数据表n];

DROP TABLE 语句不能回滚

清空表

TRUNCATE TABLE语句:
删除表中所有的数据
释放表的存储空间

TRUNCATE TABLE detail_dept;

TRUNCATE语句不能回滚,而使用 DELETE 语句删除数据,可以回滚

阿里巴巴Java开发手册:
在这里插入图片描述

谨慎清空、删除表

表删除 操作将把表的定义和表中的数据一起删除,并且MySQL在执行删除操作时,不会有任何的确认信息提示,因此执行删除操时应当慎重。在删除表前,最好对表中的数据进行 备份 ,这样当操作失误时可以对数据进行恢复,以免造成无法挽回的后果。

同样的,在使用 ALTER TABLE 进行表的基本修改操作时,在执行操作过程之前,也应该确保对数据进行完整的 备份 ,因为数据库的改变是 无法撤销的,如果添加了一个不需要的字段,可以将其删除;相同的,如果删除了一个需要的列,该列下面的所有数据都将会丢失。

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

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

相关文章

ES6解析赋值

ES6中新增了一种数据处理方式&#xff0c;可以将数组和对象的值提取出来对变量进行赋值&#xff0c;这个过程时将一个数据结构分解成更小的部分&#xff0c;称之为解析。 1.对象解析赋值: 在ES5中&#xff0c;要将一个对象的属性提取出来&#xff0c;需要经过一下几个过程。 …

aws sdk 学习和使用aws-sdk-go

https://www.go-on-aws.com/infrastructure-as-go/cdk-go/sdk example&#xff0c;https://github.com/awsdocs/aws-doc-sdk-examples golang的安装&#xff0c;使用1.15之后默认开启GO15VENDOREXPERIMENT的版本 yum install golang -y go env -w GOPROXYhttps://goproxy.cn,…

智慧教室解决方案-最新全套文件

智慧教室解决方案-最新全套文件一、建设背景1、教育信息化2.0行动计划2、中国教育现代化20353、加快推进教育现代化实施方案二、建设思路互联网时代教学环境定义三、建设方案四、获取 - 智慧教室全套最新解决方案合集一、建设背景 1、教育信息化2.0行动计划 “网络学习空间覆…

【直播】-DRM和TZC400的介绍-2022/11/26

直播背景和内容 最近有两位SOC大佬再和我探讨TZC的设计&#xff0c;以及使用场景。也有几位软件工程师&#xff0c;在深入得学习安全技术&#xff0c;也问到了TZC相关的技术。 然后就搞了本次的直播&#xff0c;共计17人报名。 上线12位同学。(有ASIC大佬、有软件大佬、芯片严…

shell脚本的条件判断3:探究[[]]和[]的区别

前言 实例中除非特别标注&#xff0c;否则都不是在centos中测试的。 一 简述 多数情况下[]和[[]]是可以通用的&#xff0c;两者的主要差异是&#xff1a;test或[]是符合POSIX标准的测试语句&#xff0c;兼容性更强&#xff0c;几乎可以运行在所有Shell解释器中&#xff0c;相…

驱动保护进程 句柄降权 杀软自保 游戏破图标技术原理和实现

文章目录实现效果实现原理代码实现实现效果句柄降权对抗(实现破游戏图标和关闭杀软自保)降权对抗延伸游戏降权对抗杀软自保对抗隐藏Object钩子回调完整代码实现效果 效果如图所示&#xff1a; 无法结束进程&#xff1a; CE无图标&#xff1a; 内存无法读取 可以看到被保护的进…

STC 51单片机41——汇编 串口连续发送数据

; 仿真时&#xff0c;单步运行&#xff0c;记得设置虚拟串口数据 ORG 0000H MOV TMOD ,#20H ;定时器1&#xff0c;工作方式2&#xff0c;8位重装载 MOV TH1,#0FDH ; 波特率9600 MOV TL1,#0FDH SETB TR1 ; 启动T1 MOV SCON ,#40H ; 串口工作方式1 …

[激光原理与应用-20]:《激光原理与技术》-6- 谐振腔的结构、作用、工作原理

目录 第1章 谐振腔简介 1.1 什么是谐振腔 1.2 什么是光学谐振腔 1.3 谐振腔的作用 1.4 什么是镜片镀膜 第2章 谐振腔的结构与工作原理 2.1 谐振腔的结构 2.2 谐振腔的分类 2.3 激活介质与谐振腔的工作原理 第1章 谐振腔简介 1.1 什么是谐振腔 谐振腔&#xff0c;是…

[Java反序列化]—CommonsCollections4

0x01&#xff1a; 这条链子 前半段跟CC3 一样 &#xff0c;都是动态加载字节码的过程&#xff0c;后边的构造用到了两个类&#xff0c;PriorityQueue和TransformingComparator Gadget chain:ObjectInputStream.readObject()PriorityQueue.readObject()...TransformingComparat…

如何Cisco的学员 摆脱游客登录

Cisco Packet Tracer 是一款强大的网络模拟工具&#xff0c;可用于在虚拟实验环境中练习网络、物联网和网络安全技能。您不需要任何硬件&#xff0c;即可获得实操经验&#xff01; 相信很多小伙伴在使用cisco packet tracer这个思科数据包跟踪器 - 网络仿真工具时在登录的时候…

云原生k8s的前世今生--Docker

不可修改(immutability)和幂等性(idempotent)是一致依赖困扰软件发布与运维的两个难题。以nodejs等解析执行的应用而言&#xff0c;如何控制发布后的软件不被修改运行&#xff0c;发布后&#xff0c;经常发现因为运行环境差异导致各种水土不服&#xff1a;比如应用程序对底层操…

【C++数据结构】渐近记法

渐近记法 3.1 引言 考察程序的操作计数和执行步数有两个重要的原因&#xff1a; 1)预测程序运行时间如何随着实例特征的变化而变化&#xff1b; 2)对两个功能相同的程序&#xff0c;比较它们的时间复杂度。 存在问题&#xff1a; 在使用操作计数时&#xff0c;我们关注的…

Vue生命周期--Vue实例创建过程详解

每个Vue实例在被创建时都要经过一系列的初始化过程--例如&#xff0c;需要设置数据监听、编译模板、将实例挂载到DOM并在数据变化时更新DOM等。同时在这个过程中也会运行一些叫做 生命周期钩子的函数&#xff0c;这给了用户在不同阶段添加自己的代码的机会。 生命周期图示&…

Linux入侵排查

Linux入侵排查 实验内容 当系统被黑客入侵、需短时间查找入侵来源&#xff0c;还原入侵事故过程&#xff0c;同时给出解决方案与防范措施。以下给出一些入侵排查思路 netstat -antpl 查看当前端口状态是LISTEN的端口 针对对外开放的端口&#xff0c;查看日志 先查看ssh爆破的…

OpenGL ES 学习(三) -- 绘制平面图形

上一章中&#xff0c;已经对 OpenGL 的编程语言 GLSL 和渲染模式有了一定的了解&#xff0c;今天&#xff0c;将运用之前的知识&#xff0c;完成一些平面图形的操作。效果如下&#xff1a; 如果你对 OpenGL 的基本概念或者渲染流程不清晰&#xff0c;建议先看 OpenGL ES 学习…

D. Insert a Progression(绝对值的性质)

Problem - 1671D - Codeforces 给你一个n个整数的序列a1,a2,...,an。你还得到了x个整数1,2,...,x。 每个整数可以插入序列的开头&#xff0c;也可以插入序列的结尾&#xff0c;或者插入序列的任何元素之间。 所得序列a′的得分是其中相邻元素的绝对差异之和&#xff08;∑i1n…

实验跟踪

管理和跟踪机器学习实验。 Intuition 到目前为止&#xff0c;一直在训练和评估不同的基线&#xff0c;但还没有真正跟踪这些实验。将解决这个问题&#xff0c;但定义一个适当的实验跟踪过程&#xff0c;将用于所有未来的实验&#xff08;包括超参数优化&#xff09;。实验跟踪是…

【JavaWeb】CookieSession

文章目录一.Cookie❤️1.Cookie的概念2.创建Cookie3.获取Cookie4.修改Cookie的值5.Cookie的生命周期控制6.Cookie有效路径Path的设置7.免输入用户名登录二.Session❤️1.session的概念2.Session的创建和获取3.Session域数据的存取4.Session的生命周期控制5.浏览器和Session之间…

pytorch深度学习实战lesson28

第二十八课 resnet的梯度计算&#xff08;如何缓解梯度问题&#xff09; 沐神说&#xff1a;“假设你在卷积神经网络里面&#xff0c;只要了解一个神经网络的话&#xff0c;你就了解 rest net 就行了。 rest net 是一个很简单的也是很好用的一个网络。这也是大家会经常在实际中…

OpenCV-Python小应用(六):车道线检测

OpenCV-Python小应用&#xff08;六&#xff09;&#xff1a;车道线检测前言前提条件实验环境基于霍夫变换的车道线检测参考文献前言 本文是个人使用OpenCV-Python的应用案例&#xff0c;由于水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff…