MySQL学习之SQL基础(一)DML
DML(data Manipulation language)
INSERT DELETE UPDATE SELECT
INSERT
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| ename | varchar(25) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
INSERT INTO emp (ename,hiredate,sal ,deptno) VALUES ('zzx','2000-01-01',100,1);
INSERT INTO emp VALUES('lisa','2003-02-01',400,2);
一次性插入多条记录
INSERT INTO emp VALUES('jack','2018-09-21',12000,1),
('tony','2018-09-21',13000,4)
;
UPDATE
- 更新一张表
UPDATE emp set sal=11000 where ename='lisa';
- 多表更新
首先创建一张表部门表
CREATE TABLE dept(
deptno int (3) ,
deptname varchar(25)
);
mysql> desc dept;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| deptno | int(3) | YES | | NULL | |
| deptname | varchar(25) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
INSERT dept VALUES(1,'tech');
INSERT INTO dept VALUES (2,'sale'),(3,'fin');
mysql> select * from emp;
+-------+------------+----------+--------+
| ename | hiredate | sal | deptno |
+-------+------------+----------+--------+
| zzx | 2000-01-01 | 100.00 | 1 |
| lisa | 2003-02-01 | 11000.00 | 2 |
| jack | 2018-09-21 | 12000.00 | 1 |
| tony | 2018-09-21 | 13000.00 | 4 |
+-------+------------+----------+--------+
4 rows in set (0.00 sec)
多表更新
UPDATE emp a ,dept b SET a.sal =a.sal * b.deptno WHERE a.deptno=b.deptno;
mysql> SELECT * FROM emp;
+-------+------------+----------+--------+
| ename | hiredate | sal | deptno |
+-------+------------+----------+--------+
| zzx | 2000-01-01 | 100.00 | 1 |
| lisa | 2003-02-01 | 22000.00 | 2 |
| jack | 2018-09-21 | 12000.00 | 1 |
| tony | 2018-09-21 | 13000.00 | 4 |
+-------+------------+----------+--------+
4 rows in set (0.00 sec)
查询表
- 查询去重,DISTINCT只能显示一列
mysql> SELECT DISTINCT deptno FROM emp;
+--------+
| deptno |
+--------+
| 1 |
| 2 |
| 4 |
+--------+
3 rows in set (0.00 sec)
- 条件查询
mysql> SELECT * FROM emp;
+-------+------------+----------+--------+
| ename | hiredate | sal | deptno |
+-------+------------+----------+--------+
| zzx | 2000-01-01 | 100.00 | 1 |
| lisa | 2003-02-01 | 22000.00 | 2 |
| jack | 2018-09-21 | 12000.00 | 1 |
| tony | 2018-09-21 | 13000.00 | 4 |
+-------+------------+----------+--------+
mysql> SELECT ename,sal FROM emp WHERE deptno<=1 AND sal > 5000;
+-------+----------+
| ename | sal |
+-------+----------+
| jack | 12000.00 |
+-------+----------+
1 row in set (0.00 sec)
3、排序查询
查询emp排序后第二条之后的三条记录
mysql> SELECT * FROM emp;
+-------+------------+----------+--------+
| ename | hiredate | sal | deptno |
+-------+------------+----------+--------+
| zzx | 2000-01-01 | 100.00 | 1 |
| lisa | 2003-02-01 | 22000.00 | 2 |
| jack | 2018-09-21 | 12000.00 | 1 |
| tony | 2018-09-21 | 13000.00 | 4 |
+-------+------------+----------+--------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM emp order by sal LIMIT 1,3;
+-------+------------+----------+--------+
| ename | hiredate | sal | deptno |
+-------+------------+----------+--------+
| jack | 2018-09-21 | 12000.00 | 1 |
| tony | 2018-09-21 | 13000.00 | 4 |
| lisa | 2003-02-01 | 22000.00 | 2 |
+-------+------------+----------+--------+
3 rows in set (0.00 sec)
- 聚合
统计emp总人数
mysql> SELECT COUNT(1) FROM emp;
+----------+
| COUNT(1) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)
统计各个部门的总人数
mysql> SELECT deptno FROM emp GROUP BY deptno;
+--------+
| deptno |
+--------+
| 1 |
| 2 |
| 4 |
+--------+
3 rows in set (0.00 sec)
mysql> SELECT deptno,COUNT(1) FROM emp GROUP BY deptno;
+--------+----------+
| deptno | COUNT(1) |
+--------+----------+
| 1 | 2 |
| 2 | 1 |
| 4 | 1 |
+--------+----------+
3 rows in set (0.00 sec)
统计各个部门的总人数也要统计总人数
with rollup进行再次汇总
SELECT deptno,COUNT(1) FROM emp GROUP BY deptno WITH rollup;
统计各个部门的总人数大于等于2
使用having进行条件过滤
mysql> SELECT deptno,COUNT(1) FROM emp GROUP BY deptno HAVING COUNT(1)>=2;
+--------+----------+
| deptno | COUNT(1) |
+--------+----------+
| 1 | 2 |
+--------+----------+
1 row in set (0.00 sec)
- 子查询
查询emp表中部门编号在dept表的员工
| ename | hiredate | sal | deptno |
+-------+------------+----------+--------+
| zzx | 2000-01-01 | 100.00 | 1 |
| lisa | 2003-02-01 | 22000.00 | 2 |
| jack | 2018-09-21 | 12000.00 | 1 |
| tony | 2018-09-21 | 13000.00 | 4 |
+-------+------------+----------+--------+
4 rows in set (0.01 sec)
mysql> SELECT * FROM emp order by sal LIMIT 1,3;^C
mysql> SELECT * FROM dept;
+--------+----------+
| deptno | deptname |
+--------+----------+
| 1 | tech |
| 2 | sale |
| 3 | fin |
+--------+----------+
3 rows in set (0.00 sec)
mysql> SELECT ename ,sal from emp where deptno in (select deptno from dept);
+-------+----------+
| ename | sal |
+-------+----------+
| zzx | 100.00 |
| lisa | 22000.00 |
| jack | 12000.00 |
+-------+----------+
3 rows in set (0.00 sec)
- 联合
将查询结果合并显示
- 查询所有的的deptno,去重
SELECT deptno FROM emp UNION
SELECT deptno FROM dept;
- 查询所有的的deptno,不去重
SELECT deptno FROM emp UNION all
SELECT deptno FROM dept;
MySQL学习之SQL基础(一)DML的更多相关文章
- MySQL学习之SQL基础(一)DDL
Sql基础 DDL (data defination language) 创建表 CREATE TABLE emp( ename varchar(10), hiredate date, sal dec ...
- python之MySQL学习——防止SQL注入
python之MySQL学习——防止SQL注入 学习了:https://www.cnblogs.com/xiaomingzaixian/p/7126840.html https://www.cnblo ...
- mysql学习笔记之基础篇
数据库学习之基础篇 ① 开放数据库互连(Open Database Connectivity,ODBC ② 结构化查询语言(Structured Query Language) ③ 进入mysql:M ...
- MySql 学习之路-基础
Mysql 自学之路 本文包含基础部分与高级部分 一.基础 数据库操作 Show databases:显示所有的数据库 Show tables: 显示所有的数据库表 Use databasename: ...
- 《深入浅出MySQL》之SQL基础
SQL是Structure Query language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言.在众多开源数据中,MySQL正式其中最杰出的代表,MySQL是由三个瑞典人于20世纪 ...
- MySQL 学习四 SQL优化
MySQL逻辑架构: 第一层:客户端层,连接处理,授权认证,安全等功能. 第二层:核心层,查询解析,分析,优化,缓存,内置函数(时间,数学,加密),存储过程,触发器,视图 第三层:存储引擎.负 ...
- mysql学习之 sql语句的技巧及优化
一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...
- MYSQL学习笔记——sql语句优化工具
优化sql:思路: 使用explan->先查询type类型看看是all还是ref,然后判断 possible_keys (显示可能应用在这张表中的索引, 一个或多个.查询涉及到的字段是若存在索引 ...
- Mysql 学习之 SQL的执行顺序
mysql的json查询: 1.一条普通的SQL SELEC ...
随机推荐
- RPC远程服务调用
RPC远程服务调用: RPC 的全称是 Remote Procedure Call 是一种进程间通信方式. 它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编 ...
- 浅谈Java三大特性之继承
前言 简单用伪代码去介绍一些 父类与子类的构造函数问题 others 前言 类的继承性是面向对象语言的基本特性,多态性前提是继承性.Java 支持继承性和多态性.——Java从小白到大牛 继承:三大特 ...
- html js中的引号
content = "<a class='btn' href='javascript:void(0)' onclick='change('orders/orderTail.do?ode ...
- php 基础 PHP保留两位小数的几种方法
$num = 10.4567; //第一种:利用round()对浮点数进行四舍五入 echo round($num,2); //10.46 //第二种:利用sprintf格式化字符串 $format_ ...
- 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 ...
- Django中的prefetch_related()函数优化
对于多对多字段(ManyToManyField)和一对多字段, 可以使用prefetch_related()来进行优化 prefetch_related()和select_related()的设计目的 ...
- VS Code 入门
将VSCode设置成中文语言环境 快捷键[Ctrl+Shift+P]—输入[Configure Display Language]—将“en”改为“zh-CN”—打开extention输入[Chine ...
- [转载]android 显示多选列表对话框setMultiChoiceItems
public class MultiChoiceItemsTest extends Activity implements OnClickListener { private String[] pro ...
- PHP+Mysql实现网站顶和踩投票功能实例
PHP+Mysql实现网站顶和踩投票功能实例,通过记录用户IP,判断用户的投票行为是否有效,该实例也可以扩展到投票系统中. 首先我们在页面上放置“顶”和“踩”的按钮,即#dig_up和#dig_dow ...
- 无线冲方案 WPC Qi v1.2.4 update
参考: 1. Qi标准v1.2.4最新版 2. Qi Baseline Power Profile (BPP) and Extended Power Profile (EPP) Wireless Ch ...