本篇知识点

更新删除数据、创建操纵表、视图、存储过程


更新和删除数据

  • 使用UPDATE语句更新(修改)表中的数据:

    • 更新表中特定行(使用WHERE语句
    • 更新表中所有行
  • UPDATE语句以要更新的表名开始,SET命令用来赋值
UPDATE 

更新多个列

UPDATE 

使用IGNORE关键字,即使在更新多个行时发生错误,也能继续进行更新

UPDATE 

  • 删除某个列的值,可使用UPDATE设置它为NULL(假如表定义允许NULL值)
UPDATE 

其中NULL用来去除cust_mail列中的值

  • 使用DELETE语句从一个表中删除数据

    • 从表中删除特定行
    • 从表中删除所有行
  • DELETE删除整行,删除列(值)用UPDATE
DELETE 

DELETE不删除表本身;删除所有行用TRUNCATE TABLE[1]更快。

创建和操纵表

  • 使用CREATE TABLE创建表时,须给出下列信息:

    • 新表的名字,在关键字CREATE TABLE之后给出;
    • 表列的名字和定义,用逗号分隔
  • 创建练习使用的customers表
CREATE 

在表名后给出IF NOT EXISTS,仅在表名不存在时创建它。

  • NULL值表示没有值或缺值,允许NULL值的列允许在插入行时不给出该列的值,否之必须给值
CREATE 

NULL值和NOT NULL可以在创建时混用

  • 主键值必须唯一;创建由多个列组成的主键,应该以逗号分隔的列表给出各列名:
CREATE 

订单号(order_num)和订单物品(order_item)的组合是唯一的,从而适合作为主键。

主键:其值唯一标识表中每个行的列;主键中只能使用定义为NOT NULL的列。

  • 使用AUTO_INCREMENT,当一列增加一行时自动增量,给该列赋予一个可用的值,一般用在id列,可用作主键值;每个表只允许一个AUTO_INCREMENT列,且它必须被索引。
  • 使用last_insert_id( )函数可获得使用AUTO_INCREMENT列时获得的值
SELECT 

返回一个AUTO_INCREMENT值

  • 指定默认值:如果在插入行时没有给值,可指定使用默认值
quantity 

MySQL只支持常量作为默认值

  • 引擎类型

    • InnoDB是一个可靠的事务处理引擎,不支持全文本搜索
    • MEMORY功能等同与MyISAM,数据存储在内存中,速度很快(适合于临时表)
    • MyISAM性能很高,支持全文本搜索,不支持事务处理

外键不能跨引擎

  • 使用ALTER TABLE语句更新表定义,须给出:

    • ALTER TABLE之后给出要更改的表名
    • 更改的列表
  • 给表添加一个列
ALTER 

  • 删除刚添加的列
ALTER 

  • 使用ALTER TABLE定义外键:
ALTER 

对单个表进行多个更改,可使用单挑ALTER TABLE语句,每个更改用逗号分隔

  • 删除表
DROP 

  • 重命名表
RENAME 

可以对多个表重命名,用逗号分开。

使用视图

  • 视图是虚拟的表;视图只包含使用时动态检索数据的查询。
  • 为什么使用视图
    • 重用SQL语句
    • 简化复杂的SQL操作。编写查询后,可以方便地重用它而不必知道基本细节
    • 使用表的组成部分而非整个表
    • 保护表数据。用户仅被授予表的特定部分的访问权限。
    • 更改数据格式和表使。视图可返回与底层表的表示和格式不同的数据
  • 视图是用来查看存储在别处的数据的一种设施,它本身不包含数据。
  • 视图的创建
    • 用CREATE VIEW语句创建
    • 使用SHOW CREATE VIEW viewname;来查看创建视图的语句
    • 用DROP删除视图,语法为DROP VIEW viewname
    • 更新视图时,可先DROP再CREATE,也可直接CREATE OR REPLACE VIEW.
  • 使用视图隐藏复杂的SQL
CREATE 

这条语句创建一个名为productcustomers的视图,它联结三个表。

为检索订购了产品TNT2的客户,可如下进行:

SELECT 

  • 使用视图重新格式化检索出的数据
CREATE 

  • 用视图过滤不想要的数据
CREATE 

定义customeremaillist视图,过滤没有电子邮件地址的客户。

  • 使用视图与计算字段
CREATE 

  • 视图是可更新的(对它们使用INSERT, UPDATE和DELETE),但是如果视图定义中有以下操作(使得MySQL不能正确地确定被更新的基数据),则不能进行视图更新:

    • 分组(使用GROUP BY和HAVING)
    • 联结
    • 子查询
    • 聚集函数(Min( ), Count( ), Sum( )等)
    • DISTINCT
    • 导出(计算)列

使用存储过程

  • 存储过程,就是为了以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件。
  • 执行存储过程 称为调用,使用语句CALL
CALL 

其中,执行名为productpricing的存储过程,它计算并返回产品的最低、最高和平均价格。

  • 创建存储过程 例子:一个返回产品平均价格的存储过程
CREATE 

此存储过程名为productpricing,用CREATE PROCEDURE productpricing( )语句定义,若存储过程接受参数,将在( )中列举出来。BEGIN和END语句用来限定存储过程体,存储过程体本身仅是一个简单的SELECT语句。

  • mysql命令行客户机的分隔符 (我懒得打字总结了)
摘自《MySQL必知必会》
  • 使用存储过程
CALL 

  • 删除存储过程
DROP 

  • 使用参数
CREATE 

此存储过程接受3个参数:pl存储产品最低价格,ph存储产品最高价格,pa存储产品平均价格。每个参数必须具有指定的类型,这里使用十进制值。关键词OUT指出相应的参数用来从存储过程传出一个值(返回给调用者)。MySQL支持IN(传递给存储过程)、OUT(从存储过程传出)和INOUT(对存储过程传入和传出)类型的参数。

  • 调用此存储过程须指定3个变量名
CALL 

变量以@开始。调用时上条语句不显示数据,它返回可以显示的变量。

  • 显示数据
SELECT 

  • 显示3个数据
SELECT 

  • 使用INOUT参数
CREATE 

onumer定义为IN, 因为订单号被传入存储过程。ototal定义为OUT, 因为要从存储过程返回合计,INTO使用ototal存储计算出来的合计。

调用这个存储过程

CALL 

  • 建立智能存储过程

智能存储过程中包含了业务规则和智能处理,不仅限于封装简单的SELECT语句

案例 需要对订单合计增加营业税,不过只针对某些顾客

-- Name: ordertotal

这个存储过程增加了注释(前面放置--),用DECALRE语句定义了两个局部变量。COMMENT关键字非必须,如果给出,将在SHOW PROCEDURE STATUS结果中显示。

  • 试验存储过程
CALL 

  • 检查存储过程
SHOW 

参考

  1. ^TRUNCATE实际是删除原来的表并重新创建一个表,而不 是逐行删除表中的数据.

mysql必知必会_5天学完《MySQL必知必会》学习笔记之第四天相关推荐

  1. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  2. 一篇学完:GAMES101:现代计算机图形学入门 学习笔记

    文章首发于lengyueling.cn 欢迎访问交流! PDF版本已经附在lengyueling.cn文章末尾,需要自取. 导论 图形学应用场景 电子游戏: PBR:之狼 卡通渲染:无主之地 电影:黑 ...

  3. 电路不挂科——四小时学完电路原理(猴博士学习笔记1)

    电路基础 ##1串并联,短路与断路 这里是一些高中基础知识,相信大家没有感到陌生,需要注意的是电阻并联的公式有两种形态. ##电源 在大学的电路分析中,电源的表示方式有很多种,其中比较常用的就两种表示 ...

  4. Mysql学习笔记day1 --三天学完mysql所有知识点

    Mysql 超全MySQL学习笔记,三天就可以学会熟练运用SQL语句,干货满满,文章末尾有相应的练习题,可以多练练加深印象,希望我的文章对你有所帮助 一.服务器 1.什么是服务器?用于提供共享资源文件 ...

  5. 5天学会mysql_5天学完《MySQL必知必会》学习笔记之第四天

    本篇知识点 更新删除数据.创建操纵表.视图.存储过程 更新和删除数据使用UPDATE语句更新(修改)表中的数据:更新表中特定行(使用WHERE语句 更新表中所有行 UPDATE语句以要更新的表名开始, ...

  6. 9篇小白都能懂系列博客学完MySQL基础

    博主经过三天的时间整理终于把MySOL基础部分内容总结成了这九篇博客,如果博主漏写了重点的基础部分的内容,或者说博主写的地方有错误还请CSDN的兄弟们提醒(这一点就比较重要了),由于博主的时间比较有限 ...

  7. 【MySQL数据库】一天学完MySQL笔记——纯SQL文档版

    查看建表语句 show create table `表名` 全部笔记 -- Notepad++快捷键: -- CTRL D复制一行 -- CTRL L删除一行-- Eclipse快捷键: -- ALT ...

  8. Mysql学习笔记day3 --三天学完mysql所有知识点

    mysql 一.练习 列出至少有4个员工的部门名称 selectd.dname 部门名称,count(e.empno) 部门人数 fromemp e join dept d one.deptno = ...

  9. mysql 数据库 额外_Manager额外参数怎么学?mysql数据库学习

    说明:主库宕机谁来接管? 1. 所有从节点日志都是一致的,默认会以配置文件的顺序去选择一个新主. 2. 从节点日志不一致,自动选择最接近于主库的从库 3. 如果对于某节点设定了权重(candidate ...

最新文章

  1. 【转】java提高篇(十)-----详解匿名内部类
  2. php提示密码错误的代码_php 实现密码错误三次锁定账号10分钟
  3. tf.nn.conv2d() / tf.nn.depthwise_conv2d() 和 Batchsize效益
  4. ssl提高组周三备考赛【2018.10.17】
  5. Java面向对象(1)--对象的创建使用类的实例化
  6. 1.1 字符串的旋转+1.2 字符串的包含
  7. 蓝桥杯大赛基础之--数列排序
  8. 个人的中小型项目前端架构浅谈(转)
  9. ip受限 linux_从linux源码看epoll及epoll实战揭秘
  10. input的一些使用方法
  11. Spring properties dependency checking
  12. echarts入门基础教程
  13. 2021龙川隆师中学高考成绩查询入口,2021年河源中考成绩和分数线什么时候公布(附查询入口)...
  14. 区块链是大数据生态圈技术之一_ODC构建普惠金融生态圈|区块链+大数据
  15. bzoj 4484 [Jsoi2015]最小表示——bitset
  16. 双硬盘笔记本电脑安装WIN10和Ubuntu双系统(二)
  17. 数据分析 学习小结记录
  18. 访问者(vistor)模式
  19. OSChina 周三乱弹 ——用程序员思维找妹子
  20. ST_Geometry

热门文章

  1. Spring MVC 实践 - Base
  2. 财经数据提取器上线拉
  3. filebeat + es 日志分析
  4. 详谈分布式系统缓存的设计细节
  5. idea加载lombok插件
  6. 重定向 302 与localhost 学习笔记
  7. CXF WebService 开发文档-目录索引
  8. archlinux使用sudo
  9. FAT32和NTFS的区别
  10. 获得字典中的最后一个元素python_Python从入门到熟练(5): 数据类型进阶