MySQL基础篇第10章(创建和管理表)

news2025/1/15 20:53:29

1. 基础知识

1.1 一条数据存储的过程

存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只 能是一团乱麻,无从下手。

那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起来呢? 在 MySQL 中, 一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。

在这里插入图片描述

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

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

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

1.2 标识符命名规则

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

1.3 MySQL中的数据类型

在这里插入图片描述

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

在这里插入图片描述

2. 创建和管理数据库

2.1 创建数据库

  • 方式一:创建数据库

    CREATE DATABASE 数据库名; 
    
  • 方式二:创建数据库并指定字符集

    CREATE DATABASE 数据库名 CHARACTER SET '字符集';
    
  • 方式三:判断数据库是否已经存在,不存在则创建数据库( 推荐 )

    CREATE DATABASE IF NOT EXISTS 数据库名;
    

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

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

2.2 查看使用数据库

  • 查看当前所有数据库

    SHOW DATABASES; #有一个S,代表多个数据库
    
  • 查看当前正在使用的数据库

    SELECT DATABASE();  #使用的一个 mysql 中的全局函
    
  • 查看指定库下所有的表

    SHOW TABLES FROM 数据库名;
    
  • 查看数据库的创建信息

    SHOW CREATE DATABASE 数据库名;
    

    或者

    SHOW CREATE DATABASE 数据库名\G
    
  • 使用/切换数据库

    USE 数据库名;
    

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

2.3 修改数据库

  • 更改数据库字符集

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

2.4 删除数据库

  • 方式1:删除指定的数据库

    DROP DATABASE 数据库名;
    
  • 方式2::删除指定的数据库( 推荐 )

    DROP DATABASE IF EXISTS 数据库名;
    

3. 创建表

3.1 创建方式1

  • 必须具备

    • CREATE TABLE权限
    • 存储空间
  • 语法格式

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

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

  • 必须指定

    • 表名
    • 列名(或字段名),数据类型,长度
  • 可选指定

    • 约束条件
    • 默认值
  • 创建表举例1:

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

    查看emp表的表结构

    	DESC emp;
    

    在这里插入图片描述
    MySQL在执行建表语句时,将id字段的类型设置为int(11),这里的11实际上是int类型指定的显示宽度,默认的显示宽度为11。也可以在创建数据表的时候指定数据的显示宽度。

  • 创建表举例2:

    CREATE TABLE IF NOT EXISTS dept(    
    	-- int类型,自增    
    	deptno INT(2) AUTO_INCREMENT,    
    	dname VARCHAR(14),    
    	loc VARCHAR(13),    
    	-- 主键    
    	PRIMARY KEY (deptno) 
    );
    

    查看dept表的表结构

    DESCRIBE dept;
    

    在这里插入图片描述

    在MySQL 8.x版本中,不再推荐为INT类型指定显示长度,并在未来的版本中可能去掉这样的语法

3.2 创建方式2

  • 基于现有的表,同时导入数据

  • 使用 AS subquery 选项,将创建表和插入数据结合起来
    在这里插入图片描述

    • 指定的列和子查询中的列要一一对应
    • 通过列名和默认值定义列
    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;
    
    DESCRIBE dept80;
    

    在这里插入图片描述
    在这里插入图片描述

3.3 查看数据表结构

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

  • 语法格式如下
    SHOW CREATE TABLE 表名\G
    
    使用SHOW CREATE TABLE语句不仅可以查看表创建时的详细语句,还可以查看存储引擎和字符编码。

4. 修改表

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

使用 ALTER TABLE 语句可以实现:

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

4.1追加一个列

语法格式如下:

ALTER TABLE 表名 
ADDCOLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;

举例:

ALTER TABLE dept80 
ADD job_id varchar(15);
ALTER TABLE dept_id 
ADD job_id varchar(15) FIRST;#添加到第一列
ALTER TABLE deptName 
ADD job_id varchar(15) AFTER dept_id ;#添加到dept_id后一列

在这里插入图片描述

4.2 修改一个列

  • 可以修改列的数据类型,长度、默认值和位置

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

    ALTER TABLE 表名 
    MODIFYCOLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名 2;
    
  • 举例:

    ALTER TABLE dept80 
    MODIFY last_name VARCHAR(30)
    
    ALTER TABLE dept80 
    MODIFY salary double(9,2) default 1000;
    
  • 对默认值的修改只影响今后对表的修改

  • 此外,还可以通过此种方式修改列的约束。这里暂先不讲

