zoukankan      html  css  js  c++  java
  • 数据库的单表查询

    数据库查询(单表查询)

    • 关键字执行的优先级(重点)

      重点中的重点:关键字的执行优先级
      1:from #找到表
      2:where #使用where指定的条件,去表中取出一条条记录
      3:group by #将取出的数据进行分组,如果没有指定,则整体作为一组
      4:having #将分组的结果按照having指定的条件进行过滤
      5:select #指定select查询
      6:distinct #去重
      7:order by #将查询的结果按照order by指定的字段进行排序
      8:limit #限制结果的显示数量
      
    • select查询操作(筛选列)

      1:#select 查询操作
      	'''
      	注意所有select 查询后面右加括号的方法,比如,select user()这种带括号的都是Mysql的	 内置方法,select本身就是查询操作,from只是说明从哪查,
      	'''
      	select * from 表名; #查询表中所有的数据  *代表所有
      	select 字段名 from 表名;#查询表中某一个字段的数据
      	select 字段名,字段名,字段名 from 表名;#查询表中多个字段的数据
      	select database();#查询返回当前操作的数据库
      	select user();#查询当前登陆的用户
      	select now;#查询返回当前的时间
      ===========================================================
      2:#distinct 去重操作
      	'''
      	当使用select查询表某些字段数据的时候,这个字段中可能出现多个重复的数据,就可以使用	distinct对查询出来的数据进行去重操作,distinct也可以对多个字段的数据进行联合去重
      	'''
      	select dictinct 字段名 from 表名;#对查出来的字段数据进行去重
      	select distinct 字段名,字段名 from 表名;#对多个字段查询的数据进行联合去重
      ===========================================================
      3:#四则运算
      	'''
      	使用select 查询某个字段的数据的时候,对数值类型的字段数据,可以进行四则运算,四则运	 算包括加减乘除等操作
      	'''
      	select 字段名*12 from 表名;#对查询出来的数据乘以12,返回结果,>>字段名要是数值类		型
      ===========================================================
      4:#concat字符串拼接和concat_ws指定分割符进行拼接(自定义显示的格式)
      	'''
      	concat内置函数可以对查询出来的字段数据进行字符串拼接
      	'''
      	select concat('姓名:',name) from 表名;#对查询出来的姓名字段的数据前面都加上一	  个字符串姓名,能够友好的显示查询出来的数据的意思,其实就是字符串拼接
      	select concat(name,':',salary)as info from 表名;#concat还可以将两个字段的数		据拼接,,产生一个新的字段数据显示出来,as是个这个字段重命名
      	'''
      	concat_ws()函数也只是字符串拼接,不过concat_ws的凭借方式是类似与python join拼接	    的方式,就是以某个元素对多个字段的数据进行拼接
      	'''
      	
          select concat_ws('_','姓名:',name,'性别:',sex)as info from 表名;
      ==========================================================
      5:#case end 语句 对查询出来的每一个数据进行加工和显示
      	'''
      	case语句的作用是,对表中数据进行查询时,对于查询出来的语句进行进一步的加工,并且显示	出来,case end语句有点像python里的if语句,不过sql的case语句需要表明开始和结		束,case代表开始,end代表结束.when代表的就是if条件,else就是其他,当有多个when的时	候,从第二个when开始就代表的类似于elif的意思,,,,,知道了解就好>>>>>>
      	'''
      select(
      	case
          when name='田少岗' concat(name,'逗比')
          when name='田彩' concat(name,'女神')
          else 
          	concat(name,'边玩去')
         	end
      )as now_name from 表名;
      ==========================================================
      6:#select的相关总结;
          可以查一个,多个,*所有
          调用函数:now(),database(),concat(),concat_ws()
          可以四则运算
          可以去重 distinct
          可以使用case end 条件判断语句
      
    • where 筛选行语句

      1:#范围查询
          #< > >= <= !=  <>代表不等于和!=是一个意思 
          select age from 表名 where age <100 and age>20;(多条件查询)
          #between 1 and 10 找寻1到10之间的
          select age from 表名 where between 1 and 100; >>注意包含1和100
          #in (1,2,3,4) 多选一
          select age from 表名 where age in (10,20,30,40);
          #将age=10和age=20的都能取出来
          select age from 表名 where age=10 or age=20;
      2:#模糊查询
          #like
          like的表现形式是,'%a'查询以a结尾的,'a%'查询以a开始的,'%a%'查询包含a的
          select name from 表名 where name like '田%';>>>查询出姓田的所有人
          like还有一种形式,'_a','a_','a__'一个划线代表一个字符,%代表的是任意长度
          select name from 表名 where name 'like '田_';>>>查询出以田开头的两个字的姓名
          #regexp 可以使用正则匹配(记一下正则表达式)
      3:#is is not 
          is null is not null 一般用来判断是不是空,
      4:#逻辑运算
          and or not	
      
    • group by(分组)

      '''group by可以对某个字段的值进行分组,这个字段有多少种值就分多少组,group by还有一个特性就是去重,一旦使用group by对数据分组了,就不能对某一条数据进行操作,永远都是这一组数据'''
      group_concat()函数(只用来做最终的显示,不做中间数据的操作)可以显示当前这一组的所有信息,拼在一起显示
      select post,group_concat(name),count(id) from employee group by post having count(id) < 2;
      '''
      mysql> set global sql_mode='STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY';
      ONLY_FULL_GROUP_BY的语义就是确定select target list中的所有列的值都是明确语义,简单的说来,在ONLY_FULL_GROUP_BY模式下,target list中的值要么是来自于聚集函数的结果,要么是来自于group by list中的表达式的值。(了解就好)
      '''
      
    • 聚合函数

      1:#count 计数
      2:#max  求最大值
      3:#avg  求平均值
      4:#min  求最小值
      5:#sum  求和
      
    • having 过滤条件

      '''
      having是针对一个组做的过滤条件,是放在group by 后面执行的,他的意思和where是一样的
      where group 和 having的执行顺序是,where>group by>having,所以having一般都是和having一起用的
      '''
      select post,group_concat(name),count(id) from employee group by post having count(id) < 2;
      
    • order by 排序

      '''
      对查询出来的数据进行排序,可以升序或者降序(desc),可以使用多个条件一起排序,执行顺序按照从左到右执行排序
      '''
      SELECT * FROM employee ORDER BY salary; #默认是升序排列
      SELECT * FROM employee ORDER BY salary ASC; #升序
      SELECT * FROM employee ORDER BY salary DESC; #降序
      
    • limit 分页

      '''
      可以和order by一起使用,先排序再分页取几个,还可以指定删选的范围,limit m,n这个意思是从m+1开始取n条数据,不如limit 0,6,就是从1开始取六条数据,然是limit分页时,只适合做小数据的分页,当数据量过大时,效率就会非常慢,limit还有一种语法是:limit n offset m,这个意思也是从m+1开始,取n条,这个语法知道就行,
      '''
      #默认初始位置为0,从第一条开始顺序取出三条 
      	SELECT * FROM employee ORDER BY salary DESC LIMIT 3;
      #从第0开始,即先查询出第一条,然后包含这一条在内往后查5条
          SELECT * FROM employee ORDER BY salary DESC
              LIMIT 0,5;  
      ##从第5开始,即先查询出第6条,然后包含这一条在内往后查5条
          SELECT * FROM employee ORDER BY salary DESC
              LIMIT 5,5; 
      

    多表查询

  • 相关阅读:
    JS 数组去重复值
    git 上传项目 到github
    IntelliJ IDEA 创建maven 项目 并且,将springMVC 与Mybatis 整合
    easyui datagrid 动态添加columns属性
    codeMirror的简单使用,js比较文本差异(标注出增删改)
    sql注入
    Web For Pentester靶场
    一些数据库
    nginx的使用场景
    dockerfile
  • 原文地址:https://www.cnblogs.com/luckinlee/p/11621154.html
Copyright © 2011-2022 走看看