【MySQL】列属性

文章目录

  • CHAR和VARCHAR
  • 插入单行 INSERT INTO
  • 插入多行
  • 插入分层行 LAST_INSERT_IN()
  • 创建表复制 CREAT TABLE AS
  • 更新单行 UPDATE...SET
  • 更新多行
  • 在UPDATES中使用子查询【需着重复习】
  • 删除行 DELETE
  • 恢复数据库到原始状态

CHAR和VARCHAR

  1. CHAR(50):存储文本占5个字符,MySQL会再插入45个空格符填满此列。因此一般最好用VARCHAR来存储字符串或文本值。
  2. VARCHAR(50):文本占5个字符,就只存储这5个字符,不会浪费空间。

插入单行 INSERT INTO

  • INSERT INTO 表明(列名) VALUE(每列的值)
  • DEFAULT:写入默认值
-- 按照customers里的列,输入所需要的内容。
INSERT INTO customers
VALUES (
        DEFAULT,
        'John',
        'Smith',
        '1990-01-01',
        NULL,
        'address',
        'city',
        'CA',
        DEFAULT)

-- 指定插入customers中的哪些列,插入默认值的和NULL的可以不写在这里面。
INSERT INTO customers(
		first_name,
		last_name,
		birth_date,
		address,
		city,
		state)		
VALUES (
        'John',
        'Smith',
        '1990-01-01',
        'address',
        'city',
        'CA')

插入多行

  • VALUES后接几个括号就是插入几行
INSERT INTO shippers(name)
VALUES ('Shipper1'),
       ('wuxu'),
       ('songtuo')
-- 小小练习
INSERT INTO products
-- DEFAULT是默认列id,也可以不写
VALUES (DEFAULT, 'laote', 89, 1.34),
       (DEFAULT, 'laoda', 82, 1.33),
       (DEFAULT, 'laoer', 75, 1.32)

-- 另一种写法,插入行信息中不写DEFAULT
INSERT INTO products(name, 
			quantity_in_stock,
			unit_price)
VALUES ('laote', 89, 1.34),
       ( 'laoda', 82, 1.33),
       ( 'laoer', 75, 1.32)

插入分层行 LAST_INSERT_IN()

  • 获取新加记录的id:LAST_INSERT_IN()
-- 在orders里增加一条新记录,新的order_id是默认增加的,对应后面的LAST_INSERT_ID()
INSERT INTO orders(customer_id,
                   order_date,
                   status)
VALUES (1, '2019-01-02', 1);

-- 在order_items里对应刚添加的order_id添加新的订单货物信息,调用LAST_INSERT_ID获取新加的记录的id
INSERT INTO order_items
VALUES (LAST_INSERT_ID(), 1, 1, 2.95),
       (LAST_INSERT_ID(), 2, 1, 5.63);

创建表复制 CREAT TABLE AS

  • 用CREAT TABLE AS 创建的表复制,复制的表中没有主键,也没有被标记为自动递增的列
  • Truncate:右键表,使用这个工具可以清除表中所有的数据,使表变成空表
  • 向表中插入数据时,可以使用选择语句(SELECT FROM WHERE)作为插入语句(INSERT INTO)的子查询进行数据的插入
-- 新增的表没有主键,也没被标记为自动递增列
CREATE TABLE orders_archived_wuxu AS
SELECT * FROM orders

-- 可以使用Truncate工具删除表中的所有数据
-- 在复制的已经被删除了所有数据的新表中,想插入2019-01-01之前的数据,可以‘使用选择语句做作为插入语句中的子查询’
INSERT INTO orders_archived_wuxu
SELECT *
FROM orders
WHERE order_date < '2019-01-01'
-- 小小练习
CREATE TABLE invoices_archived_wuxu AS
SELECT invoice_id,
       number,
       c.name,
       invoice_total,
       payment_total,
       invoice_date,
       due_date,
       payment_date
FROM invoices
JOIN clients c USING (client_id)
WHERE payment_date IS NOT NULL;

更新单行 UPDATE…SET

  • UPDATE 表名 SET 每列信息
-- 更新id为1的这列
UPDATE  invoices
SET payment_total = 10, payment_date = '2019-03-01'
WHERE invoice_id = 1;

-- 把id为1的这列恢复成更新之前的
UPDATE  invoices
SET payment_total = DEFAULT, payment_date = NULL
WHERE invoice_id = 1;

-- 更新id为3的这列
UPDATE  invoices
SET payment_total = invoice_total * 0.5,
    payment_date = due_date
WHERE invoice_id = 3;

更新多行

  • 在WHERE子句中选择多行更新即可
UPDATE invoices
SET payment_total = invoice_total * 0.5,
    payment_date = due_date
