【2024】MySQL库表基本操作

目录

  • 登录数据库
  • 创建数据库
    • 直接创建数据库
    • 使用IF NOT EXISTS方式创建
    • 查看数据库信息
    • 删除数据库
  • 数据表操作
    • 创建数据表
    • 增加新字段
    • 插入数据
    • 删除数据表

登录数据库

首先登录到数据库:输入用户名和密码登录到数据库内部

[root@localhost ~]# mysql -uroot -p
Enter password: 
... ...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 

可以输入SELECT VERSION();查看版本

mysql> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 8.4.2     |
+-----------+
1 row in set (0.01 sec)

可以看到当前MySQL版本为8.4.2

创建数据库

直接创建数据库

创建数据库之前可以先查一下当前存在哪些库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mena               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

可看到当前存在5个库。

创建数据库可使用create database语句,比如我们要创建一个student库,可以这样:

mysql> create database student;
Query OK, 1 row affected (0.02 sec)

再使用show databases;命令查看如果成功就可以看到创建的库。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mena               |
| mysql              |
| performance_schema |
| student            |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

使用IF NOT EXISTS方式创建

这个语句的含义是如果不存在此数据库则创建,如果存在则忽略命令而不会报错。

mysql> create database if not exists student;
Query OK, 1 row affected, 1 warning (0.01 sec)

推荐使用这种方式创建,不会出现不必要的保错。

查看数据库信息

除了上述的show databases;可以查看存在哪些数据库外,还可以通过其他语句查看一些其他内容。

了解数据库的字符集、排序规则等内容

mysql> show create database student;
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                                                   |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
| student  | CREATE DATABASE `student` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

这条命令会显示创建该数据库的 SQL 语句,从中可以了解到数据库的字符集、排序规则等详细信息。

删除数据库

对于不想保留的数据库,可使用DROP DATABASE语句进行删除

mysql> drop database mena;
Query OK, 1 row affected (0.05 sec)

也可以加上 IF EXISTS使语句更合理,避免报错。

数据表操作

创建表之前,首先进入到一个库内部,查看存在哪些表

mysql> use student;
Database changed
mysql> show tables;
Empty set (0.01 sec)

创建数据表

创建一个一年级学生信息的数据表

mysql> CREATE TABLE IF NOT EXISTS grade_1 (-> id INT AUTO_INCREMENT PRIMARY KEY,-> name VARCHAR(20) NOT NULL,-> age INT NOT NULL,-> gender ENUM('男','女') NOT NULL-> );
Query OK, 0 rows affected (1.00 sec)

这个SQL语句的含义为:

创建一个名为grade_1的表,AUTO_INCREMENT表示这个字段的值会自动递增;PRIMARY KEY表明这个字段是表的主键,用于唯一确定表中的每一行记录。

这个表共有四个字段,分别为id、name、age、genderENUM表示枚举类型,只能选择给出的选项,在此表中表示男或女。

对于创建的表,可以使用describe语句查看表结构,可缩写。

mysql> DESC grade_1;
+--------+-------------------+------+-----+---------+----------------+
| Field  | Type              | Null | Key | Default | Extra          |
+--------+-------------------+------+-----+---------+----------------+
| id     | int               | NO   | PRI | NULL    | auto_increment |
| name   | varchar(20)       | NO   |     | NULL    |                |
| age    | int               | NO   |     | NULL    |                |
| gender | enum('男','女')    | NO   |     | NULL    |                |
+--------+-------------------+------+-----+---------+----------------+
4 rows in set (0.04 sec)

其中:

Field表示表中每个字段
Type表示字段的数据类型
Null表示当前字段值是否可以为空
Key表示当前字段是否存在索引,PRI表示主键,这里id字段为主键
Default表示该字段的默认值,NULL表示没有默认值
Extra表示该字段的额外属性,“auto_increment” 表示 “id” 字段的值会自动递增。

也可通过show create tanle 表名查看

