简单学sql

今天整理了一些简单的sql语句,觉得非常的实用。

语法:select 查询列表 from 表名;  

特点:可以查询表中的字段、常量值、表达式、函数 

#1、查询emp表中的单个last_name字段:select last_name form emp

#2、查询emp表中的多个字段: select last_name,salary,email from emp

#3、查询emp表中的所有的字段:select  * from emp;

#4、查询常量值 :select 100;

#5、可以用AS来起别名:select last_name AS 姓,first_name AS 名 from emp;

#6、可以直接空格,来起别名:select last_name 姓,first_name 名 from emp;

#7、起别名--out_put是sql敏感词,所以后面加上单引号: select salary AS ‘out put’ from emp;

#8、去重distinct: 查询员工表涉及到的所有的部门编号:select distinct dep_id from emp;

#9、concat的作用:查询员工名和姓连接成一个字段,并显示为姓名: select  concat('a','b','c','d') AS 姓名

#10、条件查询 select 查询列表 from 表名 where 筛选条件 :select last_name,depart_id  from emp depart_id !=90; 

#11、按逻辑表达式筛选 :select last_name,salary,commission_part from emp salary>=10000 and salary<=20000;

#12、模糊查询 like / between / and / in / is null /is not null  

#13、查询员工名中包含的字符a的员工信息 :

select * from emp where last_name like '%a%';

#14、查询员工名中第二个字符为_的员工名:

select last_name from emp where last_name like  '_\_%' escape "$";

#15、查询员工的工种编号是 IT_PROG、AD_VP:

select last_name,job_id  from emp where job_id in(IT_PROG,AD_VP);

#16、安全等于 <=>,可以判断null值,也可以判断普通的数值

#17、concat:拼接字符  ifnull函数:判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值:

select ifnull(commission_pct,0) from emp;

 isnull函数:判断某字段或表达式是否为null,如果是,则返回1.

#18、排序查询列表:select 查询列表 from 表 where 筛选信息 order by 排序列表 【asc|desc】

#19、按年薪的高低显示员工的信息和年薪:

select * salary*12*(1+(commision_pct,0)) 年薪 from emp order by salary*12*(1+IFNULL(commision_pct,0)) order by 年薪 desc(降序);

#20、常见函数: 1、单行函数:如concat、length、ifnull等

                             2、分组函数:功能--做统计使用,又称为聚合函数

#21、将John变大写、变小写:(upper、lower )select upper(‘John’)

#22、将姓变大写,名变小写 :

                  select concat(upper(last_name),lower(first_name)) 姓名 from emp;

#23、(substr、substring)索引从7开始,运行sql语句后得出陆展元:select substr('李莫愁爱上了陆展元',7) out_put;

#24、截取从指定索引处指定字符长度的字符,索引从1开始,运行sql语句后得出李莫愁:select substr('李莫愁爱上了陆展元',1,3) out_put;

#25、日期函数 返回当前系统日期+时间:select now();  

#返回当前系统日期,不包含时间: select curdate();  

 #返回当前时间,不包含日期:select curtime();

 #获取指定的部分,年月日、小时、分钟、秒:select year(now())年; select year(1992-1-1);

#26、datediff 相差的天数,最大、最小入职的相差天数:

select datediff(max(hiredate) min(hiredate)) diffrence from emp;

#27、从emp中查询所有的个数:select count(*) from emp;

#28、分组查询 select 分组函数,列(要求出现在group by的后面) from 表 【where 筛选】group by 分组的列表 【order by 子句】

#引入:查询每个部门的平均工资:select avg(salary) from emp;

#replace替换

#truncate 截断:后面不管是啥,都不要了

#round 四舍五入

#mod 取余

#29、insert 第一种形式:INSERT INTO table_name
VALUES (value1,value2,value3,...);

#29、第二种形式:INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

#30、update语法:UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;

#31、delete语法:delete from table_name where some_column=some_value;

#32、Having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。

也有这样区别两者的:where过滤行,having过滤组

使用顺序:where、having、group by、order by、limit

 SELECT  * FROM t_order WHERE STATUS = 6 GROUP BY user_id HAVING COUNT(total_amount) > 2 ORDER BY create_time LIMIT 0,10

SQL实例:

一、显示每个地区的总人口数和总面积.
SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region

先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中
的不同字段(一或多条记录)作运算。

二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值