【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,一经查实,立即删除!

相关文章

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

在 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/"…

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

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

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

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

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.…

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

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

【项目二】C++高性能服务器开发——日志系统(日志器,日志级别,日志事件)

知识点备忘录 其实也没啥 操作记录 在乌邦图上写的,先是模仿sylar创建了目录 进入sylar文件夹,有今天写的log.h头文件 其中log_test.cpp是为了测试log.h能否正常运行建的,只是个测试文件 log.h写了三个类,日志级别&#xff0…

PHP一站式解决方案高级房产系统小程序源码

一站式解决方案,高级房产系统让房产管理更轻松 🏠【开篇:告别繁琐,迎接高效房产管理新时代】🏠 你是否还在为房产管理的繁琐流程而头疼?从房源录入、客户咨询到合同签订、售后服务,每一个环节…

【2024数模国赛赛题思路公开】国赛C题第二套思路丨附可运行代码丨无偿自提

2024年国赛C题第二套解题思路 第一问:2024~2030年农作物的最优种植方案 【问题分析】 题目要求为某乡村在2024~2030年制定农作物的最优种植方案,目的是最大化收益,并需考虑两种销售情况: 1. 超过预期销售量的部分滞销&#xff0…

【LeetCode】05.最长回文子串

题目要求 解题思路 这一类型(回文子串)主要有两种解决方法,一种是动态规划,另一种是中心拓展算法。 动态规划: 本质问题就是在i-j区间是不是回文的。这样的话我们在 i 和 j 位置的值相等时,判断如下三种情…

SQL-多表查询

1、多表关系 一对多、多对一:在多的一方建立外键,指向一的一方。 多对多:至少两个外键,通过中间表维护。 一对一 2、多表查询概述 3、内连接 4、外连接 5、自连接 6、联合查询 7、子查询 8、多表查询案例 # 1、多表关系 #…

语音测试(一)ffmpeg视频转音频

视频转音频 下载ffmpeg工具进入bin目录cmd进入控制台输入命令 ffmpeg.exe -i ./视频.mp4 ./音频.wav命令说明 ffmpeg -i input.mp4 output.mkv FFmpeg 可能会尝试自动选择合适的编码器对视频和音频进行重新编码,以便适应 MKV 格式的要求ffmpeg -i input.mp4 -c c…

linux 内核代码学习(八)

总体目标:由于fedora10 linux发行版中自带的linux2.6.xx内核源码规模太庞大了,对于想通读内核源码的爱好者来说太困难了,因此选择了linux2.4.20内核来进行测试(最终是希望能够实现linux1.0内核的源码完全编译和测试)。…