mysql> show create table grade_1 \G;
*************************** 1. row ***************************Table: grade_1
Create Table: CREATE TABLE `grade_1` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(20) NOT NULL,`age` int NOT NULL,`gender` enum('男','女') NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

除了一些创建表的常规信息,还列出了存储引擎类型,这里是InnoDB;默认的字符集为utf8mb4;字符集排序规则,这里是utf8mb4_0900_ai_ci

增加新字段

如果想添加新的字段加入现有表,可以使用下面的语句。
比如:我想为表中添加一个出生年月的列

mysql> ALTER TABLE grade_1 ADD COLUMN birth_date DATE NOT NULL AFTER gender;
Query OK, 0 rows affected (1.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

语句含义:使用ALTER TABLE修改表的结构,也就是表grade_1ADD COLUMN表示添加一个新的字段,字段名为birth_date;类型为DATE(日期类型)且不为空;AFTER gender表示新的字段放在gender字段之后。

除了使用AFTER表示放在哪个字段之后,还可以使用FRIST表示放在表的第一列。

mysql> describe grade_1;
+------------+-------------------+------+-----+---------+----------------+
| Field      | Type              | Null | Key | Default | Extra          |
+------------+-------------------+------+-----+---------+----------------+
| id         | int               | NO   | PRI | NULL    | auto_increment |
| name       | varchar(20)       | NO   |     | NULL    |                |
| age        | int               | NO   |     | NULL    |                |
| gender     | enum('男','女')   | NO   |     | NULL    |                |
| birth_date | date              | NO   |     | NULL    |                |
+------------+-------------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

可以看到最后一行已经可以看到出生年月的字段了。

插入数据

虽然表有了,但是此时表为空,没有任何内容,现在可以尝试向表中插入数据了。
示例:使用INSERT INTO语句插入一名名为张三的学生信息

mysql> INSERT INTO grade_1 (name, age, gender, birth_date) VALUES ('张三', 7, '男', '2017-05-10');
Query OK, 1 row affected (0.01 sec)

通过select语句查看表内内容

mysql> select * from grade_1;
+----+--------+-----+--------+------------+
| id | name   | age | gender | birth_date |
+----+--------+-----+--------+------------+
|  1 | 张三   |   7 || 2017-05-10 |
+----+--------+-----+--------+------------+
1 row in set (0.00 sec)

此时可以看到名为张三的学员信息了。

但是如果有多个人员信息需要插入,这样显然不太方便,因此可以使用以下的方法

mysql> INSERT INTO grade_1 (name, age, gender, birth_date) -> VALUES ('赵六', 7, '女', '2017-07-12'),->        ('孙七', 7, '男', '2017-04-18'),->        ('周八', 7, '女', '2017-08-05');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

此时再查看

mysql> select * from grade_1;
+----+--------+-----+--------+------------+
| id | name   | age | gender | birth_date |
+----+--------+-----+--------+------------+
|  1 | 张三   |   7 || 2017-05-10 |
|  2 | 赵六   |   7 || 2017-07-12 |
|  3 | 孙七   |   7 || 2017-04-18 |
|  4 | 周八   |   7 || 2017-08-05 |
+----+--------+-----+--------+------------+
4 rows in set (0.00 sec)

可以看到几人的信息了,但是如果有大量的人员信息要录入该怎么办?
可以使用导入的方式,具体如下:
先准备一个人员的信息表

# cat student.txt 
熊大,7,男,2017-09-10
熊二,7,男,2017-09-11

然后使用sql语句导入信息,确保你的MySQL开启了此功能。
在配置文件中加入此配置开启

[mysqld]
local-infile=1[client]
local-infile=1

使用以下命令导入

mysql> LOAD DATA LOCAL INFILE '/data/student.txt' INTO TABLE grade_1-> FIELDS TERMINATED BY ','-> LINES TERMINATED BY '\n'-> (name, age, gender, birth_date);
Query OK, 2 rows affected (0.01 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

LOAD DATA LOCAL INFILE是 MySQL 的一个指令,用于从本地文件系统加载数据到数据库表中。
FIELDS TERMINATED BY ','表示字段以逗号作为分隔符
LINES TERMINATED BY '\n'表示行是以换行符\n作为结束标志

接下来查看此表中数据

mysql> select * from grade_1;
+----+--------+-----+--------+------------+
| id | name   | age | gender | birth_date |
+----+--------+-----+--------+------------+
|  1 | 张三   |   7 || 2017-05-10 |
|  2 | 赵六   |   7 || 2017-07-12 |
|  3 | 孙七   |   7 || 2017-04-18 |
|  4 | 周八   |   7 || 2017-08-05 |
|  5 | 熊大   |   7 || 2017-09-10 |
|  6 | 熊二   |   7 || 2017-09-11 |
+----+--------+-----+--------+------------+
6 rows in set (0.01 sec)

可以看到熊大熊二两条数据已经插入成功。

删除数据表

如果这个表不想要了,可以使用以下语句删除

DROP TABLE grade_1;

使用 DROP TABLE 语句时要谨慎,因为一旦执行该语句,表中的所有数据和表结构都会被永久删除,且无法恢复。

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

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

相关文章

Locksupport凭证的底层原理

LockSupport的凭证(通常称为“许可”或“permit”)的底层原理主要涉及到Java的Unsafe类以及系统级的线程同步机制。LockSupport是Java 6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语,其核心功能是通…

如何利用ChatGPT提升学术论文讨论部分的撰写质量和效率

大家好,感谢关注。我是七哥,一个在高校里不务正业,折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥(yida985)交流,多多交流,相互成就,共同进步,为大家带来最酷最有效的智能AI学术科研写作攻略。经过数月爆肝,终于完成学术AI使用教…

利用正则表达式从字符串中提取浮点数

在 Python 中,使用正则表达式可以非常方便地从字符串中提取浮点数。Python 的 re 模块提供了正则表达式支持。下面是如何使用正则表达式提取浮点数的示例。 1、问题背景 在开发过程中,有时候我们需要从字符串中提取浮点数,例如从 HTML 代码中…

网关功能介绍

在微服务架构中,网关(API Gateway)扮演着至关重要的角色,它作为客户端和微服务之间的中介,负责路由、过滤、认证、限流等职责。以下是一些常见的网关实现: Spring Cloud Gateway: Spring Cloud …

linux系统中,计算两个文件的相对路径

realpath --relative-to/home/itheima/smartnic/smartinc/blocks/ruby/seanet_diamond/tb/parser/test_parser_top /home/itheima/smartnic/smartinc/corundum/fpga/lib/eth/lib/axis/rtl/axis_fifo.v 检验方式就是直接在当前路径下,把输出的路径复制一份&#xff0…

5-2 检测内存容量

1 使用的是bios 中断, 每次进行检测都会返回一块 内容。并且标志上,这块内存是否可用。 接下来是代码: 首先是构建 一个文件夹, 两个文件。 types.h 的内容。 #ifndef TYPES_H #define TYPES_H// 基本整数类型,下面的…

全球圆柱锂电池行业领军者!比克电池亮相2024深圳eVTOL展

2024深圳eVTOL产业发展大会暨低空经济展览会将于9月23-25日在深圳坪山燕子湖国际会展中心举办。展会将通过“两天论坛三天展览”的形式展开,专注未来城市空中交通新形态、民用有人驾驶、无人驾驶航空器、城市低空物流,并讨论eVTOL的整机研发、设计、制造…

拍卖新纪元:Spring Boot赋能在线拍卖解决方案

需求分析 1.1技术可行性:技术背景 在线拍卖系统是在Windows操作系统中进行开发运用的,而且目前PC机的各项性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。 系统的开发环境和配置…

Python+selenium web测试入门基础!

自动化测试框架 from selenium import webdriver 获取浏览器对象 我这里是edge浏览器,用的是edge的webdriver # webdriver获取浏览器对象  driver webdriver.Edge() 尝试打开网站并关闭​​​​​​​ # 准备一个网址  url "https://www.baidu.com/"…

Vue2 与 Vue3 的区别有哪些

Vue 2 和 Vue 3 在许多方面都有显著的区别,包括性能、API 设计、功能特性等。以下是它们主要的区别: 1. 响应式系统 Vue 2: 基于 Object.defineProperty: Vue 2 使用 Object.defineProperty 来实现响应式数据。这种方法在处理对象属性时有一定的局限性…

包拯断案 | 数据库从库GTID在变化 为何没有数据写入@还故障一个真相

提问:作为DBA运维的你是否遇到过这些烦恼 1、数据库从库复制链路如何正确配置表过滤信息? 2、数据库从库的GTID在变化,实际却没有数据写入,究竟是什么原因? 心中有章,遇事不慌 作为DBA的你,…

如何构建短视频矩阵?云微客开启多账号协同作战

你有没有疑惑过,为什么有些账号每一次发布视频,都要艾特一下其他账号呢?那些被艾特的账号,你有点进去关注过吗?其实做过运营的都或多或少的接触过矩阵,短视频矩阵的玩法现在也逐步成为了趋势。企业通过多账…

GitHub Copilot Issue in Visual Studio Code “Status Ready (disabled)“

I’m facing an issue with GitHub Copilot in Visual Studio Code, where it’s not suggesting any code. Even though it says “enabled globally” in the extensions tab settings, the icon in the status bar has a diagonal line through it. When I click on the ico…

pyautogui进行点击失效,pyautogui.click()失效

背景:在Pycharm里,使用pythonpyautogui调用 .exe程序文件时候,当程序界面出来之后,鼠标失去反应,用pyautogui进行点击。后面尝试使用图片相似也无法实行点击。 解决方法:运行Pycharm或者其他ide的时候选择…

黑马点评2——商户查询缓存(P37店铺类型查询业务添加缓存练习题答案)redis缓存、更新、穿透、雪崩、击穿、工具封装

文章目录 什么是缓存?添加Redis缓存店铺类型查询业务添加缓存练习题 缓存更新策略给查询商铺的缓存添加超时剔除和主动更新的策略 缓存穿透缓存空对象布隆过滤 缓存雪崩解决方案 缓存击穿解决方案基于互斥锁方式解决缓存击穿问题基于逻辑过期的方式解决缓存击穿问题…

极市开发平台yolov8训练无人机数据集样例数据流程

先进入vscode,进入src_repo文件夹。 第一步,克隆一个比较好的博主的库: GitHub - Incalos/YOLO-Datasets-And-Training-Methods: This project involves making custom datasets for the YOLO series and model training methods for YOLO.…

【openwrt-21.02】T750 openwrt-21.02 pptp拨号失败问题分析及解决方案

Openwrt版本 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/" …

关于蓝屏查看日志分析原因

一、前提 虽然电脑经常蓝屏,或者发生了蓝屏现象,但是仍然可以进入系统,并且可以进行桌面操作。 二、查看蓝屏日志 1.按下win键,搜索计算机管理。 2.依次点击:系统工具->事件查看器->Windows日志->系统 3.在…

Qt-桌面服务和托盘

t应用程序在用户的桌面环境中表现良好,但某些集成需要额外的,有时是特定于平台的技术。 Qt中的各种类旨在帮助开发人员将应用程序集成到用户的桌面环境中。这些类使开发人员能够在使用跨平台API的同时利用原生服务。 QDesktopServices 访问常用桌面服务的…

Java环境搭建指南:从新手到专家的全方位教程!

Java是一种广泛使用的编程语言,具有跨平台的特性,这意味着只要一次编写,就可以在支持Java的任何系统上运行,无论是Windows、Mac OS还是Linux。要开始使用Java进行开发,首先需要搭建Java开发环境,这包括下载…