DML(data Manipulation language)

INSERT DELETE UPDATE SELECT

INSERT

  1. mysql> desc emp;
  2. +----------+---------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------+---------------+------+-----+---------+-------+
  5. | ename | varchar(25) | YES | | NULL | |
  6. | hiredate | date | YES | | NULL | |
  7. | sal | decimal(10,2) | YES | | NULL | |
  8. | deptno | int(2) | YES | | NULL | |
  9. +----------+---------------+------+-----+---------+-------+
  10. 4 rows in set (0.00 sec)
  11. mysql>
  1. INSERT INTO emp (ename,hiredate,sal ,deptno) VALUES ('zzx','2000-01-01',100,1);

  1. INSERT INTO emp VALUES('lisa','2003-02-01',400,2);

一次性插入多条记录

  1. INSERT INTO emp VALUES('jack','2018-09-21',12000,1),
  2. ('tony','2018-09-21',13000,4)
  3. ;

UPDATE

  1. 更新一张表
  1. UPDATE emp set sal=11000 where ename='lisa';
  1. 多表更新

首先创建一张表部门表

  1. CREATE TABLE dept(
  2. deptno int (3) ,
  3. deptname varchar(25)
  4. );
  1. mysql> desc dept;
  2. +----------+-------------+------+-----+---------+-------+
  3. | Field | Type | Null | Key | Default | Extra |
  4. +----------+-------------+------+-----+---------+-------+
  5. | deptno | int(3) | YES | | NULL | |
  6. | deptname | varchar(25) | YES | | NULL | |
  7. +----------+-------------+------+-----+---------+-------+
  8. 2 rows in set (0.00 sec)
  9. INSERT dept VALUES(1,'tech');
  10. INSERT INTO dept VALUES (2,'sale'),(3,'fin');
  1. mysql> select * from emp;
  2. +-------+------------+----------+--------+
  3. | ename | hiredate | sal | deptno |
  4. +-------+------------+----------+--------+
  5. | zzx | 2000-01-01 | 100.00 | 1 |
  6. | lisa | 2003-02-01 | 11000.00 | 2 |
  7. | jack | 2018-09-21 | 12000.00 | 1 |
  8. | tony | 2018-09-21 | 13000.00 | 4 |
  9. +-------+------------+----------+--------+
  10. 4 rows in set (0.00 sec)

多表更新

  1. UPDATE emp a ,dept b SET a.sal =a.sal * b.deptno WHERE a.deptno=b.deptno;
  2. mysql> SELECT * FROM emp;
  3. +-------+------------+----------+--------+
  4. | ename | hiredate | sal | deptno |
  5. +-------+------------+----------+--------+
  6. | zzx | 2000-01-01 | 100.00 | 1 |
  7. | lisa | 2003-02-01 | 22000.00 | 2 |
  8. | jack | 2018-09-21 | 12000.00 | 1 |
  9. | tony | 2018-09-21 | 13000.00 | 4 |
  10. +-------+------------+----------+--------+
  11. 4 rows in set (0.00 sec)

查询表

  1. 查询去重,DISTINCT只能显示一列
  1. mysql> SELECT DISTINCT deptno FROM emp;
  2. +--------+
  3. | deptno |
  4. +--------+
  5. | 1 |
  6. | 2 |
  7. | 4 |
  8. +--------+
  9. 3 rows in set (0.00 sec)
  1. 条件查询
  1. mysql> SELECT * FROM emp;
  2. +-------+------------+----------+--------+
  3. | ename | hiredate | sal | deptno |
  4. +-------+------------+----------+--------+
  5. | zzx | 2000-01-01 | 100.00 | 1 |
  6. | lisa | 2003-02-01 | 22000.00 | 2 |
  7. | jack | 2018-09-21 | 12000.00 | 1 |
  8. | tony | 2018-09-21 | 13000.00 | 4 |
  9. +-------+------------+----------+--------+
  10. mysql> SELECT ename,sal FROM emp WHERE deptno<=1 AND sal > 5000;
  11. +-------+----------+
  12. | ename | sal |
  13. +-------+----------+
  14. | jack | 12000.00 |
  15. +-------+----------+
  16. 1 row in set (0.00 sec)

