4-1插入记录INSERT

INSERT [INTO] tbl_name [(col_name)] {VALUES|VALUE} ({expr|DEFAULT},...), (...), ...   #可以一次性插入多条记录
INSERT [INTO] tbl_name SET col_name = {expr | DEFAULT}, ...  #可以使用子查询
INSERT [INTO] tbl_name [(col_name,...)] SELECT ... #可以将查询的结果插入到指定的表中
 
4-2更新记录UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] tbl_reference SET col_name1={expr1 | DEFAULT} [,col_name2={expr2|DEFAULT}] ... [WHERE where_condition]   #单表更新
 
4-3-1删除记录DELETE
DELETE FROM tbl_name [WHERE where_condition]  #单表删除
 
4-3-2多表删除
从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id 

DELETE  FROM t1 USING t1,t2 WHERE t1.id=t2.id 
2、从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 

DELETE  FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL 
3、从两个表中找出相同记录的数据并把两个表中的数据都删除掉
DELETE t1,t2 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25 
注意此处的delete t1,t2 from 中的t1,t2不能是别名
#delete t1,t2 from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 
在数据里面执行是错误的(MYSQL 版本不小于5.0在5.0中是可以的)
上述语句改写成
#delete table_name,table2_name from table_name as t1 left join table2_name as t2 on t1.id=t2.id where table_name.id=25 
在数据里面执行是错误的(MYSQL 版本小于5.0在5.0中是可以的)
附:上述语句运行的环境 MYSQL 4.0.2以上

4-4查找记录SELECT
SELECT select_expr  [,select_expr ...]
[
    FROM table_reference
    [WHERE where_condition]
    [GROUP BY {col_name | position} [ASC|DESC],....]                #分组,可以指定列名和列位置                                                                                                                                                 
    [HAVING where_condition]                 #对某一部分分组,保证分组条件要么聚合函数(MAX,SUM),或该语句出现在select语句中
    [ORDER BY {col_name | expr | position} [ASC|DESC] ,...]      #多用于升降序
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]      #限制查询结果返回数量
]
5-1子查询
子查询(Subquery)是指出现在其他SQL语句中的SELECT字句。 
#SELECT * FROM t1                   #outer query/outer statement 外查询
  WHERE
  col1 = (SELECT col2 FROM t2);    #subquery   子查询
子查询是嵌套在查询内部,且必须始终出现在圆括号内,可以包含多个关键字或条件,如 DISTINCT、GROUP BY 、ORDER BY 、LIMIT,函数等。 子查询外层查询可以是:SELECT,INSERT,UPDATE,SET或DO。
子查询可以返回标量、一行、一列或子查询。
使用比较运算符的子查询
包括=/>/</>=/<=/<>/!=/<=>
语法结构: operand comparison_operator subquery
#SELECT  goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >=(SELECT ROUND (AVG(goods_price),2) FROM tdb_goods);
子查询结果大于一个结果是需要使用ANY /SOME/ALL 来修饰
operand comparison_operator ANY (subquery)
operand comparison_operator SOME (subquery)
operand comparison_operator ALL (subquery)
运算符/关键词 ANY
SOME
ALL
>/>= 最小值
最小值
最大值
</<= 最大值
最大值
最小值
=
任意值
任意值
 
<>/!=
 
 
任意值

由[NOT] IN 的子查询

语法结构:
operand comparison_operator [NOT] IN (subquery) =ANY 运算符与IN等效。
!=ALL或<>ALL运算符与NOT IN等效。
使用[NOT] EXISTS 的子查询
如果子查询返回任何行,EXISTS将返回TRUE;否则将返回FALSE。
5-2 使用INSERT....SELECT将查询结果写入数据表
语法结构:
 INSERT [INTO] tbl_name [(col_name,...)] SELECT ...
#->INSERT tbl_goods_cates(cate_name)                                 #插入商品品牌名
->SELECT goods_cate FROM  tdb_goods GROUP BY goods_cate;      #从商品表中查找品牌名
5-3 多表更新
语法结构:
UPDATE table_references SET col_name1 = {expr1 | DEFAULT} [,col_name2 = {expr2 | DEFAULT}]... [WHERE where_condition]
#->UPDATE tdb_goods INNER JOIN tbd_goods_cates       #使用内连接更新
->ON goods_cate = cate_name                                                #条件为 表1字段=表2字段
-> SET goods_cate = cate_id;                                                    #设置表1字段 名称= 表2 字段ID
 
5-4 多表更新一步到位
创建数据表同时将查询结果写入到数据表
语法结构:
CREATE TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] select_statement
#->CREATE TABLE tdb_goods_brands                                                          #创建商品类型表
->(
->brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,                        #创建类型表ID字段
->brand_name VACHAR(40) NOT NULL                                                                       #创建类型名字段, 长度40 ,非空
->)
->SELECT brand_name FROM tdb_goods GROUP BY brand_name;                            #从商品表中查找类型
5-5 连接
表的参照关系:
table_references                                                                               #表1
{[INNER | CROSS] JOIN | {LEFE | RIGHT} [OUTER] JOIN}                  #连接类型
table_references                                                                              #表2          
ON conditional_expr                                                                       #连接条件
连接类型
INNER JOIN ,内连接                                          # 在MySQL中,JOIN,CROSS JOIN 和INNER JOIN是等价的,A∩B
LEFT [OUTER] JOIN,左外连接                               # AU(A∩B)
RIGHT [OUTER] JOIN , 右外连接                          #(A∩B)UB

多表连接

