mysql表操作

news/2024/10/22 12:19:57/

请添加图片描述

文章目录

  • mysql 操作表
      • 创建表
      • 创建表实例
      • 查看表结构
      • 修改表结构
      • 删除表结构
      • 删除表结构

mysql 操作表

mysql表操作至少有以下俩种:

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构 代表指令: create, drop, alter

  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作代表指令: insert,delete,update

而下面主要介绍的是对表本身结构进行操作即DDL; DDL和DML的关系就好像我们只有将水杯做好了,才能装喝-- 可能不太形象

创建表

语法

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

说明:

  • [] 代表可选项

  • fifield 表示列名

  • datatype 表示列的类型

  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准、

  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

  • engine 存储引擎

    show engine ; #可查看当前数据库支持的存储引擎
    

注: 如果创建数据库时也没有指定对应的校验规则和字符集,那么创建表结构时,字符集是utf8 , 教验规则是 utf8_general_ci ,默认的存储引擎是InnoDB


创建表实例

sql语句

create table users (
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthday date comment '生日'
) character set utf8 engine MyISAM; # 注:当前搜索引擎使用的是MyISAM

运行结果如下:

而我们曾经说过在数据中创建表实际上就是在该数据库目录下创建文件 ;所以我们可以切换到我们数据库test2目录下查看一下

说明:

  • 不同的存储引擎,创建表的文件不一样。

  • users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

    • users.frm:表结构
    • users.MYD:表数据
    • users.MYI:表索引
  • 而当我们表存储引擎使用的是InnoDB时,在数据库中会有俩个不同文件,分别是:

    • users.frm: 表结构
    • users.ibd : 表索引,表数据

查看表结构

desc 表名; 

例子:


修改表结构

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

sql语句:

ALTER TABLE table_name ADD 新增字段名 新增列的属性;ALTER TABLE table_name MODIFY 列名 修改后的列属性;ALTER TABLE table_name DROP 列名;ALTER TABLE table_name RENAME [TO] 新表名;ALTER TABLE table_name CHANGE 列名 新列名 新列属性;

注:sql语句一般不区分大小写

为了演示方便:我们先向users表中插入俩条数据

insert into users values(1,'张三','bbbb','1982-01-04'),(2,'李四','c','1984-01-04');

使用select * from 表名,可以查看表数据

  1. 添加列

比如我们现在要在表中添加一个新的字段 ,保存对应的家庭地址在哪

 alter table users add address varchar(100) comment '地址' ;

我们可以发现:新建立的列属性默认是空的,而且我们发现新建立的列是默认添加到表的最后一列的;

实际上,我们可以添加上 after 某个列名 ,就可以将新创建的列添加到某个列名后;而如果想将新增列设置到第一列 ,可以在sql语句添加 not null first;

结果如下:

:从中我们也可以看出mysql中;NULL 实际上和“’空字符串并不等价;mysql中的NULL,代表什么都没有;所以mysql中,NULL 和 0 和”‘ 是不等价的,但是后俩者是等价的;

  1. 修改列字段

例如:我们现在要将name字段长度改为66;

alter table users modify name varchar(66);

如下:

我们可以发现,修改列字段并没有改变数据

  1. 删除列字段

我们在前面添加了test字段,现在我们将其删除掉

alter table users drop test;

如下:

我们发现,删除列是直接将整个列都删除了,如果列中有对应的数据的话;所以我们对于删除列操作应该慎重选择

  1. 修改表名

例:我们现在要将users表的名字改成workers;

 alter table users rename to workers;

如下:

  1. 重新设置某个列字段

例如我们要将地址栏改为电话号码;

 alter table employee change address phonenum varchar(60);

注: 该修改和前面的修改某个列字段是不一样的,当前sql语句是直接将某个列字段替换成其他列字段,而前面是在原来字段上修改;

举个例子:

前面的修改列字段就好像同一个人换了不一样的衣服,而当前sql语句是直接将人换掉了

删除表结构

drop table 表名;

演示:

删除掉上面演示的表

举个例子:

前面的修改列字段就好像同一个人换了不一样的衣服,而当前sql语句是直接将人换掉了

[外链图片转存中…(img-oWjiHwSS-1684858276438)]

删除表结构

drop table 表名;

演示:

删除掉上面演示的表

[外链图片转存中…(img-xVkoRVzB-1684858276439)]

注: mysql中的删除操作都需要慎重选择


http://www.ppmy.cn/news/93144.html

相关文章

编程练习【计算列车到站时间】

给你一个正整数 arrivalTime 表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime 表示列车延误的小时数。 返回列车实际到站的时间。 注意,该问题中的时间采用 24 小时制。 示例 1: 输入&a…

群聊服务器的实现=服务端

第一步 初始化套接字,具体就不写了 &#xff0c;重复的代码 std::cout << "this is server" << std::endl; ... 第二步 创建互斥锁 hMutex CreateMutex(NULL, FALSE, NULL); 第三步 创建服务器套接字、绑定、监听&#xff0c;重复的代码 。。。 …

「SQL面试题库」 No_79 最后一个能进入电梯的人

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…

【搭建服务器】Win10 IIS搭建webdav服务以及公网访问教程 - 挂载webdav

文章目录 1. 安装IIS必要WebDav组件2. 客户端测试3. 使用cpolar内网穿透&#xff0c;将WebDav服务暴露在公网3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表 4. 公网远程访问4.1 浏览器访问测试4.2 映射本地盘符访问4.3 安装Raidrive客户端 总结&#xff1a; 自己用W…

面向Java开发者的ChatGPT提示词工程(1)

各位Java开发者们&#xff0c;欢迎来到万猫学社&#xff01;在这里&#xff0c;我将和大家分享ChatGPT提示词工程的系列文章&#xff0c;希望能够和大家一起学习和探讨提示词的最佳实践。 虽然互联网上已经有很多有关提示词的材料&#xff0c;比如那些“每个人都必须知道的30个…

【入门】拐角III

【入门】拐角III Description 输入整数N&#xff0c;输出相应方阵。 Input 一个整数N。&#xff08; 0 < n < 10 ) Output 一个方阵&#xff0c;每个数字的场宽为3。 Sample Input 1 5 Sample Output 1 5 5 5 5 55 4 4 4 45 4 3 3 35 4 3 2 25 4…

Java on Azure Tooling 4月更新|路线图更新及 Azure Toolkit for IntelliJ 增强

作者&#xff1a;Jialuo Gan - Program Manager, Developer Division at Microsoft 排版&#xff1a;Alan Wang 大家好&#xff0c;欢迎来到 Java on Azure 工具产品的4月更新。让我们首先来谈谈我们对未来几个月的 Java on Azure 开发工具的投资。在这次更新中&#xff0c;我们…

http不同版本之间的区别

前言&#xff1a;http当前有哪些版本 HTTP&#xff08;Hypertext Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一种用于传输超媒体文档的应用层协议&#xff0c;当前主要使用的版本有 HTTP 1.0、HTTP 1.1 和 HTTP 2。 一、HTTP 1.0 这是最早的版本&#xff0…