3、排序查询

查询emp排序后第二条之后的三条记录

  1. mysql> SELECT * FROM emp;
  2. +-------+------------+----------+--------+
  3. | ename | hiredate | sal | deptno |
  4. +-------+------------+----------+--------+
  5. | zzx | 2000-01-01 | 100.00 | 1 |
  6. | lisa | 2003-02-01 | 22000.00 | 2 |
  7. | jack | 2018-09-21 | 12000.00 | 1 |
  8. | tony | 2018-09-21 | 13000.00 | 4 |
  9. +-------+------------+----------+--------+
  10. 4 rows in set (0.00 sec)
  11. mysql> SELECT * FROM emp order by sal LIMIT 1,3;
  12. +-------+------------+----------+--------+
  13. | ename | hiredate | sal | deptno |
  14. +-------+------------+----------+--------+
  15. | jack | 2018-09-21 | 12000.00 | 1 |
  16. | tony | 2018-09-21 | 13000.00 | 4 |
  17. | lisa | 2003-02-01 | 22000.00 | 2 |
  18. +-------+------------+----------+--------+
  19. 3 rows in set (0.00 sec)
  1. 聚合

    统计emp总人数
  1. mysql> SELECT COUNT(1) FROM emp;
  2. +----------+
  3. | COUNT(1) |
  4. +----------+
  5. | 4 |
  6. +----------+
  7. 1 row in set (0.00 sec)

统计各个部门的总人数

  1. mysql> SELECT deptno FROM emp GROUP BY deptno;
  2. +--------+
  3. | deptno |
  4. +--------+
  5. | 1 |
  6. | 2 |
  7. | 4 |
  8. +--------+
  9. 3 rows in set (0.00 sec)
  10. mysql> SELECT deptno,COUNT(1) FROM emp GROUP BY deptno;
  11. +--------+----------+
  12. | deptno | COUNT(1) |
  13. +--------+----------+
  14. | 1 | 2 |
  15. | 2 | 1 |
  16. | 4 | 1 |
  17. +--------+----------+
  18. 3 rows in set (0.00 sec)

统计各个部门的总人数也要统计总人数

with rollup进行再次汇总

  1. SELECT deptno,COUNT(1) FROM emp GROUP BY deptno WITH rollup;

统计各个部门的总人数大于等于2

使用having进行条件过滤

  1. mysql> SELECT deptno,COUNT(1) FROM emp GROUP BY deptno HAVING COUNT(1)>=2;
  2. +--------+----------+
  3. | deptno | COUNT(1) |
  4. +--------+----------+
  5. | 1 | 2 |
  6. +--------+----------+
  7. 1 row in set (0.00 sec)
  1. 子查询

查询emp表中部门编号在dept表的员工

  1. | ename | hiredate | sal | deptno |
  2. +-------+------------+----------+--------+
  3. | zzx | 2000-01-01 | 100.00 | 1 |
  4. | lisa | 2003-02-01 | 22000.00 | 2 |
  5. | jack | 2018-09-21 | 12000.00 | 1 |
  6. | tony | 2018-09-21 | 13000.00 | 4 |
  7. +-------+------------+----------+--------+
  8. 4 rows in set (0.01 sec)
  9. mysql> SELECT * FROM emp order by sal LIMIT 1,3;^C
  10. mysql> SELECT * FROM dept;
  11. +--------+----------+
  12. | deptno | deptname |
  13. +--------+----------+
  14. | 1 | tech |
  15. | 2 | sale |
  16. | 3 | fin |
  17. +--------+----------+
  18. 3 rows in set (0.00 sec)
  19. mysql> SELECT ename ,sal from emp where deptno in (select deptno from dept);
  20. +-------+----------+
  21. | ename | sal |
  22. +-------+----------+
  23. | zzx | 100.00 |
  24. | lisa | 22000.00 |
  25. | jack | 12000.00 |
  26. +-------+----------+
  27. 3 rows in set (0.00 sec)
  1. 联合

    将查询结果合并显示
  • 查询所有的的deptno,去重
  1. SELECT deptno FROM emp UNION
  2. SELECT deptno FROM dept;
  • 查询所有的的deptno,不去重
  1. SELECT deptno FROM emp UNION all
  2. SELECT deptno FROM dept;

