【MySQL表的操作】

目录:

  • 前言
  • 表的操作
  • 创建表
  • 查看表结构
  • 修改表
    • 对列的增删改
    • 修改表名
  • 对表中数据的操作
    • 插入数据
    • 查找数据
    • 修改数据
    • 删除数据
  • 删除表
  • 总结

前言

剑指offer:一年又3天


表的操作

创建、查看、修改(属性和内容)与删除



创建表

语法:

CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明:

  • field 表示列名
  • datatype 表示列的类型
  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
mysql> create table stu(-> id int comment '唯一标识',-> name varchar(32) comment '姓名',-> age int comment '年龄',-> password varchar(32) comment '密码');
Query OK, 0 rows affected (0.04 sec)


查看表结构

语法:

mysql> desc stu;
mysql> desc stu;         --- 查看表结构:列名 数据类型 (数据类型以及后面的四个约束放在后面的文章中进行介绍)
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(32) | YES  |     | NULL    |       |
| age      | int(11)     | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)mysql> show create table stu \G        --- 查看表的创建语句
*************************** 1. row ***************************Table: stu
Create Table: CREATE TABLE `stu` (`id` int(11) DEFAULT NULL COMMENT '唯一标识',`name` varchar(32) DEFAULT NULL COMMENT '姓名',`age` int(11) DEFAULT NULL COMMENT '年龄',`password` varchar(32) DEFAULT NULL COMMENT '密码'
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)


修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,
表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。
语法:

对列的增删改

ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...) [after column];  --- 添加列
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);     --- 修改列属性
ALTER TABLE tablename DROP (column);													--- 删除列

示例:

mysql> alter table stu add gender char(2) comment '性别' after name; --- 修改表stu:在name之后添加一列gender
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc stu;            --- 查看表结构
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(32) | YES  |     | NULL    |       |   
| gender   | char(2)     | YES  |     | NULL    |       |    --- 插入成功
| age      | int(11)     | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)mysql> show create table stu \G          --- 查看一下创建语句
*************************** 1. row ***************************Table: stu
Create Table: CREATE TABLE `stu` (`id` int(11) DEFAULT NULL COMMENT '唯一标识',`name` varchar(32) DEFAULT NULL COMMENT '姓名',`gender` char(2) DEFAULT NULL COMMENT '性别',         --- 插入成功`age` int(11) DEFAULT NULL COMMENT '年龄',`password` varchar(32) DEFAULT NULL COMMENT '密码'
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)mysql> alter table stu modify gender char(8);         --- 修改:只修改gender列数据类型为 char(8)
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> show create table stu \G
*************************** 1. row ***************************Table: stu
Create Table: CREATE TABLE `stu` (`id` int(11) DEFAULT NULL COMMENT '唯一标识',`name` varchar(32) DEFAULT NULL COMMENT '姓名',`gender` char(8) DEFAULT NULL,                   --- 结果:数据类型是修改了,但是我们之前写的注释“性别”也没有了`age` int(11) DEFAULT NULL COMMENT '年龄',     `password` varchar(32) DEFAULT NULL COMMENT '密码'
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)mysql> alter table stu drop gender;       --- 删除列gender
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc stu;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(32) | YES  |     | NULL    |       |   --- 已删除
| age      | int(11)     | YES  |     | NULL    |       |
| password | varchar(32) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

结论:修改是全覆盖式写入,因此当我们需要修改列的某一个属性时,需要先查看一下创建语句,复制粘贴只把想要修改的部分改掉即可。

修改表名

语法:

ALTER TABLE tablename RENAME [ TO ] new_tablename;

示例:

mysql> create table test(id int);
Query OK, 0 rows affected (0.03 sec)mysql> show tables;                        --- 查看所有表
+---------------+
| Tables_in_db1 |
+---------------+
| stu           |
| test          |
+---------------+
2 rows in set (0.00 sec)mysql> alter table test rename to newTest;      --- 修改表test名字为newTest
Query OK, 0 rows affected (0.01 sec)mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| newTest       |                             --- 修改完成
| stu           |
+---------------+
2 rows in set (0.00 sec)

对表中数据的操作

插入数据

语法:

INSERT INTO tablename[(field1, field2, ...)] values(...), (...);

说明:

  • 插入数据到表tablename,后面小括号中为插入数据包含表中的那些列,如果不写默认插入全部列;

示例:

mysql> insert into stu(id, name) values(001, '张三'),    --- 只插入id,name-> (002, '李四');
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> insert into stu(name, id) values('王五', 003);     --- 只插入id,name 一一对应
Query OK, 1 row affected (0.01 sec)mysql> insert into stu values                 			--- 默认插入所有列-> (004, '赵六', 20, '123456'),-> (005, '孙七', 19, '654321');
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from stu;
+------+--------+------+----------+
| id   | name   | age  | password |
+------+--------+------+----------+
|    1 | 张三   | NULL | NULL     |                --- 没插入的数据显示为空
|    2 | 李四   | NULL | NULL     |
|    3 | 王五   | NULL | NULL     |
|    4 | 赵六   |   20 | 123456   |
|    5 | 孙七   |   19 | 654321   |
+------+--------+------+----------+
5 rows in set (0.00 sec)

查找数据

语法:

SELECT field1, field2 FROM tablename [WHERE field3 = xxx];

说明:

  • 在tablename中查找列field1,field2 的信息;where是筛选条件。

示例:

mysql> select  name, age from stu;        --- 只显示name列与age列
+--------+------+
| name   | age  |
+--------+------+
| 张三   | NULL |
| 李四   | NULL |
| 王五   | NULL |
| 赵六   |   20 |
| 孙七   |   19 |
+--------+------+
5 rows in set (0.00 sec)mysql> select id, name from stu where id >= 3;   --- 只显示id >= 3的学生的id和name列
+------+--------+
| id   | name   |
+------+--------+
|    3 | 王五   |
|    4 | 赵六   |
|    5 | 孙七   |
+------+--------+
3 rows in set (0.00 sec)mysql> select * from stu;                      ---  * 代表所有列
+------+--------+------+----------+
| id   | name   | age  | password |
+------+--------+------+----------+
|    1 | 张三   | NULL | NULL     |
|    2 | 李四   | NULL | NULL     |
|    3 | 王五   | NULL | NULL     |
|    4 | 赵六   |   20 | 123456   |
|    5 | 孙七   |   19 | 654321   |
+------+--------+------+----------+
5 rows in set (0.00 sec)

修改数据

语法:

UPDATE tablename SET field1 = xxx, field2 = xxx [WHERE field3 = xxx];

说明:

  • 修改表tablename的field1 和 field2 列的内容,where的作用是筛选,如果不筛选会作用于所有行。

示例:

mysql> update stu set name = '周八', age = 30 where id = 5;   --- where是设置查找条件:只修改id = 5的行
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from stu;
+------+--------+------+----------+
| id   | name   | age  | password |
+------+--------+------+----------+
|    1 | 张三   | NULL | NULL     |
|    2 | 李四   | NULL | NULL     |
|    3 | 王五   | NULL | NULL     |
|    4 | 赵六   |   20 | 123456   |
|    5 | 周八   |   30 | 654321   |                  --- 修改完成
+------+--------+------+----------+
5 rows in set (0.00 sec)mysql> update stu set password = '111111';       --- 不设置限制(查找条件)就会作用于所有行
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5  Changed: 5  Warnings: 0mysql> select * from stu;
+------+--------+------+----------+
| id   | name   | age  | password |
+------+--------+------+----------+
|    1 | 张三   | NULL | 111111   |             --- 全部修改
|    2 | 李四   | NULL | 111111   | 
|    3 | 王五   | NULL | 111111   |
|    4 | 赵六   |   20 | 111111   |
|    5 | 周八   |   30 | 111111   |
+------+--------+------+----------+
5 rows in set (0.00 sec)

删除数据

语法:

DELETE FROM tabename [where ...];  -- 删除特定数据(不写where会直接清空表)

示例:

mysql> create table tb10(-> name varchar(20),-> age int-> );
Query OK, 0 rows affected (0.03 sec)-- 插入数据省略mysql> select * from tb10;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   20 |
| 张三   |   20 |
| 张三   |   20 |
| 李四   |   21 |
| 李四   |   21 |
| 李四   |   21 |
| 王五   |   30 |
| 王五   |   30 |
| 王五   |   30 |
+--------+------+
9 rows in set (0.00 sec)mysql> delete from tb10 where name='李四';   -- 删除名字为李四的记录
Query OK, 3 rows affected (0.00 sec)mysql> select * from tb10;
+--------+------+
| name   | age  |
+--------+------+
| 张三   |   20 |
| 张三   |   20 |
| 张三   |   20 |
| 王五   |   30 |
| 王五   |   30 |
| 王五   |   30 |
+--------+------+
6 rows in set (0.00 sec)mysql> delete from tb10;                -- 删除所有记录
Query OK, 6 rows affected (0.01 sec)mysql> select * from tb10; 
Empty set (0.00 sec)                    -- tb10为空


删除表

语法:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| newTest       |
| stu           |
+---------------+
2 rows in set (0.00 sec)mysql> drop table newTest;              --- 删除newTest
Query OK, 0 rows affected (0.02 sec)mysql> show tables;        
+---------------+
| Tables_in_db1 |
+---------------+
| stu           |
+---------------+
1 row in set (0.00 sec)


总结



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

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

相关文章

点云从入门到精通技术详解100篇-雨雾环境下多传感器融合 SLAM 方法

目录 前言 国内外研究现状 传统 SLAM 研究现状 多传感器融合 SLAM 研究现状

8.Python TCP网络编程入门指南

HTTP协议 HTTP 是一种用于传输超文本(例如 HTML)的应用层协议。它是基于请求-响应模型的,客户端发送请求,服务器返回响应。HTTP 使用 TCP 作为传输层协议。在 Python 中,有一些内置的模块用于处理 HTTP 请求和响应&am…

PyQt实战 创建一个PyQt5项目

前后端分离 参考链接 PyQt5实战(二):创建一个PyQt5项目_pyqt5实战项目_笨鸟未必先飞的博客-CSDN博客 项目目录 创建一个QT项目 调用pyuic工具将dialog.ui文件编译为Python程序文件ui_dialog.py。 # -*- coding: utf-8 -*-# Form implemen…

Android 透明度颜色值对照表

一、透明度对照表 注:00是完全透明,FF就是完全不透明 我们的UI小姐姐就喜欢给「不透明度」,这个需要自己判断一下。 完全透明:0% HEX: 00 透明度:1% HEX: 30 透明度:2% HEX: 50 透明度:3% HEX: 80 透明度:4% HEX: A0 透明度:5…

【离散差分】LeetCode2953:统计完全子字符串

作者推荐 [二分查找]LeetCode2040:两个有序数组的第 K 小乘积 本题其它解法 【滑动窗口】LeetCode2953:统计完全子字符串 涉及知识点 分块循环 离散差分 题目 给你一个字符串 word 和一个整数 k 。 如果 word 的一个子字符串 s 满足以下条件,我们称它是 完全…

云原生之深入解析如何限制Kubernetes集群中文件描述符与线程数量

一、背景 linux 中为了防止进程恶意使用资源,系统使用 ulimit 来限制进程的资源使用情况(包括文件描述符,线程数,内存大小等)。同样地在容器化场景中,需要限制其系统资源的使用量。ulimit: docker 默认支持…

08、分析测试执行时间及获取pytest帮助

官方用例 # content of test_slow_func.py import pytest from time import sleeppytest.mark.parametrize(delay,(1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.0,0.1,0.2,0,3)) def test_slow_func(delay):print("test_slow_func {}".format(delay))sleep(delay)assert…

概率论中,相关性和独立性的关系

相关性和独立性是概率统计中两个关键的概念。 相关性(Correlation): 定义: 相关性衡量两个变量之间的线性关系程度。如果两个变量的值在某种趋势下同时变化,我们说它们是相关的。相关性的取值范围在 -1 到 1 之间&…

同旺科技 USB TO SPI / I2C --- 调试W5500_TCP Client测试

所需设备: 内附链接 1、USB转SPI_I2C适配器(专业版); 首先,连接W5500模块与同旺科技USB TO SPI / I2C适配器,如下图: 网关IP地址寄存器(192.168.1.1)子网掩码寄存器(255.255.255.0)源MAC地址寄存器源IP地址寄存器(192.168.1.8)…

