[mysql]mysql的DML数据操作语言增删改,以及新特性计算列,阿里巴巴开发手册mysql相关

1DML数据操作语言,增加删除改数据

插入数据INSERT

插入添加数据,两种方法

方式1:VALUES添加数据

#准备工作

USE atguigudb;

CREATE TABLE IF NOT EXISTS emp1(

id INT,

`name` VARCHAR(15),

hire_data DATE,

salary DOUBLE(10,2));

SELECT * FROM emp1

INSERT INTO emp1

VALUES (1,'tom','2000-12-21',3400)

#如果没有声明字段,就必须按照表的字段的先后顺序添加,不能乱来

这个方法好不好呢,当然是不好的,我们必须清楚知道表的字段内容.

所以我们可以再表名后面用括号声明字段

INSERT INTO emp1(id,`name`,hire_data,salary)#这里我们就可以添加一个括号声明字段

VALUES (1,'tom','2000-12-21',3400)

说明:没有进行赋值的字段的值为null,如果有约束可能就会出错

如何插入多条记录:

INSERT INTO emp1(id,NAME ,salary)

VALUES (2,'tom2',34000),(3,'toem2',34000)#我们可以把我们要插入的数据用,隔开,这样效率比用一对INSERT效率会高不少

#方式2将查询结果插入到表中

INSERT INTO emp1(id,NAME ,salary)

SELECT employee_id,last_name,salary FROM employees WHERE department_id in (20,30)#字段一定要和表一一对应

   

我们发现类型和我们的表的类型是不太一致,如果把小的范围放到大的范围是可以的,但是如果大的范围插入小的范围是有可能报错的.如果要用这个方法去添加这个范围和长度一定要先看一下,添加的表的数据范围一定要小于我们表的范围.是否出错,主要是看是否出现太长的值

还有就是VALUES关键词是可以写成VALUE的不影响,但是VALUES是标准写法

更新数据(修改数据)UPDATE

UPDATE….SET …..WHERE

我们希望把id等于5的hiredate改成当前的日期.

我们一般都会有WHERE的条件,因为如果不进行条件限制,那么字段全部的值都会被调整为当前的日期,或其他值

UPDATE emp1 SET hire_date=curdate().WHERE id=1

是可以实现批量修改数据的.我们要改哪些数据呢,看WHERE就行

#同时修改一条数据的多个字段

UPDATE emp1 SET hire_data=CURDATE(),salary=5000 WHERE id=3

#同时修改一条数据的多个字段

修改名字包含’a’的工作+100

UPDATE emp1 SET salary=salary+100 WHERE id like ‘’

修改数据时可能会存在不成功的情况的,(可能由于约束的影响造成的)

比如我们约束要求部门必须存在部门表中,如果部门没有100那么就会失败.

#删除数据只能一条一条的删DELECT FROM…… WHERE

DELETE FROM emp1 WHERE ID=1

删除数据时也可能会存在不成功的情况的,(也可能由于约束的影响造成的)

比如我们要删除50号部门,但是我们50号部门还有员工,我们约束员工是必须在部门表里有50号部门.那么除非部门里的员工都拆了,才能瞒住我们的外键约束.

小结:DML操作默认情况喜爱执行后会自动提交数据,如果希望执行之后不自动提交数据,需要使用SET autocommit=FALSE

使用频率上DML是非常频繁的,比如我们删除购物车的数据,那么久要DELECTE添加就要INSERT,查询的就更多了

mysql8.0的新特性,计算列

计算列就是根据其他列计算得来,那么就叫计算列比如a列的值是1b列的值是2,c列为a+b,c的值就是a+b..比如我们sql查询的时候要对10万条记录的6个字段进行计算或者连接,每条记录都要计算之后才能得到,因为要临时运算,所以结果就会比较复杂.那么我们如果有计算列就可以直接查询列.

我们可以造表的时候就添加我们的计算列.

CREATE TABLE test1(

A int,

B int,

C int GENERATED ALWAYS AS (a+b) VIRTUAL#字段c就是我们的计算列

)#这里可以不添加GENERATED ALWAYS,C int  (a+b) VIRTUAL,也可行,virtual代表实时计算,不物理存储在数据库中