MySQL学习之SQL基础(一)DML的更多相关文章

  1. MySQL学习之SQL基础(一)DDL

    Sql基础 DDL (data defination language) 创建表 CREATE TABLE emp( ename varchar(10), hiredate date, sal dec ...

  2. python之MySQL学习——防止SQL注入

    python之MySQL学习——防止SQL注入 学习了:https://www.cnblogs.com/xiaomingzaixian/p/7126840.html https://www.cnblo ...

  3. mysql学习笔记之基础篇

    数据库学习之基础篇 ① 开放数据库互连(Open Database Connectivity,ODBC ② 结构化查询语言(Structured Query Language) ③ 进入mysql:M ...

  4. MySql 学习之路-基础

    Mysql 自学之路 本文包含基础部分与高级部分 一.基础 数据库操作 Show databases:显示所有的数据库 Show tables: 显示所有的数据库表 Use databasename: ...

  5. 《深入浅出MySQL》之SQL基础

    SQL是Structure Query language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言.在众多开源数据中,MySQL正式其中最杰出的代表,MySQL是由三个瑞典人于20世纪 ...

  6. MySQL 学习四 SQL优化

    MySQL逻辑架构: 第一层:客户端层,连接处理,授权认证,安全等功能.   第二层:核心层,查询解析,分析,优化,缓存,内置函数(时间,数学,加密),存储过程,触发器,视图   第三层:存储引擎.负 ...

  7. mysql学习之 sql语句的技巧及优化

    一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...

  8. MYSQL学习笔记——sql语句优化工具

    优化sql:思路: 使用explan->先查询type类型看看是all还是ref,然后判断 possible_keys (显示可能应用在这张表中的索引, 一个或多个.查询涉及到的字段是若存在索引 ...

  9. Mysql 学习之 SQL的执行顺序

    mysql的json查询:                                                                       1.一条普通的SQL SELEC ...

随机推荐

  1. RPC远程服务调用

    RPC远程服务调用: RPC 的全称是 Remote Procedure Call 是一种进程间通信方式. 它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编 ...

  2. 浅谈Java三大特性之继承

    前言 简单用伪代码去介绍一些 父类与子类的构造函数问题 others 前言 类的继承性是面向对象语言的基本特性,多态性前提是继承性.Java 支持继承性和多态性.——Java从小白到大牛 继承:三大特 ...

  3. html js中的引号

    content = "<a class='btn' href='javascript:void(0)' onclick='change('orders/orderTail.do?ode ...

  4. php 基础 PHP保留两位小数的几种方法

    $num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 $format_ ...

  5. PTA的Python练习题(四)

    从 第3章-1 3-1.大于身高的平均值 开始 1. 引入列表的概念 a=list(map(int,input().split())) b=sum(a) c=len(a) d=b/c for i in ...

  6. Django中的prefetch_related()函数优化

    对于多对多字段(ManyToManyField)和一对多字段, 可以使用prefetch_related()来进行优化 prefetch_related()和select_related()的设计目的 ...

  7. VS Code 入门

    将VSCode设置成中文语言环境 快捷键[Ctrl+Shift+P]—输入[Configure Display Language]—将“en”改为“zh-CN”—打开extention输入[Chine ...

  8. [转载]android 显示多选列表对话框setMultiChoiceItems

    public class MultiChoiceItemsTest extends Activity implements OnClickListener { private String[] pro ...

  9. PHP+Mysql实现网站顶和踩投票功能实例

    PHP+Mysql实现网站顶和踩投票功能实例,通过记录用户IP,判断用户的投票行为是否有效,该实例也可以扩展到投票系统中. 首先我们在页面上放置“顶”和“踩”的按钮,即#dig_up和#dig_dow ...

  10. 无线冲方案 WPC Qi v1.2.4 update

    参考: 1. Qi标准v1.2.4最新版 2. Qi Baseline Power Profile (BPP) and Extended Power Profile (EPP) Wireless Ch ...