sql语句的基础语法

一、单表操作

1.插入数据

2.修改语句的基础语法

修改数据:update表名set字段名1=值1,字段名2=值2,……[where条件];([]可选条件)

                  update tb_emp set name = 张三, updateItime= now() where id= 1;

3.删除语句的基础语法

删除数据:delete from 表名 [where 条件];

4.查询操作
4.1基本查询

1)查询多个字段: select 字段1,字段2,字段3 from 表名;

2)查询所有字段(通配符): select * from 表名;

3)设置别名:select 字段 1[as别名1] , 字段2 [as别名2 ]from 表名;

4)去除重复记录: select distinct 字段列表 from 表名 ;

4.2条件查询

         就是在基本查询后面加上where条件   

1)条件查询: select 字段列表 from 表名 where 条件列表;

        in()和like的用法:

4.3分组查询 
     聚合函数

        分组查询一般伴随着聚合统计,例如对员工查询一般要统计员工数量,就会用到聚合。

    分组查询

实例:

--分组--

1.根据性别分组,统计男性和女性员工的数··count(*)

         select gender,count(*) from tb_emp group by gender;(查询字段列表,字段名包括两部分:1.分组字段,2.聚合函数,其他的没意义)

2.先查询入职时间在‘2015-01-01'(包含)以前的员工,并对结果根据职位分组,获取员工数量大于等于2的职位

        select job,count(*) from tb emp where entrydate <= '2015-01-01' group by job having count(*) >= 2;(分组后的条件)

tip:where与having区别

1.执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

2.判断条件不同:where不能对聚合函数进行判断,而having可以。

3.执行顺序:where >聚合函数>having。

4.4 排序查询

语法:条件查询: select  字段列表  from 表名 [where条件列表] [ group by 分组字段] order by 字段1 排序方式1 ,字段2 排序方式2 ··· 

排序方式:ASC:升序(默认值)DESC:降序

例:根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序 。           select * from tb_emp order by entrydate , update_time desc ;

4.5 分页查询

语法:分页查询:select 字段列表 from 表名 limit 起始索引,查询记录数;

注意事项

1.起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。

2.分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。

3.如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 查询记录数。

二、多表操作

1.多表查询

1.1.内连接

(如果员工表中一个员工没有分配部门,在和员工表和部门表的多表查询中,就查不到该员工。所以说是交集部分)

隐式内连接:select 字段列表 from 表1 , 表2 where 条件…;

显式内连接:select 字段列表  from 表1 [inner] join 表2  on 连接条件.

eg:

--A.查询员工的姓名,及所属的部门名称(隐式内连接实现)--

select tb_emp.name,tb_dept.name from tb_emp,tb_dept where tb_emp.dept_id = tb_dept.id;

--起别名--

select e.name, d.name from tb_emp e , tb_dept d where e.dept_id = d.id;

--B.查询员工的姓名,及所属的部门名称(显式内连接实现)--

select  tb_emp.name, tb_dept.name  from  tb_emp inner join  tb_dept  on  tb_emp.dept_id = tb_dept.id;

1.2.外连接

左外连接:select 字段列表 from 表1 left [outer] join表2 on 连接条件…;(常用,因为左外和右外可以互换)(想要查全的表放在左侧(表1))

右外连接:select 字段列表 from 表1 right [outer] join 表2  on  连接条件…;

--A.查询员工表 所有 员工的姓名,和对应的部门名称(左外连接)--

select e.name, d.name from tb_emp e left join tb_dept d on e.dept_id = d.id;

--B.查询部门表所有部门的名称,和对应的员工名称(右外连接)--

select e.name,d.name from tb_emp e right join tb_dept d on e.dept_id = d.id;

1.3.子查询

      

1.3.1 标量字查询

1.3.2 列子查询

1.3.3 行子查询

1.3.4 表子查询

tip:个人笔记,内容来自于黑马程序员JavaWeb开发教程

        

        

                   

  • 33
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值