SQL表操作DDL,DML和辅助的操作语句


 

在开发工作中经常使用到对DB进行操作,各种数据库类型的操作语句类似的,下面是以mysql为主进行举例,复制表结构,然后插入数据,再增加新字段,再给新字段复制,再做其它操作(省略),完成后修改新字段长度未50,再删除新增的字段,再改表未新表名,部分删除数据,再清空所有数据,最后删该表;
 

-- 创建表
CREATE TABLE co_product (`id` int(12) AUTO_INCREMENT not null comment '记录唯一主键ID',`name` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL comment '商品名称',`proClassId` int(11) DEFAULT NULL comment '商品类别ID',`num` int(12) DEFAULT NULL default 0 comment '商品数量',`create_time` datetime not null default current_timestamp comment '创建时间',`update_time` datetime not null default current_timestamp comment '更新时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 comment '商品信息表';-- 数据批量插入
insert into co_product(name,proClassId,num)
values ('春季衣服',1,10),('夏季衣服',2,20),('秋季衣服',3,30),('冬季衣服',4,40)
-- 复制表结构建立新表
create table if not exists new_co_product (like co_product);
-- 全部字段,插入和查询字段要顺序一致
insert into new_co_product select * from co_product;-- 部分字段,插入和查询字段要顺序一致,数据按条件筛选
insert into new_co_product(field1,field2,field3...) 
select field1,field2,field3... from co_product where ...
-- 增加字段
alter table new_co_product 
add column proClassName varchar(30) default null comment '产品类别' after id;-- 给新字段值进行初始化
udpate new_co_product set proClassName = 
(select className from productClass id = proClassId) where proClassName is null;-- 其它操作省略
-- 修改字段的长度
alter table new_co_product modify proClassName varchar(100);-- 删除前面新增加的字段
alter table new_co_product drop column proClassName;
-- 修改表名
alter table new_co_product rename to new_co_product_tmp;
-- 符合条件数据创建时间增加30天
update new_co_product_tmp set create_time = create_time + interval 30 day 
where id > 300 and id < 400;
-- 删除符合条件数据
delete from new_co_product_tmp where id > 600;-- 清空表所有数据,保留表结构
truncate table new_co_product_tmp;
-- 删除表
drop table new_co_product_tmp;

以下为辅助操作的SQL,

-- 其它辅助查询
-- 查询mysql版本信息
select version();
-- 字符数据转换为数字,然后计算,再把结果格式化输出字符型数字,小数点第二位四舍五入
-- 直接计算保留所有小数点,结果为数值型
select convert('7.93', decimal(15,2))*4.05 as num1;-- 格式化显示,小数点最后一位四舍五入,结果为字符型,
-- 注意:整数部分超过1000时采用逗号分隔的科学计数法显示
select format(convert('7.93', decimal(15,2))*4.05,2) as num2;-- 格式化显示,小数点最后一位四舍五入,结果保留为数值型
select round(convert('7.93', decimal(15,2))*4.05,2) as num3;-- 字符串截取, 返回逗号分割符后面部分 345
select substring_index('12,345',',',-1) as aa; -- 字符串截取, 返回逗号分割符后面部分 12
select substring_index('12,345',',',1) as bb; 
-- 字符串转为日期型
select str_to_date(''2024-01-30 12:34:56'','%Y-%m-%d %H:%i:%s') as myDateTime;
SELECT STR_TO_DATE('2022-01-01', '%Y-%m-%d') AS myDate2;
SELECT CAST('2024-01-30' AS DATE) AS myDate3;
SELECT DATE('2024-01-30') AS myDate4;
-- mysql查询某库中数据量大的表和大小信息
select concat(table_schema,'.',table_name) as table_n,
table_rows as num_of_row,
concat(round(data_length)/1024/1024,6),'MB') as data_size,
concat(round(index_length)/1024/1024,6),'MB') as index_size,
concat(round(data_length+index_length)/1024/1024,6),'MB') as total 
from information_schema.tables 
where table_schema = 'myDBName'
order by data_length+index_length desc;
/* mysql数据存储空间压减方法:
一般数据库表随着使用,其占用存储空间只会变大,不会变小;表操作数据一般是先插入,再删除,但被删除的记录所占的空间会保留;那进行 
*/alter table xxxTable engine = Innodb; /*
相当于回收了那些已经被删除的记录所占的空间,然后mysql的db文件将变得非常小,相当于缩减db的存储空间;*/

还有很多,后续再逐步丰富...

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

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

相关文章

AST混淆与解混淆笔记:数值常量加密

本文主要是作者记笔记为主&#xff0c;温故而知新&#xff0c;记录混淆和解混淆的代码 以以下代码为例&#xff1a; function test(a, b){const c "123";a a 1 // aa a 2a a * 1234a a.toString()a a.substring(0, 3)b a "00"return b; } test(…

android--RXJava+Retrofit封装使用

在欲望的城市里&#xff0c;你就是我最后的信仰。 目录 前言 一&#xff0c;方法封装 二&#xff0c;okhttpretrofitrxjava 实现网络请求 前言 关于RXJava的基本使用&#xff0c;请参考 文章android--RXJava详细使用篇-CSDN博客 下面我们讲一下RXJava在android中的相对比较…

[设计模式Java实现附plantuml源码~结构型]不兼容结构的协调——适配器模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

AIGC专题:生成式AI(GenAI)赋能供应链之路

今天分享的是AIGC系列深度研究报告&#xff1a;《AIGC专题&#xff1a;生成式AI&#xff08;GenAI&#xff09;赋能供应链之路》。 &#xff08;报告出品方&#xff1a;Gartner&#xff09; 报告共计&#xff1a;46页 什么是生成式人工智能 ChatGPT&#xff1a;一种OpenAI服…

