docker数据科学与spark镜像源与使用常见问题疑难解答

以下是一些与数据挖掘和数据科学相关的 Docker 镜像源:

  • jupyter/all-spark-notebook: 此镜像包含 Jupyter Notebook 和 Spark 的完整环境,用于 Spark 开发和学习。

  • rocker/tidyverse: 此镜像包含用于 R 语言的 tidyverse 数据科学包。

  • jupyter/scipy-notebook: 此镜像包含用于 Python 语言的 SciPy 科学计算库。

  • rstudio/r-shiny: 此镜像包含用于 R 语言的 Shiny Web 应用程序框架。

  • data-science-stack/docker-stack: 此镜像包含用于数据科学的各种工具和库。

这些只是一些可用的镜像源的示例。有关更多信息,请参阅以下资源:

  • Docker 官方文档: Docker Docs
  • Docker Hub: https://hub.docker.com/
  • Jupyter Notebooks: Project Jupyter | Home
  • Spark: Apache Spark™ - Unified Engine for large-scale data analytics
  • Tidyverse: Tidyverse
  • SciPy: SciPy
  • Shiny: Shiny
  • Data Science Stack: <移除了无效网址>

运行容器

使用 Jupyter Docker Stack 之一需要两种选择:

  1. 您希望使用哪个 Docker 镜像

  2. 您希望如何从该镜像启动 Docker 容器

本节提供有关第二个的详细信息。

使用 Docker CLI 

您可以使用Docker 命令行界面从 Jupyter Docker Stacks 启动本地 Docker 容器。使用 CLI 配置容器的方法有很多种。以下是一些常见的模式。

示例1 

如果本地主机上尚不存在该命令,则此命令将从 Quay.io 中提取jupyter/scipy-notebook标记的映像。2024-01-15然后,它启动一个运行带有 JupyterLab 前端的 Jupyter Server 的容器,并在主机端口 8888 上公开服务器。服务器日志显示在终端中,并包含服务器的 URL。

docker run -it -p 8888:8888 quay.io/jupyter/scipy-notebook:2024-01-15

# Entered start.sh with args: jupyter lab

# ...

#     To access the server, open this file in a browser:
#         file:///home/jovyan/.local/share/jupyter/runtime/jpserver-7-open.html
#     Or copy and paste one of these URLs:
#         http://eca4aa01751c:8888/lab?token=d4ac9278f5f5388e88097a3a8ebbe9401be206cfa0b83099
#         http://127.0.0.1:8888/lab?token=d4ac9278f5f5388e88097a3a8ebbe9401be206cfa0b83099

Ctrl-C两次将关闭服务器,但将容器完好无损地保留在磁盘上,以便以后使用如下命令重新启动或永久删除:

# list containers
docker ps --all
# CONTAINER ID   IMAGE                                       COMMAND                  CREATED              STATUS                     PORTS     NAMES
# eca4aa01751c   quay.io/jupyter/scipy-notebook:2024-01-15   "tini -g -- start-no…"   About a minute ago   Exited (0) 5 seconds ago             silly_panini

# start the stopped container
docker start --attach -i eca4aa01751c
# Entered start.sh with args: jupyter lab
# ...

# remove the stopped container
docker rm eca4aa01751c
# eca4aa01751c

示例2 

如果本地主机上尚不存在该命令,则此命令将从 Quay.io 中提取jupyter/r-notebook标记的映像。2024-01-15然后,它启动一个运行服务器的容器,并在主机端口 10000 上公开该服务器。服务器日志显示在终端中,并包含服务器的 URL,但使用内部容器端口 (8888),而不是正确的主机端口 (10000)。

docker run -it --rm -p 10000:8888 -v "${PWD}":/home/jovyan/work quay.io/jupyter/r-notebook:2024-01-15

Ctrl-C两次将关闭服务器并立即销毁 Docker 容器。~/work容器中的新文件和更改将被保留。在容器中所做的任何其他更改都将丢失。

笔记

默认情况下,jupyter 的 root_dir是/home/jovyan。因此,新的笔记本将保存在那里,除非您更改文件浏览器中的目录。