4.3 重命名一个列

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

ALTER TABLE 表名 
CHANGE 【column】 列名 新列名 新数据类型;

举例:

ALTER TABLE  dept80 
CHANGE department_name dept_name varchar(15); 

4.5 删除一个列

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

ALTER TABLE 表名 
DROPCOLUMN】字段名

举例:

ALTER TABLE  dept80 
DROP COLUMN  job_id;

5. 重命名表

  • 方式一:使用RENAME

    RENAME TABLE emp TO myemp;
    
  • 方式二:

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

6. 删除表

  • 在MySQL中,当一张数据表没有与其他任何数据表形成关联关系时,可以将当前数据表直接删除。

  • 数据和结构都被删除

  • 所有正在运行的相关事务被提交

  • 所有相关索引被删除

  • 语法格式:

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

    IF EXISTS 的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存 在相应的数据表,则忽略删除语句,不再执行删除数据表的操作。

  • 举例:

    DROP TABLE dept80;
    

    DROP TABLE 语句不能回滚

7. 清空表

清空表中的所有数据,但是表结构保留。

  • TRUNCATE TABLE语句:

    • 删除表中所有的数据
    • 释放表的存储空间
  • 举例:

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

  • 对比:

    SET autocommit = FALSE;
       
    DELETE FROM emp2; 
    #TRUNCATE TABLE emp2; 
      
    SELECT * FROM emp2;  
     
    ROLLBACK;   
    
    SELECT * FROM emp2;
    

阿里开发规范:
【参考】TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无事务且不触发 TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。
说明:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。

8. 内容拓展

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

npm 包 chalk-next 被开发者投毒,源码 SRC 目录被删除

一、事件简述 1月5日,有开发者在 twitter 中发文称遭遇了名为 chalk-next 的组件投毒事件,该组件存在收集配置信息和删除本地文件的恶意逻辑,当前 NPM 仓库已经下线了该组件。 chalk-next 组件的开发者也是 vue-admin-beautiful 项目的作者 …

配对交易策略设计

可交易的一个关键要求是两个股票的对数价格序列之间存在均衡关系。 而均衡关系由两个值描述:协整系数以及均衡值。一旦确定这两个值,它们就可以用来构建两种股票的对数价格的线性组合,即所谓的价差。配对交易是对价差均值回归特性的押注。当…

Gigabyte B450 Aorus Elite AMD Ryzen 5 3600电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况主板Gigabyte B450 Aorus Elite处理器AMD Ryzen 5 3600已驱动内存16GB Samsung DDR3 1600MHz已驱动硬盘Samsung 840 Evo 250GB已驱动显卡AMD Radeon RX570 4gb已驱动声卡Realtek ALC892已驱动网卡Realtek 8111G已驱动无线网卡蓝牙Asus AX3000 Dual Band PCI-E …

(一)云原生基础概念-容器-Kubernets

文章目录云原生云原生历程云原生技术范畴云原生与传统部署云原生关键技术传统vs微服务vsServerlessServerless容器分层复用模式容器运行构建镜像容器引擎架构-moby容器和VM之间的差异Kubernetes调度自动恢复水平伸缩总架构Master架构Node架构Pod一个kubernet架构VolumeDeployme…

【计组】GPU--《深入浅出计算机组成原理》(六)

​课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 GPU 是随着计算机里面需要渲染三维图形的出现,而发展起来的设备。 一、GPU和图形渲染 完整的5 个步骤的渲染流程一般也被称为图形流水线(Graphic Pipeline) …

SREWorks v1.4 版本发布 | 离线安装 前端重构

在 v1.3 版本之后,SREWorks 团队收集了较多的用户反馈,大家普遍对于 SREWorks 的内网离线安装有较大的诉求。于是团队决定进一步增强这部分的安装能力。 前端工程部分 (frontend),为了开发者更加敏捷高效的协作开发,以及便于社区…

web(一)—— HTML基础(web标准、开发工具、标签)

