mysql必知必会_5天学完《MySQL必知必会》学习笔记之第四天
本篇知识点
更新删除数据、创建操纵表、视图、存储过程
更新和删除数据
- 使用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命令行客户机的分隔符 (我懒得打字总结了)
- 使用存储过程
CALL
- 删除存储过程
DROP
- 使用参数
CREATE
此存储过程接受3个参数:pl存储产品最低价格,ph存储产品最高价格,pa存储产品平均价格。每个参数必须具有指定的类型,这里使用十进制值。关键词OUT指出相应的参数用来从存储过程传出一个值(返回给调用者)。MySQL支持IN(传递给存储过程)、OUT(从存储过程传出)和INOUT(对存储过程传入和传出)类型的参数。
- 调用此存储过程须指定3个变量名
CALL
变量以@开始。调用时上条语句不显示数据,它返回可以显示的变量。
- 显示数据
SELECT
- 显示3个数据
SELECT
- 使用IN和OUT参数
CREATE
onumer定义为IN, 因为订单号被传入存储过程。ototal定义为OUT, 因为要从存储过程返回合计,INTO使用ototal存储计算出来的合计。
调用这个存储过程
CALL
- 建立智能存储过程
智能存储过程中包含了业务规则和智能处理,不仅限于封装简单的SELECT语句
案例 需要对订单合计增加营业税,不过只针对某些顾客
-- Name: ordertotal
这个存储过程增加了注释(前面放置--),用DECALRE语句定义了两个局部变量。COMMENT关键字非必须,如果给出,将在SHOW PROCEDURE STATUS结果中显示。
- 试验存储过程
CALL
- 检查存储过程
SHOW
参考
- ^TRUNCATE实际是删除原来的表并重新创建一个表,而不 是逐行删除表中的数据.
mysql必知必会_5天学完《MySQL必知必会》学习笔记之第四天相关推荐
- 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录
基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...
- 一篇学完:GAMES101:现代计算机图形学入门 学习笔记
文章首发于lengyueling.cn 欢迎访问交流! PDF版本已经附在lengyueling.cn文章末尾,需要自取. 导论 图形学应用场景 电子游戏: PBR:之狼 卡通渲染:无主之地 电影:黑 ...
- 电路不挂科——四小时学完电路原理(猴博士学习笔记1)
电路基础 ##1串并联,短路与断路 这里是一些高中基础知识,相信大家没有感到陌生,需要注意的是电阻并联的公式有两种形态. ##电源 在大学的电路分析中,电源的表示方式有很多种,其中比较常用的就两种表示 ...
- Mysql学习笔记day1 --三天学完mysql所有知识点
Mysql 超全MySQL学习笔记,三天就可以学会熟练运用SQL语句,干货满满,文章末尾有相应的练习题,可以多练练加深印象,希望我的文章对你有所帮助 一.服务器 1.什么是服务器?用于提供共享资源文件 ...
- 5天学会mysql_5天学完《MySQL必知必会》学习笔记之第四天
本篇知识点 更新删除数据.创建操纵表.视图.存储过程 更新和删除数据使用UPDATE语句更新(修改)表中的数据:更新表中特定行(使用WHERE语句 更新表中所有行 UPDATE语句以要更新的表名开始, ...
- 9篇小白都能懂系列博客学完MySQL基础
博主经过三天的时间整理终于把MySOL基础部分内容总结成了这九篇博客,如果博主漏写了重点的基础部分的内容,或者说博主写的地方有错误还请CSDN的兄弟们提醒(这一点就比较重要了),由于博主的时间比较有限 ...
- 【MySQL数据库】一天学完MySQL笔记——纯SQL文档版
查看建表语句 show create table `表名` 全部笔记 -- Notepad++快捷键: -- CTRL D复制一行 -- CTRL L删除一行-- Eclipse快捷键: -- ALT ...
- Mysql学习笔记day3 --三天学完mysql所有知识点
mysql 一.练习 列出至少有4个员工的部门名称 selectd.dname 部门名称,count(e.empno) 部门人数 fromemp e join dept d one.deptno = ...
- mysql 数据库 额外_Manager额外参数怎么学?mysql数据库学习
说明:主库宕机谁来接管? 1. 所有从节点日志都是一致的,默认会以配置文件的顺序去选择一个新主. 2. 从节点日志不一致,自动选择最接近于主库的从库 3. 如果对于某节点设定了权重(candidate ...
最新文章
- 【转】java提高篇(十)-----详解匿名内部类
- php提示密码错误的代码_php 实现密码错误三次锁定账号10分钟
- tf.nn.conv2d() / tf.nn.depthwise_conv2d() 和 Batchsize效益
- ssl提高组周三备考赛【2018.10.17】
- Java面向对象(1)--对象的创建使用类的实例化
- 1.1 字符串的旋转+1.2 字符串的包含
- 蓝桥杯大赛基础之--数列排序
- 个人的中小型项目前端架构浅谈(转)
- ip受限 linux_从linux源码看epoll及epoll实战揭秘
- input的一些使用方法
- Spring properties dependency checking
- echarts入门基础教程
- 2021龙川隆师中学高考成绩查询入口,2021年河源中考成绩和分数线什么时候公布(附查询入口)...
- 区块链是大数据生态圈技术之一_ODC构建普惠金融生态圈|区块链+大数据
- bzoj 4484 [Jsoi2015]最小表示——bitset
- 双硬盘笔记本电脑安装WIN10和Ubuntu双系统(二)
- 数据分析 学习小结记录
- 访问者(vistor)模式
- OSChina 周三乱弹 ——用程序员思维找妹子
- ST_Geometry