-- WHERE子句中选择多行更新即可
WHERE client_id IN (3,4);
-- 小小练习,给在1990-01-01之前的顾客加50分
USE sql_store;
UPDATE customers
SET points = points + 50
WHERE birth_date < '1990-01-01';

在UPDATES中使用子查询【需着重复习】

-- 不采用硬编码指定值
USE sql_invoicing;
UPDATE invoices
SET payment_total = invoice_total * 0.5,
    payment_date = due_date
-- client_id不直接指定为几,不采用硬编码
-- 而是通过子查询来指定client_id的值
WHERE client_id =
      (SELECT client_id
       FROM clients
       WHERE name = 'Myworks')

UPDATE invoices
SET payment_total = invoice_total * 0.5,
    payment_date = due_date
-- 多个查询条件是要换成IN
WHERE client_id IN
      (SELECT client_id
       FROM clients
       WHERE state IN ('CA', 'NY'))
-- 练习
-- 我的写法,先把orders和customers表通过id匹配
UPDATE orders
JOIN customers USING (customer_id)
SET comments = 'GoldenClient'
WHERE shipped_date IS NOT NULL AND points > 3000

-- 筛选条件中直接写子查询,这样更清楚,思路更易懂。需要学习、习惯这种写法
UPDATE orders
SET comments = 'GoldenClient'
WHERE shipped_date IS NOT NULL AND
      customer_id IN (
                    SELECT customer_id
                    FROM customers
                    WHERE points > 3000)

删除行 DELETE

  • DELETE FROM
DELETE FROM invoices
WHERE client_id = (
    SELECT client_id
    FROM clients
    WHERE name = 'Myworks')

恢复数据库到原始状态

  • 在IDEA中找到Project,选择对应的sql文件,双击后,CtrlA全选后执行,即可恢复数据库到原始状态。
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows10 安装 Ubuntu(WSL2)

Windows10 安装 Ubuntu(WSL2)&#xff1a;因为 Ubuntu(WSL1) 不具备调试功能&#xff0c;所以尽可能安装 Ubuntu(WSL2)。 具体流程如下&#xff1a; 1. 什么是WSL Windows Subsystem for Linux&#xff08;简称WSL&#xff09;&#xff0c;Windows下的 Linux 子系统&#xff…

面试10000次依然会问的【ThreadLocal】,你还不会?

ThreadLocal简介与基本概念 ThreadLocal&#xff0c;即线程局部变量&#xff0c;是Java语言中用于实现线程数据隔离的一个重要类。这种机制允许在多线程环境中&#xff0c;每个线程都有自己的变量副本&#xff0c;从而使得每个线程都可以独立地改变自己的副本&#xff0c;而不…

【龙芯固件】ACPI——简介

一、 什么是ACPI ACPI是Hewlett-Packard, Intel, Microsoft, Phoenix, 和Toshiba共同制定的一个开放的行业规范。 ACPI由很多表组成&#xff0c;包括&#xff1a;RSDP&#xff0c;SDTH&#xff0c;RSDT&#xff0c;FADT&#xff0c;FACS&#xff0c;DSDT&#xff0c;SSDT&…

【操作系统面试题(32道)与面试Linux命令大全】

文章目录 操作系统面试题引论1.什么是操作系统&#xff1f;2.操作系统主要有哪些功能&#xff1f; 操作系统结构3.什么是内核&#xff1f;4.什么是用户态和内核态&#xff1f;5.用户态和内核态是如何切换的&#xff1f; 进程和线程6.并行和并发有什么区别&#xff1f;7.什么是进…

(2023|CVPR,扩散,主体标识符,先验保存损失)DreamBooth:微调文本到图像的扩散模型以实现主题驱动的生成

DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation 公众号&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.…

Java 面试题之 Logback 打印日志是如何获取当前方法名称的?

在 Java 中&#xff0c;有四种方法可以获取当前正在执行方法体的方法名称&#xff0c;分别是&#xff1a; 使用 Thread.currentThread().getStackTrace() 方法 使用异常对象的 getStackTrace() 方法 使用匿名内部类的 getClass().getEnclosingMethod() 方法 Java 9 的 Stack…

Clickhouse学习笔记(10)—— 查询优化

单表查询 Prewhere 替代 where prewhere与where相比&#xff0c;在过滤数据的时候会首先读取指定的列数据&#xff0c;来判断数据过滤&#xff0c;等待数据过滤之后再读取 select 声明的列字段来补全其余属性 简单来说就是先过滤再查询&#xff0c;而where过滤是先查询出对应…

[LeetCode周赛复盘] 第 371 场周赛20231112