#->SELECT goods_id,goods_name,cate_name,brand_name,goods_price  FROM tdb_goods AS g   #使用别名,查找
->INNER JOIN tdb_goods_cates AS c ON g.cate_id = c.cate_ID                                                                   #条件1
->INNER JOIN tdb_goods_brands AS b ON g.brand_id = b.brand_id;                                                         #条件2
无限分类表的设计(通过自身连接实现 存在三个字段  ID,name,父类ID)
#->SELECT s.type_id,s.type_name,p.type_name                                          #查询
->FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS p                              #左外连接 FROM子查询中必须使用别名
->ON s.parent_id = p.type_id;                                                                                       #连接条件
多表删除
语法结构:DELETE tbl_name[.*] [,tbl_name[.*]] ... FROM table_references [WHERE where_condition]
#->DELETE t1 FROM tdb_goods AS t1            #删除表t1表
->LEFT JOIN                                                           #使用左外连接
-> (SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name  HAVING count(goods_name) >= 2) AS t2                                                            #子查询 商品名称类型数量大于2
->ON t1.goods_name= t2.goods_name               #连接条件
->WHERE t1.goods_id > t2.goods_id;                  #删除条件为id更大的

菜鸟的MySQL学习笔记(三)的更多相关文章

  1. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  2. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  3. 菜鸟的MySQL学习笔记(一)

    本学习笔记是照搬慕课网<与MySQL的零距离接触>内容,特此感谢! 1-1 mysql的安装与配置 Windows环境下的MSI安装: 1.安装: 双击MSI文件->用户协议-> ...

  4. mysql学习笔记三 —— 数据恢复与备份

    要点: 1.存储引擎2.导入导出3.备份与恢复 查看当前数据库中的所有表use db1:show tables: 1.存储引擎 不同的发动机(引擎)适用的汽车类型不一样. 存储和处理的不同方式.不同的 ...

  5. MySQL学习笔记三:库和表的管理

    1.MySQL数据库服务配置好后,系统会有4个默认的数据库. information_schema:虚拟对象,其对象都保存在内存中 performance_schema:服务器性能指标库 mysql: ...

  6. mysql基本数据类型(mysql学习笔记三)

    Mysql数据类型 小数: 浮点:小数位可以变化 Float单精度默认精度6位左右 Double 双精度默认精度16位左右 支持,控制数值范围 Type(M,D) M表示所有数值位数(不包括小数点和符 ...

  7. 菜鸟的MySQL学习笔记(五)

    7.自定义函数 用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同.包含了两个必要条件,参数与返回值.没有必然内在联系. 函数可以返 ...

  8. 菜鸟的MySQL学习笔记(四)

    MySQL中的运算符和函数: 1.字符函数: 2.数值运算符与函数: 3.比较运算符与函数: 4.日期时间函数: 5.信息函数: 6.聚合函数: 7.加密函数等:   6-1.字符函数: CONCAT ...

  9. 菜鸟的MySQL学习笔记(二)

    3-1约束: 1.约束保证数据的完整性和一致性: 2.约束分表级约束(两个或两个个以上字段的约束)和列级约束(一个字段约束): 3.NOT NULL       非空: PRIMARY KEY     ...

随机推荐

  1. [置顶] 自己写sqlhelper类

    自己写sqlhelper类 using System; using System.Collections.Generic; using System.Configuration; using Syst ...

  2. mongodb基础系列——数据库查询数据返回前台JSP(一)

    经过一段时间停顿,终于提笔来重新整理mongodb基础系列博客了. 同时也很抱歉,由于各种原因,没有及时整理出,今天做了一个demo,来演示,mongodb数据库查询的数据在JSP显示问题. 做了一个 ...

  3. JBOSS实现RMI时注意的问题

    使用JBOSS部署EJB服务后通过RMI访问报错: javax.naming.CommunicationException: Could not obtain connection to any of ...

  4. Mysql常见问题及优化

    本文将就以下三个问题进行展开: 1.库表设计 2.慢 SQL 问题 3.误操作.程序 bug 时怎么办 一.库表设计 1.1 引擎选择 在 mysql 5.1 中,引入了新的插件式存储引擎体系结构,允 ...

  5. Js/Jquery- Base64和UrlEncode编码解码

    最近几天遇到一些URL参数明文显示的问题,因为是明文显示,容易让人通过改变参数查看到他没有权限看到内容. 一开始我的做法是自定义了规则,然后原始的那种URL编码.可是URL编译后效果不理想,他无法编译 ...

  6. 分布式存储Ceph的几种安装方法,源码,apt-get,deploy工具,Ubuntu CentOS

    最近搞了下分布式PB级别的存储CEPH  尝试了几种不同的安装,使用 期间遇到很多问题,和大家一起分享. 一.源码安装 说明:源码安装可以了解到系统各个组件, 但是安装过程也是很费劲的,主要是依赖包太 ...

  7. Maven管理项目架包

    最近一直在用Maven管理项目的架包,从而发现了几个不错的官方或者非官方的网站. http://mvnrepository.com/artifact/com.ning  这个是我刚刚用来找HTTP开发 ...

  8. JavaWeb文件的上传与下载(1)

    经常用到的上传: 头像上传,资料分享等 文件上传的步骤 1.指定表单类型为文件上传表单 enctype="multipart/form-data" 2.表单提交方式必须为:post ...

  9. ubuntu13.04 Thinkpad W520安装nvidia显卡驱动

    Ubuntu13.04 amd64 Thinkpad W520安装Nvidia显卡驱动 曾经在ubuntu11.10上成功安装Nvidia显卡驱动.但是自从机器(Thinkpad W520)更新到13 ...

  10. SecureCRT学习之道:SecureCRT经常使用快捷键设置与字体设置方法

    1:假设不想每次登陆都输入password,能够在你打开的session里邮件session option->login action 选中automate logon 双击ogin 和assw ...