Mac删除自带的ABC输入法,简单快捷

一、下载PlistEdit Pro软件 二、终端执行 sudo open ~/Library/Preferences/com.apple.HIToolbox.plist 三、其中有一个数字下面的KeyboardLayout Name的value为“ABC”&#xff0c;这就是ABC输入法&#xff0c;点击上面的Delete按钮&#xff0c;删除整项ABC内容&#xff0c…

MySQL表的基本操作

目录 一、创建表的语法 二、表的物理存储类型 三、数据类型 3.1 文本类型类型&#xff1a; 3.2 数字类型&#xff1a; 3.3 时间\日期类型&#xff1a; 常用数据类型&#xff1a; 四、查看表 五、删除表 六、修改表的结构 八、数据库字典 九、表的约束 9.1 五类完整…

Unity 常见的图像压缩格式优缺点

在Unity中&#xff0c;将图像压缩至更小的大小&#xff0c;既可以加快加载速度&#xff0c;也可以减少内存的占用。根据不同的目标平台&#xff0c;Unity提供了以下几种常见的图像压缩格式&#xff1a; 1. RGBA Compressed: 是一种通过压缩的方式来存储RGBA&#xff08;红色、…

中国的茶文化:现代生活中的茶文化

中国的茶文化&#xff1a;现代生活中的茶文化 引言 在现代社会的快节奏生活中&#xff0c;茶文化并未随时间流逝而褪色&#xff0c;反而以其独特的方式融入了全球各地人们的日常生活。它超越了饮品本身的范畴&#xff0c;成为一种连接历史、人文与现代生活方式的艺术形式。本文…

Python算法题集_滑动窗口最大值

本文为Python算法题集之一的代码示例 题目239&#xff1a;滑动窗口最大值 说明&#xff1a;给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗…

DevExpress WinForms中文教程 - 如何创建可访问的WinForms应用?(一)

为用户创建易访问的Windows Forms应用程序不仅是最佳实践的体现&#xff0c;还是对包容性和以用户为中心的设计承诺。在应用程序开发生命周期的早期考虑与可访问性相关的需求可以节省长期运行的时间(因为它将决定设计决策和代码实现)。 一个可访问的WinForms应用程序提供了各种…

【Python基础知识】(19)三种内置生成式

文章目录 一、列表生成式二 、字典生成式三、集合生成式 一、列表生成式 # 1. 列表生成式&#xff0c;语法&#xff1a;[被追加的数据 循环语句 循环或者判断语句] lst2 [i * 10 for i in range(10, 20)] print(lst2) # 输出&#xff1a;[100, 110, 120, 130, 140, 150, 160…

Python中类的相关术语(附带案例)

目录 1、面向对象 2、类 3、实例 4、初始化方法 5、魔法方法 6、字符串方法 7、self 8、数据、属性、操作、行为 9、父类、基类、超类 or 子类、派生类 10、多态 11、重载多态 and 重写多态 12、名称解释 1、面向对象 在Python中&#xff0c;面向对象编程&…

Qt关于qss文件的添加使用

把ui设计得更加的养眼&#xff0c;肯定需要对控件的属性进行设置&#xff0c;qt中就是关于qss文件的使用。 那么如何创建和添加qss文件呢 1.新建一个文本文件的txt 2.将文本文件的后缀改为qss&#xff08;类比html&#xff09; 3.放置到项目的资源文件夹下 4.添加资源文件 5.在…

代码随想录算法训练营第二二天| 二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点

目录 二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点普通二叉树的删除方式 LeetCode 235. 二叉搜索树的最近公共祖先 LeetCode 701.二叉搜索树中的插入操作 LeetCode 450.删除二叉搜索树中的节点 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到…

windows安装oracle之后怎么连接使用

目录 1.打开SQl Developer 2.选择JDK 3.登录 4.创建表空间,用户 安装oracle的详细教程 WINDOWS安装Oracle11.2.0.4-CSDN博客 1.打开SQl Developer 找到 SQl Developer 2.选择JDK 根据你安装的oracle版本,因为我的oracle是安装的32位的,所以这里jdk也要选择32位 选择到ja…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换&#xff1b;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环&#xff0c;根据迭代式对变量反复赋值。 求近似根&#xff08;切线法&#xff09;&#xff1b; 迭代描述&#xff1a; x 0 x_0 x0…

Docker核心教程

1. 概述 官网&#xff1a;https://docs.docker.com/ Docker Hub 网站&#xff1a;https://hub.docker.com/ 容器较为官方的解释&#xff1a; 一句话概括容器&#xff1a;容器就是将软件打包成标准化单元&#xff0c;以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立…

Threejs API——`OrbitControls`相机控件

文章目录 API用法API OrbitControls 相机控制用法 导入import {OrbitControls } from three/examples/jsm/controls/OrbitControls.js import {DRACOLoader,AmbientLight,Color,MOUSE,

Java项目要不要部署在Docker里?

部署Java项目有很多种方式&#xff0c;传统的方式是直接在物理机或虚拟机上部署应用&#xff0c;但为什么现在容器化部署变得越来越流行&#xff0c; 个人觉得原因有以下几个&#xff1a; 1、 环境一致性&#xff1a;使用Docker可以确保开发、测试和生产环境的一致性&#xff…

传感器类总结(一)MPU9250 3-2程序关于IIC的底层程序

关于IIC的逻辑和底层协议可以看之前总结的 #IIC 通信协议 1、读写数据 1.1、写数据 发送N个字节程序的流程: 1、发送起始信号 2、发送从机地址和写 3、等待从机发回应答信号 4、发送第一字节数据 等待应答 5、发送下一字节数据 等带应答或非应答信号 6、发送停止信号停止发送…