#我们再插入一个数据

INSERT INTO test1(a,b)

VALUES(1,2)

我们可以发现c自动就有值了

我们来修改一下A和B的值

UPDATE test1 SET a=5,b=6 WHERE A=1

SELECT * FROM test1

这是一个非常好的特性,大家就可以在工作环境中使用了.

阿里巴巴开发手册内容拓展:

mysql字段命名规范

1(强制)表名和字段名必须用小写字母和数字,禁止出现数字开头,禁止两个下划线中间只出现数字,数据库中字段名的修改代价很大,不能进行预发布,所以字段名需要慎重考虑:

2(强制)禁止使用保留字(关键词,函数名)比如desc,range,match,delayed等

3(强制)表必须有3个字段:id;gmt_create,gmt_modified,第一个是主键id,类型为BIGINT UNSIGNED,单表时自增,步长为1. gmt_create,gmt_modified,都是DATETIME类型,前者是创建时间,主动添加,后者更新时被动添加

4(推荐)表的命名最好是遵循”业务名称_表的应用”,

ALIPAY_test.for

5(推荐)库名与应用名尽量一致..

(参考)合适的字符储存长度,不但节省数据库表空间,(这个好理解,短的空间肯定少,储存空间也小),节省索引储存,更重要的是提升检索速度.(数据页内存只能加载16k,可以存放的数量是和你储存的大小有关系的,所以要注意这一点,)

无符号值可以避免误存负数,扩大了表示范围

如何理解清空表.删除表需要谨慎:

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

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

相关文章

自由学习记录(19)

unity核心也算是看完了吧,但觉得的确是少了点东西,之后再看mvc框架,和网络开发,,感觉有必要想想主次顺序了,毕竟在明年的3月之前尽量让自己更有贴合需求的能力 先了解一些相关概念,不用看懂&am…

vue计算属性

概念:基于现有的数据,计算出来新属性。并依赖数据的变化,自动重新计算 使用场景: 语法:声明在computed配置项中,一个计算属性对应一个函数,使用起来和普通属性一样使用{{计算属性名}} 代码&…

Promise 简单介绍及深入挖掘

一、什么是 Promise? 在 JavaScript 中,Promise 是用于处理异步操作的一种方式。它代表了一个 可能 在将来某个时间点完成或失败的操作的结果。Promise 使得我们能够优雅地处理异步代码,避免了回调地狱(Callback Hell)…

springboot2.x使用SSE方式代理或者转发其他流式接口

文章目录 1.需求描述2.代码2.1.示例controller2.2.示例service2.3.示例impl 3.测试 1.需求描述 使用SSE的方式主要还是要跟前端建立一个EventSource的链接,有了这个连接,然后往通道里写入数据流,前端自然会拿到流式数据,写啥拿啥…

Java学习教程,从入门到精通,Java方法语法的知识点总结(21)

