Mysql 回顾总结1

 

  • 基础知识
    • 数据库(database) 保存有组织的数据的容器
    • Mysql是数据库软件
    • 表(table) 某种特定类型数据的结构化清单
    • 列 (column) 表中的一个字段。所有表都有一列或者多列组成的。每一列都有对应的数据类型
    • 行(row) 表中的一个记录
    • 主键(primary key) 一列(或一组列),其值能够唯一区分表中每个行。表中每一行都应该有可以唯一标识自己的一列。表中的任何列都可以作为主键,但是必须满足以下条件:
      • 任意两行都不具有相同的主键
      • 每个行都必须具有一个主键
  • 选择数据库
    • use databasename;
  • 了解数据库和表 (显示数据库和表)
    • show databases;
    • show databases.table;
    • show columns from databases.table;
  • SELECT 检索数据
    • 使用select选取列数据,返回的结果是无序的
    • SELECT id,name,population from world.City;
    • 可以使用星号(*)来代替其他字段,返回表的所有字段数据
    • 使用limit 限制返回结果行数
    • 每个语句后面需要使用分号(;)
    • SQL语句会忽略空格 (一个空格或者多个空格都当成一个空格)
    • # 表示后面为注释,为解释代码,不执行
  • ORDER BY 数据排序
    • 将查询数据排序后再返回数据
    • select columns1,columns2 from databases.table order by columns1 desc, columns2 desc; (先遵从第一指标,再遵从第二个指标,以此类推)
    • SELECT id,name,population from world.City order by population,name;
    • select * from 拍拍贷.LC order by 历史逾期还款期数 desc,总待还本金 desc; 注意哪个是优先排序
    • 可以使用任何字段来作为排序的条件
    • 可以设定多个字段来排序
    • 可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。
    • 默认情况下,它是按升序排列。
    • 可以添加 WHERE...LIKE 子句来设置条件。
  • WHERE 数据过滤
    • 语法: SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....
    • SELECT ID,NAME,POPULATION,District FROM world.City WHERE ((POPULATION > 100000) OR (POPULATION < 100)) and (District not in ('Kabol','Alger'));
    • 多个过滤子句使用 and/or 连接 (按顺序依次满足)
    • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。
    • 为了代码编写的整洁,多个过滤条件之间,需要加(),清晰表明语句执行的顺序和逻辑。
    • in/not (一般用于字符串 in ( ) 、not in ( ))
  • LIKE 通配符
    • 通配符本身实际是SQL的WHERE子句中有特殊含义的字符
    • 使用通配符条件就是必须要加上LIKE操作符。
    • SELECT * from world.City where name like 'b%=';
    • 百分号(%)通配符:% 表示任何字符出现任意次数
      • %b: 以b结尾的字符
      • b%:以b开头的字符
      • %b%:中间含有b的字符
      • s%e:以s开头,e结尾的字符
      • 通配符不能匹配NULL
    • 下划线(_)通配符
      • 下划线通配符的用途与%一样,但是下划线只匹配单个字符而不是多个字符。
      • 下划线_ 总是匹配一个字符,不能多也不能少
    • 使用通配符的技巧
      • 不要过度使用通配符,因为它比其他搜索花费更多时间。
      • 确实需要使用时,不要把他们放在搜索模式开始处,因为这样是最慢的。
      • 仔细注意通配符的位置。如果放错地方,可能不能返回想要的数据。
  • 文本操作函数
    • LTRIM(s):去掉字符串 s 开始处的空格
    • RTRIM(s):去掉字符串 s 结尾处的空格
    • UPPER(s):将字符串s的所有字母全部转为大写
    • LOWER(s):将字符串 s 的所有字母变成小写字母
    • LENGTH(s): 返回字符串长度
    • SUBSTRING(s, start, length)):从字符串 s 的 start 位置截取长度为 length 的子字符串
    • select id,upper(name) as Name,length(rtrim(ltrim(name))) as len_name from world.City limit 20;
      • 函数之间可以嵌套
      • length(rtrim(ltrim(name))) 嵌套作用是求字符串name去除首尾空格后的长度
      • length(rtrim(ltrim(name))) 作为列名太长,后面使用as len_name更名为len_name
    • 作业: 使用substring 与 left
      • substring 截取name字符串最左边三个字符,并替代name列为short_name列
      • select id,substring(name,1,3) as Short_name,length(rtrim(ltrim(name))) as len_name from world.City limit 20;
      • left函数,返回name字符串最左边三个字符,并替代name列为short_name列
      • select id,left(name,3) as Short_name,length(rtrim(ltrim(name))) as len_name from world.City limit 20;
  • 时间函数
    • Curdate() ,CURRENT_DATE() 返回当前日期
    • Curtime(),CURRENT_TIME() 返回当前时间
    • Date() 返回日期时间的日期部分
    • DATEDIFF(d1,d2) 计算日期 d1到d2 之间相隔的天数
    • DAY(d) 返回日期值 d 的日期部分
      • SELECT DAY("2017-06-15"); -> 15
    • Dayofweek(d) 日期 d 今天是星期几,1 星期日,2 星期一,以此类推
    • Hour(t) 返回 t 中的小时值
      • select hour('11:49:11');11
      • 注意输入的时间是字符串格式,加‘ ’
    • MINUTE(t) 返回 t 中的分钟值,用法同Hour(t)
    • MONTH(d)返回日期d中的月份值,1 到 12。用法同Hour(t)
    • YEAR(d)返回年份。用法同Hour(t)
    • select curdate(),curtime(),dayofweek(curdate()),month(curdate()),monthname(curdate()),day('2019-02-03');
  • 汇总函数/聚集函数
    • AVG() 返回某列的平均值
    • COUNT() 返回某列的行数
    • MAX() 返回某列的最大值
    • MIN() 返回某列的最小值
    • SUM() 返回某列值之和
    • #注意,条件语句都是最新运行的,先过滤后计算
    • select avg(population),count(population),min(population),max(population),sum(population) from world.City where population >= 1000000;
    • select distinct CountryCode,District from world.City;
      • 使用distinct去重
      • 结果中不会出现CountryCode,District都一样的重复的行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值