要更改默认目录,您需要ServerApp.root_dir通过将此行添加到上一个命令来指定:。start-notebook.py --ServerApp.root_dir=/home/jovyan/work

示例3 

如果本地主机上尚不存在标记的映像,则此命令将从Quay.io中提取jupyter/all-spark-notebook当前标记的映像。然后,它启动一个名为运行 JupyterLab 服务器的容器,并在随机选择的端口上公开该服务器。latestlatestnotebook

docker run --detach -P --name notebook quay.io/jupyter/all-spark-notebook

在哪里:

  • --detach:将以分离模式运行容器

您还可以使用以下 docker 命令来查看端口和 Jupyter 服务器令牌:

# get the random host port assigned to the container port 8888
docker port notebook 8888
# 0.0.0.0:49153
# :::49153

# get the notebook token from the logs
docker logs --tail 3 notebook
    # Or copy and paste one of these URLs:
    #     http://878f1a9b4dfa:8888/lab?token=d336fa63c03f064ff15ce7b269cab95b2095786cf9ab2ba3
    #  or http://127.0.0.1:8888/lab?token=d336fa63c03f064ff15ce7b269cab95b2095786cf9ab2ba3

总之,在主机上访问服务器的 URL(在本例中为http://127.0.0.1:49153/lab?token=d336fa63c03f064ff15ce7b269cab95b2095786cf9ab2ba3 ) 。

容器在后台运行,直到被其他 Docker 命令停止和/或删除:

# stop the container
docker stop notebook
# notebook

# remove the container permanently
docker rm notebook
# notebook

常见问题疑难解答

排除故障时,您可能会看到意外行为或收到错误消息。本节提供有关如何识别和解决一些最常见问题的建议。

本文档中使用的大多数标志在文档的“通用功能”、“Docker 选项”部分中进行了详细解释 。docker run

安装卷时权限被拒绝

-v如果您在使用以下标志挂载本地卷或主机目录时运行 Docker 容器:

docker run -it --rm \
    -p 8888:8888 \
    -v <my-vol>:<container-dir> \
    quay.io/jupyter/minimal-notebook:latest

尝试访问已安装的卷时,您可能会遇到权限问题:

# assuming we mounted the volume in /home/jovyan/stagingarea
# root is the owner of the mounted volume
ls -ld ~/stagingarea/
# drwxr-xr-x 2 root root 4096 Feb  1 12:55 stagingarea/

touch stagingarea/kale.txt
# touch: cannot touch 'stagingarea/kale.txt': Permission denied

在这种情况下,容器的用户 ( jovyan) 和已安装卷的所有者 ( root) 对容器的目录和安装具有不同的权限级别和所有权。以下部分介绍了其中一些场景以及如何修复它们。

一些值得尝试的事情:

  1. 更改卷安装的所有权

    您可以使用该命令更改卷装载的所有权chown。对于 docker-stacks 映像,您可以设置CHOWN_EXTRACHOWN_EXTRA_OPTS环境变量。

    例如,要将卷挂载的所有权更改为jovyan用户(Docker 映像中的非特权默认用户):

    # running in detached mode - can also be run in interactive mode
    docker run --detach \
        -v <my-vol>:<container-dir> \
        -p 8888:8888 \
        --user root \
        -e CHOWN_EXTRA="<container-dir>" \
        -e CHOWN_EXTRA_OPTS="-R" \
        quay.io/jupyter/minimal-notebook
    

    在哪里:

    • CHOWN_EXTRA=<some-dir>,<some-other-dir>:将更改指定容器目录的所有权和组(默认非递归)。您需要提供以/.

    • CHOWN_EXTRA_OPTS="-R": 将递归地更改 中指定的目录的所有权和组CHOWN_EXTRA

    • --user root:您必须使用 root 用户运行容器才能在运行时更改所有权。

    现在访问挂载应该可以按预期工作:

    # assuming we mounted the volume in /home/jovyan/stagingarea
    ls -ld ~/stagingarea
    # drwxr-xr-x 2 jovyan users 4096 Feb  1 12:55 stagingarea/
    
    touch stagingarea/kale.txt
    # jovyan is now the owner of /home/jovyan/stagingarea
    # ls -la ~/stagingarea/
    # -rw-r--r-- 1 jovyan users    0 Feb  1 14:41 kale.txt
    

    补充笔记

    • 如果要在目录中安装卷/home/,则可以使用和标志而不是上面示例中的和。-e CHOWN_HOME=yesCHOWN_HOME_OPTS="-R"-e CHOWN_EXTRA-e CHOWN_EXTRA_OPTS

    • 此解决方案应该适用于您创建了 docker 卷(即使用命令)并使用中的标志安装它的大多数情况。docker volume create --name <my-volume>-vdocker run

  2. 将容器的 UID/GID 与主机的 UID/GID 相匹配

    Docker 处理挂载主机目录的方式与挂载卷的方式不同,尽管语法本质上是相同的(即-v)。

    当您使用该标志初始化 Docker 容器时-v,主机目录将直接绑定安装到容器中。因此,权限和所有权将被复制,并将与本地主机中的权限和所有权(包括用户 ID)相同,这可能会导致在尝试访问目录或在其中创建/修改文件时出现权限错误

    假设您的本地用户分别有UIDGID12345678要修复本地目录和容器目录之间的 UID 差异,您可以使用显式的NB_UID和来运行容器NB_GID以匹配本地用户的 UID:

    docker run -it --rm \
        --user root \
        -p 8888:8888 \
        -e NB_UID=1234 \
        -e NB_GID=5678 \
        -v "${PWD}"/test:/home/jovyan/work \
        quay.io/jupyter/minimal-notebook:latest
    
    # you should see an output similar to this
    # Update jovyan's UID:GID to 1234:5678
    # Running as jovyan: bash
    

    在哪里:

    • NB_IUD并且NB_GID应该与本地用户的 UID 和 GID 匹配。

    • 必须使用来确保 和在运行时更新。--user rootUIDGID

补充笔记

  • 这种方法需要注意的是,由于这些更改是在运行时应用的,因此如果您需要重新创建容器(即在删除/销毁容器之后),您将需要使用适当的标志和环境变量重新运行相同的命令。

  • 如果传递数字 UID,则它必须在 0-2147483647 范围内

  • 此方法仅更新现有jovyan用户的 UID 和 GID,而不是创建新用户。从上面的例子来看:

    id
    # uid=1234(jovyan) gid=5678(jovyan) groups=5678(jovyan),100(users)
    

更改容器中UID/GID和USER后的权限问题

如果您还创建了新用户,则可能会遇到以下任一问题:

  • 用户root是卷的所有者/home或已安装的卷

  • 启动容器时,您会收到如下错误Failed to change ownership of the home directory.

  • 尝试打包时权限被拒绝conda install

一些值得尝试的事情:

  1. 确保新用户拥有卷的所有权/home和卷安装

    例如,假设您要创建一个callisto具有 aGIDUIDof的用户1234。您必须将以下标志添加到 docker run 命令中:

     docker run -it --rm \
         -p 8888:8888 \
         --user root \
         -e NB_USER=callisto \
         -e NB_UID=1234 \
         -e NB_GID=1234 \
         -e CHOWN_HOME=yes \
         -e CHOWN_HOME_OPTS="-R" \
         -w "/home/callisto" \
         -v "${PWD}"/test:/home/callisto/work \
         quay.io/jupyter/minimal-notebook
    
     # Updated the jovyan user:
     # - username: jovyan       -> callisto
     # - home dir: /home/jovyan -> /home/callisto
     # Update callisto UID:GID to 1234:1234
     # Attempting to copy /home/jovyan to /home/callisto...
     # Success!
     # Ensuring /home/callisto is owned by 1234:1234
     # Running as callisto: bash
    

    在哪里:

    • -e NB_USER=callisto:将创建一个新用户callisto并自动将其添加到users组中(不会删除jovyan)

    • -e NB_UID=1234and : 将新用户 ( )的and设置为-e NB_GID=1234UIDGIDcallisto1234

    • -e CHOWN_HOME_OPTS="-R"和:确保新用户是目录和子目录的所有者(设置将确保递归应用此更改)-e CHOWN_HOME=yes/homeCHOWN_HOME_OPTS="-R

    • -w "/home/callisto"将工作目录设置为新用户的主目录

    补充笔记

    在上面的示例中,该-v标志用于将本地卷安装到新用户的/home目录中。

    但是,如果您在其他地方安装卷,则还需要使用该标志来避免任何权限问题(请参阅本页上的“安装卷时权限被拒绝”部分)。-e CHOWN_EXTRA=<some-dir>

  2. 动态分配用户 ID 和 GID

    上述情况确保该目录由具有特定和/home的新创建用户拥有,但如果您想动态分配新用户的和,可以进行以下调整:UIDGIDUIDGID

    docker run -it --rm \
        -p 8888:8888 \
        --user root \
        -e NB_USER=callisto \
        -e NB_UID="$(id -u)" \
        -e NB_GID="$(id -g)"  \
        -e CHOWN_HOME=yes \
        -e CHOWN_HOME_OPTS="-R" \
        -w "/home/callisto" \
        -v "${PWD}"/test:/home/callisto/work \
        quay.io/jupyter/minimal-notebook
    

    在哪里:

    • "$(id -u)" and "$(id -g)"将动态地将执行命令的用户的UID和分配给新用户 ( )GIDdocker runcallisto

针对与权限相关的错误的其他提示和故障排除命令

  • 将绝对路径传递给-v标志:

    -v "${PWD}"/<my-vol>:/home/jovyan/work
    

    此示例使用语法${PWD},该语法在运行时替换为当前目录的完整路径。/目标路径也应该是以诸如开头的绝对路径/home/jovyan/work

  • 您可能需要考虑使用 Docker 本机和标志而不是and :--user <UID>--group-add users-e NB_UID-e NB_GID

    # note this will use the same UID from
    # the user calling the command, thus matching the local host
    
    docker run -it --rm \
        -p 8888:8888 \
        --user "$(id -u)" --group-add users \
        -v <my-vol>:/home/jovyan/work quay.io/jupyter/datascience-notebook
    

    此命令将使用特定用户 UID 启动容器,并将该用户添加到组中以修改默认目录users中的文件。进一步避免尝试附加软件包时出现问题。/home/opt/condaconda install

  • 使用并查找该部分 来验证是否已相应地创建并安装了卷:docker inspect <container_id>Mounts

    {
      "Mounts": [
        {
          "Type": "volume",
          "Name": "my-vol",
          "Source": "/var/lib/docker/volumes/stagingarea/_data",
          "Destination": "/home/jovyan/stagingarea",
          "Driver": "local",
          "Mode": "z",
          "RW": true,
          "Propagation": ""
        }
      ]
    }
    

从特定渠道安装 conda 包时出现问题

默认情况下,docker-stacks 映像的 conda 通道优先级设置为strict。当尝试从优先级较低的通道安装软件包时,这可能会导致问题。

conda config --show | grep priority
# channel_priority: strict

# to see its meaning
conda config --describe channel_priority

# checking the current channels
conda config --show default_channels
# default_channels:
# - https://repo.anaconda.com/pkgs/main
# - https://repo.anaconda.com/pkgs/r

从其他渠道安装软件包:

您可以bioconda通过禁用该channel_priority设置来安装来自其他 conda 频道(例如 )的软件包:

# install by disabling channel priority at еру command level
conda install --no-channel-priority -c bioconda bioconductor-geoquery

通用功能页面的使用替代渠道部分提供了更多详细信息。

令牌被拒绝

如果您是 VSCode 和 Jupyter 扩展的常规用户,则在使用任何 docker-stacks 映像时可能会遇到以下任一问题:

  • 单击命令行日志中显示的 URL 时,您会在 Web 浏览器上看到“无法访问此站点”页面

  • 使用生成的令牌和/或 URL 会导致 Jupyter“令牌身份验证已启用”页面上出现“无效凭据”错误

    # example log output from the docker run command
    
    # [...]
    # Or copy and paste one of these URLs:
    #   http://3d4cf3809e3f:8888/?token=996426e890f8dc22fa6835a44442b6026cba02ee61fee6a2
    #   or http://127.0.0.1:8888/?token=996426e890f8dc22fa6835a44442b6026cba02ee61fee6a2
    

一些值得尝试的事情:

  1. 在后台查找挥之不去的 Jupyter 进程

    您要尝试的第一件事是检查后台是否没有其他 Jupyter 进程正在运行:

    ps aux | grep jupyter
    

    如果存在正在运行的现有进程,您可以使用以下命令终止它们:

    # example output from the above command
    # my-user 3412 ... --daemon-module=vscode_datascience_helpers.jupyter_daemon
    
    # using the pid from the above log
    kill 3412
    
  2. 在 VSCode 中关闭 Jupyter 自动启动

    或者 - 您可能需要确保打开该设置以避免将来出现此问题。Jupyter: Disable Jupyter Auto Start

    您可以通过VScode 中的菜单实现此目的:Settings > Jupyter

    VSCode 设置 UI - Jupyter:选中“禁用 Jupyter 自动启动”复选框

  3. 将容器路由到未使用的本地端口

    不要将 Docker 端口映射8888到本地端口8888,而是映射到另一个未使用的本地端口。您可以看到映射到本地端口的示例8001

    docker run -it --rm -p 8001:8888 quay.io/jupyter/datascience-notebook
    

    当终端提供访问Jupyter的链接:http://127.0.0.1:8888/lab?token=80d45d241a1ba4c2…8888时,将URL中的默认端口值修改为命令映射的端口值。docker run

    在本例中,我们使用 8001,因此编辑后的链接将是:http://127.0.0.1: 8001/lab?token=80d45d241a1ba4c2 ... 。

    注意:Jupyter 的端口映射在 Docker 之外还有其他应用程序。例如,当使用 SSH 控制云设备时,它可用于允许多个 Jupyter 实例。

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

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

相关文章

代码随想录算法训练营Day25|回溯算法·组合总和III,电话号码的字母组合

组合总和III 题目&#xff1a;找出所有相加之和为n的k个数的组合。组合中只允许含有1-9的正整数&#xff0c;并且每种组合中不存在重复的数字。 组合变量个数为k个&#xff0c;和为n。简单思路是使用k重循环&#xff0c;一层层找出来&#xff0c;然后把每一层的数相加&#x…

单链表的介绍

一.单链表的概念及结构 概念&#xff1a;链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 结构&#xff1a;根据个人理解&#xff0c;链表的结构就像火车厢一样&#xff0c;一节一节连在一起的&#x…

浅析Linux追踪技术之ftrace:Event Tracing

文章目录 概述使用Event Tracing使用set_event接口使用enable接口 Event配置Event formatEvent Filtering过滤规则设置过滤器 Event TriggerTrigger语法 Trace marker相关参考 概述 Event Tracing&#xff08;事件追踪&#xff09;利用在内核代码中加入的各种Tracepoint&#…

计算机网络概述习题拾遗

学习目标&#xff1a; 自下而上第一个提供端到端服务的层次 路由器、交换机、集线器实现的功能层 TCP/IP体系结构的网络接口层对应OSI体系结构的哪两个层次 分组数量对总时延的影响 如果这篇文章对您有帮助&#xff0c;麻烦点赞关注支持一下动力猿吧&#xff01; 学习内容…

Hive的Join连接、谓词下推

前言 Hive-3.1.2版本支持6种join语法。分别是&#xff1a;inner join&#xff08;内连接&#xff09;、left join&#xff08;左连接&#xff09;、right join&#xff08;右连接&#xff09;、full outer join&#xff08;全外连接&#xff09;、left semi join&#xff08;左…

课时27:内容格式化_输入格式化_EOF原理

3.2.1 EOF原理 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 场景需求 在运维岗位中&#xff0c;有非常多的场景需要我们在脚本中编写应用软件的配置文件。在这些应用软件的配置文件中&#xff0c;经常携带大量的格式&#xff0…

第四篇【传奇开心果微博系列】Python微项目技术点案例示例:美女颜值判官

传奇开心果微博系列 系列微博目录Python微项目技术点案例示例系列 微博目录一、微项目目标二、雏形示例代码三、扩展思路四、添加不同类型的美女示例代码五、增加难度等级示例代码六、添加特殊道具示例代码七、设计关卡系统示例代码八、添加音效和背景音乐示例代码九、多人游戏…

一文看懂春晚刘谦魔术

魔术步骤 step1: 准备4张牌,跟随魔术步骤,见证奇迹 step2: 将4张牌平均斯成两份,并叠在一起 step3: 将牌堆顶数量为名字字数的牌移到牌堆底 step4: 将前三张牌放在牌堆中间并取出牌堆顶的一张牌放到屁股下 step5: 南方人、北方人、不确定分别取顶上的1/2/3张牌插入牌堆…

Stable Diffusion主流UI详细介绍

Stable Diffusion目前主流的操作界面有WebUI、ComfyUI以及Fooocus 这里webui和fooocus在人机交互上的逻辑是一样的&#xff0c;fooocus界面更加简洁。 comfyui是在人机交互上是采用流程节点的交互逻辑&#xff0c;和上面略有区别。 界面分别如下&#xff1a; WebUI界面如下 we…

C/C++内存管理:new、delete功能及原理实现

目录 一、C/C内存分布 二、C中内存管理方式 2.1new/delete操作内置类型 2.2 new和delete操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 4.1内置类型 4.2自定义类型 五、定位new 一、C/C内存分布 int globalVar 1; static int sta…

HarmonyOS鸿蒙学习基础篇 - Column/Row 组件

前言 Row和Column组件是线性布局容器&#xff0c;用于按照垂直或水平方向排列子组件。Row表示沿水平方向布局的容器&#xff0c;而Column表示沿垂直方向布局的容器。这些容器具有许多属性和方法&#xff0c;可以方便地管理子组件的位置、大小、间距和对齐方式。例如&#xff0c…

四、案例 - Oracle数据迁移至MySQL

Oracle数据迁移至MySQL 一、生成测试数据表和数据1.在Oracle创建数据表和数据2.在MySQL创建数据表 二、生成模板文件1.模板文件内容2.模板文件参数详解2.1 全局设置2.2 数据读取&#xff08;Reader&#xff09;2.3 数据写入&#xff08;Writer&#xff09;2.4 性能设置 三、案例…

博主用树莓派绕过 Windows Bitlocker 加密,用时不到一分钟

近日 YouTube 博主 stacksmashing 发现 Bitlocker 存在一个巨大的安全漏洞&#xff0c;他利用价值不到 10 美元的树莓派 Pico 在不到一分钟内成功绕过了该加密。 2 月 7 日消息&#xff0c;微软 Windows 10 和 11 专业版内置的 Bitlocker 加密功能一直被认为是方便易用的安全解…

伦敦金是现货黄金吗?

伦敦金属现货黄金交易的一种形式。投资者可以通过伦敦金市场直接买卖黄金&#xff0c;以实现投资收益。伦敦金市场具有高度流动性和透明度&#xff0c;是全球投资者广泛参与的贵金属交易市场之一。 什么是现货黄金&#xff1f; 现货黄金是指实物黄金的交易&#xff0c;投资者可…

编辑器的新选择(基本不用配置)

Cline 不用看网上那些教程Cline几乎不用配置。 点击设置直接选择Chinese, C直接在选择就行了。 Cline是一个很好的编辑器&#xff0c;有很多懒人必备的功能。 Lightly 这是一个根本不用配置的C编辑器。 旁边有目录&#xff0c;而且配色也很好&#xff0c;语言标准可以自己…

优先级队列(堆)_PriorityQueue

前言 想要看如何使用可以通过目录跳转到 PriorityQueue的使用 优先级队列 概念 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队 列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场…

【Vue】工程化开发脚手架Vue CLI

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Vue⛺️稳重求进&#xff0c;晒太阳 工程化开发&脚手架Vue CLI 基本介绍 Vue Cli是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了we…

【教程】MySQL数据库学习笔记(二)——数据类型(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 文章目录 【MySQL数据库学习】系列文章一、整…

MySQL表的基础操作

创建表 create table 表名&#xff08;列名 类型&#xff0c;列名 类型……&#xff09; 注意 1.在进行表操作之前都必须选中数据库 2.表名&#xff0c;列名等一般不可以与关键字相同&#xff0c;如果确定相同&#xff0c;就必须用反引号引住 3.可以使用comment来增加字段说…