1、Java方法语法的知识点总结 方法定义: 方法是执行特定任务的代码块。 方法包含一个方法头和一个方法体。 语法: [修饰符] 返回值类型 方法名(参数列表) {// 方法体 }修饰符: 访问修饰符(如 public, private, protected&#x…

Hive操作库、操作表及数据仓库的简单介绍

数据仓库和数据库 数据库和数仓区别 数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别 操作型处理(数据库),叫联机事务处理OLTP(On-Line Transaction Processing),也可以称面向用户交易的处理系统,它是针对具体业务…

C#语言在软件开发中的应用与优势

C#(读作“C-sharp”)是一种由微软公司开发的通用高级编程语言,自2000年发布以来,它迅速成为开发人员构建各种类型应用程序的首选语言之一。C#的设计目标是成为一种简单、现代、面向对象的语言,它结合了C的强大功能和Ja…

基于STM32的智能植物灌溉系统设计

引言 本项目基于STM32微控制器设计了一个智能植物灌溉系统,通过集成土壤湿度传感器和水泵,实现植物自动浇水的功能。该系统可以检测土壤的湿度状况,根据设定的湿度阈值自动启动或停止灌溉,为植物提供适宜的生长环境。项目涉及硬件…

OpenStack API 来创建用户

OpenStack API 来创建用户。 代码详解 import requests import jsonrequests:用于发送 HTTP 请求的库。json:用于处理 JSON 数据格式的库。 controller_ip 10.104.43.10 url f"http://{controller_ip}:5000/v3/auth/tokens"controller_ip…

Ubuntu22.04 安装图形界面以及XRDP教程

一、准备环境 1.一台服务器安装系统ubuntu(这里大部分ubuntu系统可以同用) 2.安装的ubuntu系统未安装图形界面 二、操作步骤 1.远程ssh或者直接登录服务器命令行界面 ssh -p 远程端口 rootIP 2.更新系统软件包 sudo apt update # 更新本地的软件包…

C++:多态中的虚/纯虚函数,抽象类以及虚函数表

我们在平时,旅游或者是坐高铁或火车的时候。对学生票,军人票,普通票这些概念多少都有些许耳闻。而我们上篇文章也介绍过了继承与多继承。如果这些票我们都分别的去写一个类,当然很冗余,这里我们便可以去使用继承&#…

【易售校园二手平台】开源说明(包含项目介绍、界面展示与系列文章集合)

文章目录 仓库项目介绍技术架构界面登录界面首页闲置商品发布商品详情收藏页面消息页面私聊我的查看我发布的商品 可优化点开发讲解文章集合 仓库 🏠️ 项目仓库:易售校园二手平台gitee仓库 🌍️ 在线体验:易售校园二手平台&…

python怎么将字符串转换为数字

python如何将列表中的字符串转为数字?具体方法如下: 有一个数字字符的列表: numbers [1, 5, 10, 8] 想要把每个元素转换为数字: numbers [1, 5, 10, 8] 用一个循环来解决: new_numbers []; for n in numbers:new_n…

APP 后台广告位配置的关键要素与策略

在当今数字化营销的浪潮中,APP 作为重要的信息传播渠道,其后台广告位的配置显得尤为关键。这不仅影响着广告的展示效果,还直接关系到用户体验和平台收益。 首先,了解目标受众是配置广告位的基础。通过对 APP 用户的行为数据进行分…

创建MoveIt! Package

2.1 准备URDF package 首先我们要准备一个机械臂的urdf,如果你已有URDF,可以使用自己的urdf模型。若手头没有现成的URDF,可以从此处下载一个库卡LWR简化模型URDF,这是一个固定底座7自由度的机械臂。 从该连接处依次进入examples/s…

穴位大揭秘:使用「人体穴位图解」,轻松学会精准按摩技巧

软件介绍 人体穴位图解是一款免费无广提供人体穴位图解、人体经络病症及穴位图表的应用,采用目前流行的Flutter框架开发,遍布肺、肠、脾、胃、心、肝等部位。该应用所有资料均来自相关公共医学文献,具有一定的参考价值,通过图文介…

java-web-day14-项目属性配置和bean的管理

springboot支持的属性配置方式 1.配置文件配置: application.properties application.yml application.yaml 2.java属性配置 -D... 例如配置端口号: -Dserver port 10000 3.命令行参数 --.... 例如配置配置端口号 --server port 10000 三者的发挥作用优先级: 命令行参数>jav…

c++算法练习(3)石头剪刀布、输出亲朋字符串、配对碱基对、标准库的字符替换、密码翻译

#include <string>vector<string>results;results.push_bask(string1);for(const auto &result :result)//字符串可以用下表访问string myString;string.length()ss.replace(ss,find(A),1,T);char operator()(char ch) const class SomeClass {private:int mem…

SpringBoot二手车交易管理系统-计算机毕业设计源码02893

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2开发现状 1.3论文结构与章节安排 2 二手车交易管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系统用例…

Linux scp命令 | 菜鸟教程-从本地复制到远程/从远程复制到本地

目录 Linux scp命令 语法 实例 1、从本地复制到远程 2、从远程复制到本地 说明 文章来源&#xff1a;Linux scp命令 | 菜鸟教程 Linux scp命令 nux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远…