目标能够理解HTML的 基本语法 和标签的关系 能够使用 排版标签 实现网页中标题、段落等效果 能够使用 相对路径 选择不同目录下的文件 能够使用 媒体标签 在网页中显示图片、播放音频和视频 能够使用 链接标签 实现页面跳转功能一、基础认知目标:认识 网页组成 和 五…

vite使用css的各种功能

1.使用公共的变量(:root)定义在root的变量可以进行类的使用 :root { font-size: 160px;--main-bg-color:red } .red{color:var(--main-bg-color) }你看这个hello world变得多大多红 2.vite使用postcss-plugins/console’ 2-1安装:cnpm install postcss-plugins/co…

最大公约数-欧几里得算法

最近在复习数论,欢迎来到数论的起点gcd 最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。 欧几里得算法(辗转相除法) 已知两个数a和b,求出两数的最大公约数首先证明: 不妨…

uni-app入门:组件的基本使用

1.组件概念 2.组件分类 2.1 基础组件 2.2 拓展组件 2.3 easycom规范 3.自定义组件以及使用 3.1局部注册 3.2全局注册 1.组件概念首先讲一下什么是组件 官方说法: 组件是视图层的基本组成单元。 组件…

MySQL高级【存储过程】

1:存储过程1.1:介绍存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过…

玩转系统|Ventoy – 免格式化,超简单的『多合一』系统启动盘制作神器

Ventoy 现在可谓是U 盘启动界的一支独秀,简单来说,Ventoy 是一个制作可启动 U 盘的开源工具。有了 Ventoy 你就无需反复地格式化 U 盘,你的U盘不在局限于绑定某个PE系统,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件拷贝到 U …

风控中的企业利润表的解读

对于中小微企业财务报表数据的三张最重要的报表——资产负债表、利润表、现金流量表,在评估企业的资质能力与风险程度等方面,都发挥着非常重要的作用。作为企业财务数据最基础的三个报表,每一类报表的数据指标信息,都从不同维度客…

用javascript分类刷leetcode18.队列(图文视频讲解)

队列的特点:先进先出(FIFO)队列的时间复杂度:入队和出队O(1),查找O(n)优先队列:priorityQueue,按优先级出队,实现 Heap(Binary,Fibonacci...)js里没有队列,但是可以用数组…

【数据结构】5.4 二叉树的性质和存储结构

二叉树的性质 性质1: 在二叉树的第 i 层上至多有 2 i-1 个结点(i > 1)。 证明:利用归纳法证明此性质。 第 i 层上至少也应该有 1 个结点,如果是 0 个结点的话那就没有这一层了。 性质2: 深度为 k &a…

java static 关键字

目录 一、前言 二、用途和效果 2.1. static修饰的范围 2.2.执行特点 2.3.static关键字的用途 三. 注意 static关键字误区: 一、前言 在我们学习java中会碰到许多关键字 , 例如: static、final、 transient、instanceof、break 、continue 等其他的关键字,今天…

CBM|用于lncRNA-疾病关联预测的数据资源和计算方法(综述)

CBM|用于lncRNA-疾病关联预测的数据资源和计算方法(综述) 最近搞了个公众号《AI and Bioinformatics》介绍应用于生物信息学的人工智能算法和研究进展,以及网络表示学习算法研究,欢迎向本公众号投稿文献解读类原创文章&#xff0…

11_7、Java集合之Collections工具类的使用

一、作用是操作Collection和Map的集合操作类。二、常用方法1、排序操作:(均为static方法)reverse(List):反转 List 中元素的顺序shuffle(List):对 List 集合元素进行随机排序sort(List):根据元素的自然顺序…

20.04安装carla0.9.13记录

已经多次在不同版本的系统18.04、20.04安装carla不同源码版本0.9.11,0.9.12,0.9.13了,发现每次安装总是会遇到那么几个问题,现在新配了主机又要重新安装carla,这次准备详细的记录一下,方便未来安装时又遇到…

共享单车蓝牙锁方案phy6222系列蓝牙芯片

公共交通工具的"最后一公里"是城市居民出行采用公共交通出行的主要障碍,也是建设绿色城市、低碳城市过程中面临的主要挑战。随着科技的发展,物联网领域市场的不断开拓BLE协议在共享交通工具上打开了突破口,目前已广泛应用及遍布我们…