简单学sql

    技术2022-07-11  91

    今天整理了一些简单的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

    Processed: 0.017, SQL: 9