-- 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 -- 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