【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_idFROM clientsWHERE name = 'Myworks')UPDATE invoices
SET payment_total = invoice_total * 0.5,payment_date = due_date
-- 多个查询条件是要换成IN
WHERE client_id IN(SELECT client_idFROM clientsWHERE 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 ANDcustomer_id IN (SELECT customer_idFROM customersWHERE points > 3000)

删除行 DELETE

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

恢复数据库到原始状态

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

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

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

相关文章

Git 命令详解

系列文章目录 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 C技能系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream we…

【博士每天一篇文献-算法】Imposing Connectome-Derived Topology on an Echo State Network

阅读时间&#xff1a;2023-11-5 1 介绍 年份&#xff1a;2022 作者&#xff1a;Jacob Morra, Mark Daley 西部大学 期刊&#xff1a;2022 International Joint Conference on Neural Networks (IJCNN) 引用量&#xff1a;3 研究了果蝇连接图的拓扑结构对混沌时间序列预测中回…

MGA-WPA

作者未提供代码

YOLO目标检测——猫狗目标检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;宠物识别、猫狗分类数据集说明&#xff1a;猫狗分类检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含有猫和狗图片标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xm…

【开源】基于Vue.js的智能停车场管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…

Spring Boot中使用Spring Data JPA访问MySQL

Spring Data JPA是Spring框架提供的用于简化JPA&#xff08;Java Persistence API&#xff09;开发的数据访问层框架。它通过提供一组便捷的API和工具&#xff0c;简化了对JPA数据访问的操作&#xff0c;同时也提供了一些额外的功能&#xff0c;比如动态查询、分页、排序等。 …

ThinkPHP图片处理之压缩图片大小,图片处理之图片水印(添加平铺文字水印,并设置文字之间的间距和文字的角度)

安装扩展 使用Composer安装图像处理类库 composer require topthink/think-image在对应的控制器内引入Image use think\Image;图片处理之压缩图片大小 public function upload(){$file request()->file(image);// 将前端传过来的图片移动到项目目录下$info $file->…

PostgreSQL 技术内幕(十一)位图扫描

扫描算子在上层计算和底层存储之间&#xff0c;向下扫描底层存储的数据&#xff0c;向上作为计算的输入源&#xff0c;在SQL的执行层中&#xff0c;起着关键的作用。顺序、索引、位图等不同类型的扫描算子适配不同的数据分布场景。然而&#xff0c;扫描算子背后的实现原理是怎样…

分布式理论基础:CAP定理

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

【数据结构】:红黑树

1、红黑树的简介 红黑树&#xff08;Red Black Tree&#xff09; 是一种自平衡二叉查找树&#xff0c;是在计算机科学中用到的一种数据结构。 红黑树是在1972年由Rudolf Bayer发明的&#xff0c;当时被称为平衡二叉B树&#xff08;symmetric binary B-trees&#xff09;。后来…

共话医疗数据安全,美创科技@2023南湖HIT论坛,11月11日见

11月11日浙江嘉兴 2023南湖HIT论坛 如约而来 深入数据驱动运营管理、运营数据中心建设、数据治理和数据安全、数据资产“入表”等热点、前沿话题 医疗数据安全、数字化转型深耕者—— 美创科技再次深入参与 全新发布&#xff1a;医疗数据安全白皮书 深度探讨&#xff1a;数字…

【Axure高保真原型】树切换动态面板案例

今天和大家分享树切换动态面板的原型模板&#xff0c;点击树的箭头可以打开或者收起子节点&#xff0c;点击最后一级人物节点&#xff0c;可以切换右侧面板的状态到对应的页面&#xff0c;左侧的树是通过中继器制作的&#xff0c;使用简单&#xff0c;只需要按要求填写中继器表…