MySQL--基础SQL--DML
1.插入记录
INSERT INTO tablename
(fields1, fields2, ..., fieldsn)
VALUES
(value1, value2, ..., valuen)
例:
INSERT INTO emp
(emp, hiredate, sal, deptno)
VALUES
('zzxl', '2000-01-01', '2000', 1)
可以不指定字段名称,但是 values 后面的顺序还应该和字段的排列顺序一致
一次性插入多条记录
INSERT INTO tablename
(fields1, fields2, ..., fieldsn)
VALUES
(value11, value12, ..., value1n),
(value21, value22, ..., value2n),
...
(valuen1, valuen2, ..., valuenn)
例:
INSERT INTO emp
(emp, hiredate, sal, deptno)
VALUES
('zs', '2003-01-01', '2000', 2),
('ls', '2005-01-01', '2000', 3)
2.更新记录
UPDATE tablename
SET field1=value1,field2=value2,...,fieldn=valuen
[WHERE CONDITION]
例:
UPDATE emp
SET ename='wem'
WHERE ename='zzxl'
同时更新多个表中数据
UPDATE t1,t2,...,tn
SET t1.field1=expr1,...,tn.field2=exprn
[WHERE CONDITION]
例:
UPDATE emp a, dept b
SET a.sal=a.sal*b.deptno,b.deptname=a.ename
WHERE a.deptno=b.deptno
3.删除记录
DELETE FROM tablename
[WHERE CONDITION]
例:
DELECT FROM emp
WHERE ename='dony'
一次删除多个表的数据
DELETE t1,t2,...,tn
FROM t1,t2,...,tn
[WHERE CONDITION]
如果 FROM 后面的表名用别名,则 DELETE 后面也要用相应的别名,否则会提示语法错误。
例:
DELETE a, b
FROM emp a, dept b
WHERE a.deptno=b.deptno
AND a.deptno=3
4.查询记录
SELECT *
FROM tablename
[WHERE CONDITION]
例:
SELECT *
FROM emp
查询不重复的记录
SELECT DINTINCT field1,field2,...,field3
FROM tablename
[WHERE CONDITION]
例:
SELECT DISTINCT deptno
FROM emp
条件查询
WHERE 条件后面可以使用=, >, <, >=, <=, != 等比较运算符;多个条件之间还可以使用 OR, AND等逻辑运算符进行多条件联合查询
排序和限制
SELECT *
FROM tablename
[WHERE CONDITION]
[ORDER BY field1 [DESC|ASC],
field2 [DESC|ASC],
...
fieldn [DESC|ASC]]
DESC表示按照字段进行降序排列,ASC表示升序排列[默认排序].
例:
SELECT *
FROM emp
ORDER BY sal
部分显示
SELECT ...
[LIMIT offset_start, row_count]
offset_start表示起始偏移量,row_count表示行数。
默认情况下起始偏移量为0,只要写记录数就可以。
limit经常和order by一起配合使用来进行记录的分页显示。
聚合
很多情况下,用户需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人数。这时就要用到SQL的聚合操作。
SELECT [field1, field2, ..., fieldn] FUN_NAME
FROM table_name
[WHERE CONDITION]
[GROUP BY field1, field2, ..., fieldn
WITH ROLLUP]]
[HAVING where_condition]
FUN_NAME表示要做的聚合操作,也就是聚合函数,常用的有sum, count, max, min等。
GROUP BY表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门就应该写在GROUP BY 后面。
WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。
HAVING关键字表示对分类后的结果再进行条件过滤。
HAVING 和 WHERE 的区别在于,HAVING 是对聚合后的结果进行条件的过滤,而 WHERE 是在聚合前就对结果进行过滤,如果逻辑允许,我们尽可能先用
WHERE进行过滤,这样因为结果集减小,将对聚合的效率大大提高,最后在根据逻辑看是否用 HAVING 进行再过滤。
例:(统计各部门人数)
SELECGT deptno, count(*) total
FROM emp
GROUP BY deptno
例:(统计各部门人数,及总人数)
SELECT deptno, count(*) total
FROM emp
GROUP BY deptno
WITH ROLLUP
例:(统计人数大于1的部门)
SELECT deptno, count(*) total
FROM emp
GROUP BY deptno
HAVING total>1
例:(统计公司所有员工的薪水总额,最高和最低薪水)
SELECT SUM(sal), MAX(sal), min(sal)
FROM emp
表连接
当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。
从大类上分,表连接分为内连接和外连接,他们之间最主要的区别是,内连接仅选出两张表中互相匹配的记录,
而外连接会选出其他不匹配的记录。我们常用的是内连接。
例:
SELECT ename, deptname
FROM emp, dept
WHERE emp.deptno=dept.deptno
外连接又分为左连接和右连接。
左连接:包含所有的左边表中的记录甚至是右边表中没有和他匹配的记录。
右连接:包含所有的右边表中的记录甚至是左边表中没有和他匹配的记录。
SELECT ...
FROM ...
[LEFT|RIGHT] JOIN ... ON
...
例:
SELECT ename, deptname
FROM emp
LEFT JOIN dept ON
emp.deptno=dept.deptno
SELECT ename, deptname
FROM dept
RIGHT JOIN emp ON
emp.deptno=dept.deptno
子查询
某些情况下,当进行查询的时候,需要的条件是另外一个 SELECT 语句的结果,这个时候,就要用到子查询。
用于子查询的关键字主要包括 IN, NOT IN, =, !=, EXISTS, NOT EXISTS
例:
SELECT *
FROM emp
WHERE deptno
IN (
SELECT deptno
FROM dept)
如果子查询记录数唯一,还可以用 = 代替 IN
对于不唯一的查询记录可使用limit控制查询记录为唯一。(有需求的话)
某些情况下,子查询可以转化为表连接。
表连接在很多情况下用于优化子查询。
记录联合
我们经常碰到这样的应用,将两个表的数据按照一定的查询条件查询出来以后,将结果合并到一起显示出来。
这个时候就需要用到 UNION 和 UNION ALL 来实现这样的功能.
SELECT *
FROM t1
UNION|UNION ALL
SELECT *
FROM t2
...
UNION|UNION ALL
SELECT *
FROM tn
例:
SELECT deptno
FROM emp
UNION ALL
SELECT deptno
FROM dept
SELECT deptno
FROM emp
UNION
SELECT deptno
FROM dept
UNION 和 UNION ALL 的主要区别是 UNION ALL是把结果集直接合并在一起,而 UNION 是将 UNION ALL 后的结果进行一次 DISTINCT,去除重复记录后的结果。
使用的时候需要保持列数相同。
MySQL--基础SQL--DML的更多相关文章
- mysql 基础sql语法总结 (二)DML
二.DML(增.删.改) 1)插入数据 第一种写法:INSERT INTO 表名 (列名1,列名2,,......)VALUES(列值1,列值2,......) 第二种写法:INSERT INTO 表 ...
- mysql基础sql进阶
回顾前面的基础命令语句 修改数据表 添加字段: alter table 表名 add 字段名 列类型[not null|null][primary key][unique][auto_incremen ...
- mysql 基础sql语法总结(一)DDL
mysql数据库: SQL数据库语言可分为四部分: 1.DDL:对数据库或表的进行操作结构操作 2.DML:对表的记录进行更新(增.删.改)* 3.DQL:对表的内容进行查询 **(重难点) 4.DC ...
- MySQL基础之DML语句
DML 语句 DML(Data Manipulation Language)语句:数据操纵语句. 用途:用于添加.修改.删除和查询数据库记录,并检查数据完整性. 常用关键字:insert.update ...
- mysql 基础sql语句
1.mysqladmin语句: # 查看mysql版本 mysqladmin version # 更改root用户密码 mysqladmin -u root -p原密码 password '新密码 ...
- mysql基础SQL练习
许久收藏的练习mysql语句的,现在看来任然有学习价值! 表如下: Student(Sid,Sname,Sage,Ssex) 学生表 Course(Cid,Cname,Tid) 课程表 SC(Sid, ...
- MySQL基础SQL命令---增删改查
1.表操作: create table tableName (id int(6) not null primary key auto_increatment,name varchar(10) not ...
- MySQL 基础 SQL 操作
MySQL 用户 --登录 mysql -u<用户名> -p[密码] --修改密码 mysqladmin -u<用户名> -p[密码] password <new_pas ...
- MySQL基础整理(一)之SQL基础(未完成)
大家好,我是浅墨竹染,以下是MySQL基础整理(一)之SQL基础 1.SQL简介 SQL(Structure Query Language)是一种结构化查询语言,是使用关系模型的数据库应用语言. 2. ...
- mysql使用基础 sql语句(一)
csdn博文地址:mysql使用基础 sql语句(一) 点击进入 命令行输入mysql -u root -p,回车再输入密码,进入mysql. 终端命令以分号作为一条语句的结束,可分为多行输入,只需 ...
随机推荐
- POJ 3468 区间更新(求任意区间和)A Simple Problem with Integers
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 163977 ...
- Arch系linux配置Go开发环境
1. 下载go $ sudo pacman -S go 下载后系统会将go安装在/usr/lib/go目录下 2. 配置一些环境变量 一共需要三个环境变量,分别为: GOROOT -> go语言 ...
- 官网英文版学习——RabbitMQ学习笔记(七)Topic
在上一篇中使用直接交换器改进了我们的系统,使得它能够有选择的进行接收消息,但它仍然有局限性——它不能基于多个条件进行路由.本节我们就进行能够基于多个条件进行路由的topics exchange学习. ...
- MongoDB 副本集搭建
搭建mongodb副本集 [root@ mongodb]# cd /u02 [root@ u02]# mkdir -p mongodb/data_2777 [root@ u02]# mkdir -p ...
- cf 762C. Two strings
因为要删去1个串(读错题),所以就直接二分搞就好了. 需要预处理出2个分别从头到尾,或从尾到头需要多长a串的数组,然后二分删去多长就好了. #include<bits/stdc++.h> ...
- 十七、SAP中使用SQL语句读取一条数据
一.需要说明的是SAP不同类型的结构体类型之间是不能随意赋值的,如果需要赋值,可以使用CORRESPONDING FIELDS OF关键字, 不同类型结构体中同名的成员会被赋值,代码如下: 二.输出代 ...
- Assignment写作谨慎学术抄袭是关键
学术写作(Academic Writing)作为留学生涯的“必修课”,总是让闻者叹气,抓耳挠腮.初入课堂的留学生,更是缺乏写作经验不知从何下笔,只想仰天长啸“Essay真的好难啊!!”面对一个Essa ...
- ELK 安装Beat
章节 ELK 介绍 ELK 安装Elasticsearch ELK 安装Kibana ELK 安装Beat ELK 安装Logstash Beat是数据采集工具,安装在服务器上,将采集到的数据发送给E ...
- NumPy 矩阵库函数
章节 Numpy 介绍 Numpy 安装 NumPy ndarray NumPy 数据类型 NumPy 数组创建 NumPy 基于已有数据创建数组 NumPy 基于数值区间创建数组 NumPy 数组切 ...
- js面试之数组的几个不low操作
1.扁平化n维数组 1.终极篇 [1,[2,3]].flat(2) //[1, 2, 3] [1,[2,3,[4,5]]].flat(3) //[1, 2, 3, 4, 5] [1,[2,3,[4,5 ...