[LeetCode周赛复盘] 第 371 场周赛20231112 一、本周周赛总结100120. 找出强数对的最大异或值 I1. 题目描述2. 思路分析3. 代码实现 100128. 高访问员工1. 题目描述2. 思路分析3. 代码实现 100117. 最大化数组末位元素的最少操作次数1. 题目描述2. 思路分析3. 代码实现 100124…

Linux tail命令:显示文件结尾的内容

tail 命令和 head 命令正好相反&#xff0c;它用来查看文件末尾的数据&#xff0c;其基本格式如下&#xff1a; [rootlocalhost ~]# tail [选项] 文件名 此命令常用的选项及含义 【例 1】查看 /etc/passwd 文件最后 3 行的数据内容。 [rootlocalhost ~]# tail -n 3 /etc/passwd…

全域旅游“一机游”智慧旅游平台解决方案:PPT全文48页,附下载

关键词&#xff1a;智慧文旅解决方案&#xff0c;智慧旅游解决方案&#xff0c;智慧旅游平台建设方案&#xff0c;智慧文旅综合运营平台&#xff0c;智慧文旅建设方案 一、智慧文旅一机游定义 智慧文旅一机游是一种新型的旅游方式&#xff0c;它通过智能化的设备和系统&#…

(一)正点原子I.MX6ULL kernel6.1移植

一、概述 学完了正点原子的I.MX6ULL移植&#xff0c;正点原子的教程是基于Ubuntu18&#xff0c;使用的是4.1.15的内核&#xff0c;很多年前的了。NXP官方也发布了新的6.1的内核&#xff0c;以及2022.04的uboot。 本文分享一下基于Ubuntu22.04&#xff08;6.2.0-36-generic&…

发送失败的RocktMQ消息,你遇到过吗?

背景 需要通过flink同时向测试和线上的RocketMQ中写入数据 现象 在程序中分别创建了两个MqProducer&#xff0c;设置了不同的nameServerAddr&#xff0c;分别调用不同的producer向不同环境发消息&#xff0c;返回发送成功&#xff0c;但是在线上MQ中却查不到数据&#xff0…

分布式理论基础:CAP定理

什么是CAP CAP原则又称CAP定理&#xff0c;指的是在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、 Availability&#xff08;可用性&#xff09;、Partition tolerance&#xff08;分区容错性&#xff09;这三个基本需求&#xff0c;最多只能同时…

【学习辅助】Axure手机时间管理APP原型,告别手机控高保真模板

作品概况 页面数量&#xff1a;共 30 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;时间管理、系统工具 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本品为「手机时间管理」APP原型&#xff0c;…

RK3568平台 在alsa框架中添加音频功放芯片

一.alsa框架概述 ALSA&#xff0c;全称是Advanced Linux Sound Architecture&#xff0c;是Linux中提供声音设备驱动的内核组件&#xff0c;应用可以通过ALSA接口实现音频播放、录音、设备通路控制、音量控制、通话等功能。 在 Linux 内核设备驱动层&#xff0c;ALSA 提供了 …

焕新古文化传承之路,AI为古彝文识别赋能

目录 1 古彝文与古典保护 2 古文识别的挑战 2.1 西文与汉文OCR 2.2 古彝文识别难点 3 合合信息&#xff1a;古彝文保护新思路 3.1 图像矫正 3.2 图像增强 3.3 语义理解 3.4 工程技巧 4 总结 1 古彝文与古典保护 彝文指的是云南、贵州、四川等地的彝族人使用的文字&am…

AI小镇Generative Agents: Interactive Simulacra of Human Behavior

文章目录 1 Introduction2 Related Works2.1 Human-AI Interaction2.2 Belivable Proxies for Human Behavior2.3 Large Language Model and Human Behavior 3 Generative agent behavior and interaction&#xff08;行为与交互&#xff09;3.1 Agent Avatar and Communicatio…

Leetcode—2471.逐层排序二叉树所需的最少操作数目【中等】(置换环解法!)

2023每日刷题&#xff08;二十七&#xff09; Leetcode—2471.逐层排序二叉树所需的最少操作数目 置换环解题思想 参考自网络 总交换次数 每一层最小交换次数之和 每一层元素个数 - 置换环数 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* …

照片放大软件 Topaz Gigapixel AI mac中文版简介

Topaz Gigapixel AI mac是一款使用人工智能功能扩展图像的桌面应用程序&#xff0c;同时添加自然细节以获得惊人的效果。使用深度学习技术&#xff0c;A.I.Gigapixel™可以放大图像并填写其他调整大小的产品遗漏的细节&#xff0c;使用A.I.Gigapixel™&#xff0c;您可以裁剪照…
最新文章