select * from emp select * from dept select * from job select * from salarygrade -- 1.查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述 SELECT t1.mgr, t1.ename, t1.salary, t2.jname, t2.description FROM emp AS t1, job AS t2 WHERE t1.job_id = t2.id -- 2.查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置 SELECT t1.ename, t1.salary, t2.jname, t2.description, t3.dname, t3.loc FROM emp AS t1, job AS t2, dept AS t3 WHERE t1.job_id = t2.id and t1.dept_id = t3.id -- 3.查询员工姓名,工资,工资等级 SELECT t1.ename, t1.salary, t2.grade FROM emp AS t1, salarygrade as t2 where t1.salary BETWEEN t2.losalary and hisalary -- 4.查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级 SELECT t1.ename, t1.salary, t2.jname, t2.description, t3.dname, t3.loc, t4.grade FROM emp AS t1, job AS t2, dept AS t3, salarygrade as t4 WHERE t1.job_id = t2.id and t1.dept_id = t3.id and t1.salary BETWEEN t4.losalary and t4.hisalary -- 5.查询出部门编号、部门名称、部门位置、部门人数 SELECT t1.*, COUNT(t2.id) 部门人数 FROM dept AS t1, emp AS t2 WHERE t2.dept_id = t1.id GROUP BY t2.dept_id SELECT dept.*,t1.num from dept,(select dept_id,COUNT(*) num from emp GROUP BY dept_id) t1 where t1.dept_id = dept.id
SQL总结: ******************************************************************************** 1.ddl语句: 操作数据库或表 //创建数据库 create Database if not 数据库名称; //删除数据库 drop database if exists 数据库名称 //使用数据库 use 数据库名称 //查看数据库 show database //查看当前使用的数据库 select database() --------------------------------------------------------------------- //查询该数据库下的所有表 select tables //查询表结构 desc 表的名称 //创建表 create table 表的名称(字段1名称 数据类型 约束 , 字段2名称 数据类型 约束, 字段3名称 数据类型 约束 ) //删除表 drop table if exists 表的名称 //修改表的名称 alter table 表的名称 rename to 新的表名 //添加列 alter table 表的名称 add 列名 数据类型; //修改列的数据类型 alter table 表的名称 modify 列名 新的数据类型; //修改列的名称以及数据类型 alter table 表的名称 change 列名 新列名 新数据类型 //删除列 alter table 表的名称 drop 列名 ; ******************************************************************************** 2.dml语句:对数据进行操作 //添加数据【指定列添加】 insert into 表的名称 (字段名1,字段名2,字段名3,……) values(字段名1值,字段名2值,字段名3值,……) //添加数据【给全部列添加数据】 insert into 表的名称 values(字段名1值,字段名2值,字段名3值,……) //添加数据【给全部列添加数据,多条数据同时添加】 insert into 表的名称 values(字段名1值,字段名2值,字段名3值,……), (字段名1值,字段名2值,字段名3值,……), (字段名1值,字段名2值,字段名3值,……); //修改数据【指定列修改】 update 表的名称 set 列名1=值1,列名2=值2,列名3=值3,…… where 条件【不指定条件就会将所有行的数据全部更改】 //删除数据 delete from 表的名称 where 条件【不指定条件就会将所有行的数据删除】 ******************************************************************************** 3.dql语句:数据库查询语言 ①select from 查询 ②distinct 去重 ③as 别名 ④条件{ > 大于 >= 大于或等于 != / <> 不等 < 小于 <= 小于或等于 between …… and …… 在……范围内 in() 多选一 like 模糊查询【_代表单个任意字符 %代表多个任意字符】 is null/is not null 不为空 and /&& 和 or /|| 或 not/! 非 } ⑤排序 order by 【ASC升序 DESC降序】 ⑥聚合函数{ count() 统计数量【不统计为null的列】 max() 最大值 min() 最小值 sum() 求和 avg() 平均值 } ⑦分组 group by ⑧分组后限定条件 having ⑨分组前的限定条件 where ⑩分页查询 limit 起始索引 , 查询条目数; ******************************************************************************** 4.dcl:数据控制语言 grant 授权 set 设置 @@autocommit 自动提交事务 begin 开启事务 commit 提交事务 rollback 回滚事务 事务的四大特征:AICO 原子性【要么同时成功,要么都失败】 一致性【数据总量不变】 隔离性【开启多个事务查询数据】 持久性【通过commit提交或rollback回滚实现数据更新】 默认自动提加事务【要手动提交事务方法--》set @@autocommit =0 默认是1】 一旦设置为手动提交事务则必须自主提交,不然数据无法更新
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 多表查询: 1.内连接 inner join on 【inner可以不写】 2.外连接 left join【左连接:查询左表的全部数据以及与右表交集部分数据】 right join【右连接:查询右表的全部数据以及与右表交集部分数据】 3.子查询 =(子查询语句【子查询语句输出的是单列单行数据时使用=】) in(子查询语句【子查询语句输出的是单列多行数据时使用in】) 约束: 1.非空约束 not null 2.唯一约束[自动添加] unique [auto_increment] 3.主键约束 primary key 4.默认约束 default 5.外键约束 constraint 外键名称 foreign key(外键字段名) references 主表名(主表列名) 数据库设计: 1.一对一 【例如:用户 和 用户详情 一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表, 不经常使用的字段放另一张表,用于提升查询性能】 实现方式: 在任意一方加入外键,关联另一方主键,并且设置外键为唯一(UNIQUE) 2.一对多 【例如:部门 和 员工 一个部门对应多个员工,一个员工对应一个部门】 实现方式: 在多的一方建立外键,指向一的一方的主键 3.多对多 【例如:商品 和 订单 一个商品对应多个订单,一个订单包含多个商品】 实现方式: 建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
文章评论