sql语句的语法顺序

SQL语句执行顺序
开始->from 子句-where子句-> group by 子句->having子句-> select子句->distinct(去重)-> order by子句-> limit子句->最终结果

SQL语句书写顺序
select * + from 表名 + where[like] 子句 + group by 分组 + order by 排序 + limit 起始下标,数量
聚合函数:
count(列名 或者 * )
max(列名)
min(列名)
avg(列名) 自动过滤 null ==============> ifnull(列名,0)
sum(列名)
时间函数:
curdate() – 获取当前日期: 年月日
curtime() – 获取当前时间: 时分秒
now() – 获取当前日期+时间, 年月日 时分秒
year(‘2020-8-10’): 返回年份, 2020 ()
month(‘2020-8-10’): 返回月份 8
day(‘2020-8-10’): 返回 日10
hour(‘2020-8-10 12:34:56’): 返回小时, 12
minute(‘2020-8-10 12:34:56’): 返回分钟数, 34
second(‘2020-8-10 12:34:56’): 返回秒值, 56
其他函数
concat(‘s1’,‘s2’,‘s3’…) 将 s1、s2、…sn 拼接在一起返回
concat_ws(x,‘s1’,‘s2’,‘s3’)

其他补充:
1)多表查询
连接查询
内连接查询: select * from 表A inner join 表B on +两张表关联的条件
左关联 : select * from 表A left join 表B on +两张表关联的条件
右关联 : select * from 表A right join 表B on +两张表关联的条件
外关联查询:
mysql不支持全外连接查询!但可以通过union来模拟这种查询!
union关键字是用于将两个查询结果上下合并在一起显示,并且会去除重复记录。
union all关键字是用于将两个查询结果上下合并在一起显示,不会去除重复记录
能够使用union和union all合并结果的查询语句,必须符合:
1.两条SQL语句查询的结果列数必须相同
2.两条SQL语句查询的结果列名必须相同(低版本mysql要求)
select * from dept left join emp on emp.dept_id=dept.id
union (all)
select * from dept right join emp on emp.dept_id=dept.id;

2) 如果是在cmd中执行插入记录的语句,先 set names gbk; 再插入记录!
3)distinct用于去除重复记录,只保留一行!
            查询emp表中的所有部门和职位
             select distinct dept, job from emp;
4)添加约束的格式:
	create table stu(
		id int primary key,      ----- 主键约束
		id int primary key auto_increment,        -----自增
		gender varchar(10) not null,             -------添加非空约束
	);
5)where和having的区别?
      	where和having都是用于对表中的记录进行筛选过滤
    	where用于在分组之前对记录进行筛选过滤,而having用于对分组之后的记录进行筛选过滤
    	 where子句中不能使用多行函数 和 列别名,但可以使用表别名!
	select name as 姓名, sal as 薪资 from emp e;
	-- 其中上面的'姓名','薪资'都是列别名, e是表别名
	having子句中可以使用多行函数 和 列别名 以及 表别名!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值