mysql操作(未完)
AS别名(DML操作)
(1)可以给字段、表名取别名
(2)AS可以省略
(3)给字段取别名,如果别命中包含特殊符号,例如“空格”等,建议给别名加上双引号或单引号
(4)给表名取别名,不能加双引号或单引号,也不能有特殊符号
(5)建议别名简短,见名知意
UPDATE t_department AS d,t_employee AS e
SET d.manager_id =e.eid
WHERE d.dname = '教学部'
AND d.did = e.`dept_id`
AND e.ename = '孙红雷';
#查询员工姓名以及手机号码
SELECT ename AS '员工姓名',tel AS '手机号码'
FROM t_employee;
去重distinct(DML操作)
#查询员工表的部门编号
SELECT DISTINCT dept_id FROM t_employee;
#统计员工表中员工有几个部门
SELECT COUNT(DISTINCT dept_id) FROM t_employee;
着重号(DML操作)
例如:select name from t_stu;
可以给字段或表名加着重号
1)算术运算符:+ - * /(除也可以写成div,div取整) %(取模可以写成mod)
(2)比较运算符:= > >= < <= !=(不等于还可以写成<>) <=>(安全等于)
(3)逻辑运算符:&&(逻辑与也可以写成and) ||(逻辑或也可以写成or) not(逻辑非) xor(逻辑异或)
(4)范围:表达式 between ... and ... (也可以写成 表达式>=... and 表达式 <=...)
表达式 not between ... and ...(也可以写成 表达式<... || 表达式 >...)
(5)集合:in (值,值,值...) not in(值,值,值...)
(6)模糊查询:LIKE NOT LIKE,通配符:%表示0-n个字符,_下划线代表一个字符
(7)位运算符:&(按位与) |(按位或)^(按位异或)~(按位取反)>>(右移)<<(左移)
(8)NULL值判断,is null 或 is not null,如果使用null=null,null<>null,null=0,null<>0,null=false等都不对
不过xxx is null 可以使用xxx <=> null ,xxx is not null 可以写成 not xxx <=> null
结论:所有的运算符遇到NULL结果都是NULL,除了<=>
范围和集合
#between ... and ... 和 not between ... and ...
#in(集合) 和 not in(...)
#查询基本薪资是在9000-12000之间的员工编号和基本薪资
SELECT eid,basic_salary FROM t_salary WHERE basic_salary BETWEEN 9000 AND 12000;
#查询eid是1,3,5的基本工资
SELECT eid,basic_salary FROM t_salary WHERE eid IN (1,3,5);
模糊查询
#like 和 通配符 一起使用
#like _ 匹配单个字符
#like % 匹配任意个字符
#查询名字中有'冰'字的员工信息
SELECT * FROM t_employee WHERE ename LIKE '%冰%';
#查询姓李的员工信息
SELECT * FROM t_employee WHERE ename LIKE '李%';
#查询姓李,名字就一个字的员工信息
SELECT * FROM t_employee WHERE ename LIKE '李_';
#查询李冰冰的信息
SELECT * FROM t_employee WHERE ename LIKE '李冰冰';
关联查询,联合查询
关联查询:
内连接:inneg join、cross join
外连接:左外连接(left outer join)、右外连接(right outer join)、全外连接(full outer join)
自连接:当table1和table2本质上是同一张表,只是用取别名的方式虚拟成两张表以代表不同的意义
说明:
(1)连接 n个表,至少需要 n-1个连接条件。 例如:连接三个表,至少需要两个连接条件。
(2)当两个关联查询的表如果有字段名字相同,并且要查询中涉及该关联字段,那么需要使用表名前缀加以区分
(3)当如果表名比较长时,可以给表取别名,简化SQL语句

浙公网安备 33010602011771号