Django 模型基础(五)

一、models常用字段类型 (一 ) 索引,字符,数字 1、models.AutoField 自增列 如果没有,默认会生成一个名称为 id 的列, 如果要显示的自定义一个自增列,必须将给列设置为主键 primary_keyTru…

Maven 安装自己的依赖

命令 比如当前目录下的依赖包名称是 mytoolutils.jar&#xff0c;则在当前目录下执行 mvn install:install-file -Dfilemytoolutils.jar -DgroupIdutils -DartifactIdtool -Dversion1.0.0 -Dpackagingjar 引用 pom.xml 中引用 <dependency><groupId>utils</g…

ThreadPoolExecutor应用源码剖析(三)

3.3.5 ThreadPoolExecutor的Worker工作线程 Worker对象主要包含了两个内容 ● 工作线程要执行任务 ● 工作线程可能会被中断&#xff0c;控制中断 // Worker继承了AQS&#xff0c;目的就是为了控制工作线程的中断。 // Worker实现了Runnable&#xff0c;内部的Thread对象&…

QT4和 QT5 槽函数连接的区别

正常连接方式 //QT4官方用列QLabel *label new QLabel;QScrollBar *scrollBar new QScrollBar;QObject::connect(scrollBar, SIGNAL(valueChanged(int)),label, SLOT(setNum(int)));//QT5官方用列QLabel *label new QLabel;QLineEdit *lineEdit new QLineEdit;QObject::c…

STK Components 二次开发-飞行器

1.创建飞机 参数帮助文档 var poitList GetTracksData(); var waypointPropagator new WaypointPropagator(m_earth, poitList); var locationPoint waypointPropagator.CreatePoint();m_aircraft new Platform {Name "MH730",LocationPoint locationPoint,Or…

首次部署Linux系统的经历

我是一名电子信息工程专业的学生&#xff0c;有次在图书馆上自习的时候无意间看到其他同学的电脑屏幕&#xff0c;黑色的屏幕上显示着一行一行的代码&#xff0c;勾起了我无限的好奇&#xff0c;经过询问得知他是用的Linux操作系统&#xff0c;是和Windows完全不同的系统&#…

JDBC操作

本博客主要是介绍JDBC操作&#xff0c;即通过编译器操纵数据库中的数据。接下来以插入操作简单介绍该操作。 首先在创建的项目中&#xff0c;添加下列jar包&#xff08;点击可加载下载页面&#xff09;。 mysql-connector-java-5.1.49.jar 然后编写JDBC代码 public class JDB…

vue3 中使用 sse 最佳实践,封装工具

工具 // 接受参数 export interface SSEChatParams {url: string,// sse 连接onmessage: (event: MessageEvent) > void,// 处理消息的函数onopen: () > void,// 建立连接触发的事件finallyHandler: () > void,// 相当于 try_finally 中的 finally 部分&#xff0c;不…

机器学习(2)回归

0.前提 上一期&#xff0c;我们简单的介绍了一些有关机器学习的内容。学习机器学习的最终目的是为了服务我未来的毕设选择之一——智能小车&#xff0c;所以其实大家完全可以根据自己的需求来学习这门课&#xff0c;我做完另一辆小车后打算花点时间去进行一次徒步行&#xff0…

C++现代模板元编程

序 个人发现很多国外的大佬的演讲或者文章都很不错&#xff0c;但是鲜有人来进行分享&#xff0c;届后本人会时不时拿一些看起来很好的东西来给大家分享&#xff0c;主要也是搬运&#xff0c;不过也省去了大家去读英文的麻烦&#xff0c;同时文章中也会参杂着一些自己的见解。…

游戏mod制作--引擎与解包

摘要 游戏mod的制作过程第一步就是需要将原始的游戏工程文件进行解包&#xff0c;得到相应的资源文件&#xff08;贴图&#xff0c;音频&#xff0c;事件&#xff0c;模型甚至源代码等&#xff09;&#xff0c;这个时候下一步就是需要将解包出来的文件进行分类索引&#xff0c…