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 ...
随机推荐
- 关于数据库中的三值逻辑(Tree-Value-Logic)
在sql中,逻辑表达式(也叫做谓词),可以有三种值:True.False.Unknown,这就是所谓的三值逻辑,,是sql的特有属性. 在大多数编程语言中,逻辑表达式只有两个值,就是True和Fals ...
- Maven的安装与配置(eclipse,idea)
Maven的安装与配置 一.需要准备的东西 1. JDK 2. Maven程序包 3. Eclipse 4. Idea 二.下载与安装 1. 前往https://maven.apache.org/ ...
- CentOS7 安装 OpenCV 的一些问题解决办法
由于强迫症,实在受不了root权限的旧gcc才能使用boost而普通权限却是最新版gcc,经过一番折腾后,终于把配置全部弄好了,实际上就只需要把新版gcc的各个文件放到系统找到旧gcc的地方,并建立新 ...
- 「JSOI2014」电信网络
「JSOI2014」电信网络 传送门 一个点选了就必须选若干个点,最大化点权之和,显然最大权闭合子图问题. 一个点向它范围内所有点连边,直接跑最大权闭合子图即可. 参考代码: #include < ...
- 前端学习 之 CSS(一)
一:什么是 CSS? ·CSS 指层叠样式表 (Cascading Style Sheets) ·样式定义如何显示 HTML 元素 ·样式通常存储在样式表中 ·把样式添加到 HTML 4.0 中,是为 ...
- scrapy-redis分布式
scrapy是python界出名的一个爬虫框架,提取结构性数据而编写的应用框架,可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 虽然scrapy 能做的事情很多,但是要做到大规模的分 ...
- XPath简介
参考视频: https://www.bilibili.com/video/av49809274/?p=22 一,什么是XPATH? xpath(xml path language)是一门在xml和 ...
- 1-使用React的方式
认识 React React是一个用于构建用户界面的 JAVASCRIPT 库.(JQuery也是) React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图).mvvm Rea ...
- PCSearch需要管理员权限,开机自启
1.添加Windows服务,并设为自动启动: 2.通过服务启动AutoStartSevice.exe,通过AutoStartSevice.exe运行AutoStart.bat,通过AutoStart. ...
- Spring Cloud常用注解
@SpringBootApplication(exclude = {org.springframework.boot.autoconfigure.security.servlet.SecurityAu ...