-- UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 (修改表中数据)
-- UPDATE 表名称 SET 列名称1 = 新值1,列名称2 = 新值2 WHERE 列名称 = 某值 (修改表中数据)
-- SELECT * from dept(查询dept表)
UPDATE dept SET loc='shenyang' WHERE deptno=80
UPDATE dept SET deptno=88 WHERE deptno=60
-- 基本查询select语句
SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。
SELECT 列名称 FROM 表名称
SELECT * from emp
SELECT ename,job,mgr,sal from emp
SELECT *FROM emp
-- 查询员工的编号、员工姓名、年薪(sal表示月薪)
SELECT empno,ename,sal*12 from emp
-- 可以将列起一个别名 AS
SELECT empno AS 员工的编号,ename AS 员工的姓名,sal*12 AS 年薪 from emp
-- SELECT empno ,ename ,sal*12 AS(AS可省略) income from emp
SELECT empno ,ename ,sal*12 AS income from emp
SELECT d.deptno,d.dname from dept d
-- 查询员工的编号、姓名、月收入(月薪+奖金)
-- 注意:当数据运算中有空值的时候,最后的结果都为NULL
-- 在mysql系统中会提供一个函数 ifnull(exp1(空值的列),exp2(更改的值)) 将exp1包含的空值替换为exp2的值
-- 在Oracel中可以使用NVL(exp1,exp2)
SELECT * from emp
-- 注意:当数据运算中有空值的时候,最后的结果都为NULL(comm有的为空)
SELECT empno,ename,sal+comm from emp
SELECT empno,ename,sal+IFNULL(comm,0) income from emp
-- 去掉重复的数据(记录)
-- 语法:SELECT DISTINCT 列名称 FROM 表名称
select*from emp
select DISTINCT deptno from emp
-- 条件查询的语法:
-- select...from...where 查询的条件
-- ELECT 列名称 FROM 表名称 WHERE 列 运算符 值
-- 运算符: = <>/!=(不等于) > < >= <=
SELECT *from emp WHERE empno(列名)!=1001
SELECT *from emp WHERE sal>=1001
-- 注意:在mysql中 ename='TOM'不计大小写 如果在oracle数据库中严格区分大小写的
-- BINARY 数据严格区分大小写
SELECT *from emp WHERE ename!='TOM'
SELECT *from emp WHERE job!='zz'
-- BINARY 数据严格区分大小写
SELECT *from emp WHERE BINARY ename='TOM'
-- 日期类型的比较
-- hireadate=NOW() 入职日期是今天
-- hireadate!=NOW() 入职日期是不是今天
-- hireadate<NOW() 入职日期是在今天之前
-- hireadate>=NOW() 入职日期是在今天之后,包含今天
select *from emp WHERE hiredate!='1994-07-05'
select *from emp WHERE hiredate='1994-07-05'
select *from emp WHERE hiredate>='1994-07-05'
-- 逻辑关系运算符
-- AND(与) 和 OR(或) 可在 WHERE 子语句中把两个或多个条件结合起来。
-- AND的运算规则: 只有在X和Y同时为真的时候,最近的结果才为真
-- OR的运算规则: 只有要一个为值,最终的结果为真
-- !(非):取反 x=true !=false
-- X AND Y 结果
-- true true true x=10 y 10 (x>0) and (y>0)
-- true false false
-- false false false
-- false false false
-- X OR Y 结果
-- true true true
-- true false true x=10 y 10 (x>0) and (y<0)
-- false true true
-- false false false
-- 查询在10号部门工作,并且月薪不低于2500的员工信息
-- 分析:1.要查询那些信息(列)
-- 2.查询条件 WHERE(查询)
select * FROM emp WHERE deptno=10 AND sal>=2500
-- 查询在10号部门工作,并且月薪且职位为程序员不低于2500的员工信息
SELECT * FROM emp where job = 'PROGRAMER'AND deptno = 10 AND sal >= 2500
-- 查询在10号部门工作或20号部门工作的员工信息
select * from emp where deptno=10 or 20
-- AND和OR的优先级 AND>OR
SELECT *from emp where (deptno=30 or sal<2500) and deptno=10
-- 特殊的比较运算符
-- BETWEEN 操作符在 where 子句中使用 ,作用是选取介于两个值之间的数据范围
X BETWEEN A AND B
-- 表示 x 在【A,B】相当于X>=A AND X<=B
-- 查询月薪在[2000,2500]区间的员工的信息
select*from emp where sal between 2000 and 2500
-- 查询在20号部门入职日期在1994年的员工的信息
select*from emp where hiredate between '1994-01-01' and '1994-12-31' and deptno=20
-- 模糊查询Like
-- SQL 通配符 %替代一个或多个字符 _仅代替一个字符
-- 语法:
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern
-- 查询结果没有符合条件的数据 ename like 'A' 相当于 ename ='A'
select* from emp where ename LIKE 'A'
-- ename中包含有A字母
select* from emp where ename LIKE '%A%'
select* from emp where ename LIKE '_om%' _代表一个字符
select* from emp where ename LIKE '__ex' __2 个下划线带表2个字符
-- IN 操作符
-- IN 操作符允许我们在 where子句中规定多个值
-- 语法:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)
-- 查询在10号本门或20号部门工作,并且职位是CLERK的员工的信息
-- 查询在10号本门或20号部门工作,并且职位是CLERK的员工的信息
select *from emp where deptno in(10,20) and job='CLERK'
select*from emp where ename in('TOM','JACK') and job='CLERK'
-- 专门对空值null进行筛选
-- 查询所有的奖金(comm)是null的员工信息 (空值)
select * from emp where comm is NULL
-- 特殊运算符 not(取反)
-- 查询所有的奖金(comm)不是null的员工信息
select * from emp where comm is not NULL
-- 查询月薪不在[2000,2500]区间的员工的信息
select*from emp where sal NOT between 2000 and 2500
-- ename中不包含有A字母
select* from emp where ename not LIKE '%A%'
-- 查询在10号本门或20号部门工作,并且职位不是CLERK的员工的信息
select *from emp where deptno not in(10,20) and job='CLERK'
-- ORDER BY 语句
-- ORDER BY 语句用于根据指定的列对结果集进行排序
-- 排序的规则
-- 1.升序(由小到大) ASC
-- 数值 0 1 2 3.......
-- 文本 A B C D.......
-- 时间 1972-01-01......1978-05-22
-- 2.降序(由大到小) DESC
-- 语法的规则: SELECT ....FROM....WHERE....ORDER BY
-- 查询所有的信息,按照月薪(asl)升序排序
SELECT *FROM emp ORDER BY sal DESC
-- 也可以按照多个列来排序
-- ORDER BY 列1 排序方式, 列2, 排序方式 ......列N 排序方式
-- 在列1排序的基础上,进行对列2的排序
-- 查询所有的员工信息,按照部门的编号来升序排序,按照月薪来降序排序
select * from emp order by deptno asc,sal desc
-- 查询20号部门员工的姓名、月薪、奖金、月收入(月薪+奖金),按照月收入进行降序排序
select ename,sal,comm,sal+IFNULL(comm,0) income from emp where deptno =20 order by income DESC
-- SQL语句的编写顺序 SELECT....FROM.....WHERE.....ORDER BY
-- SQL语句的执行顺序 from....where....select...order by
SELECT * from emp ;
SELECT * from dept;
select e.empno,e.name,d.dname from emp e,dept d