导入学习数据库

  • source /opt/yiibaidb.sql

SQL是什么?MySQL是什么?

  • SQL是结构化查询语言(Structured Query Language)。
  • SQL是一种专门用来与数据库沟通的语言。
  • MySQL是一个关系型数据库管理系统。

查询语句 SELECT FROM

  • 语句解释
  • SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)
  • Java 中返回 ResultSet
  • 去重语句
  • select distinct colnum from table;
  • 前N个语句
  • select colnum from limit n offset 0;
  • 从第1行开始
  • CASE…END判断语句
    *

筛选语句 WHERE

  • 语句解释
  • 数据库表一般包含大量的数据,很少需要检索表中的所有行。通常只会 根据特定操作或报告的需要提取表数据的子集。只检索所需数据需要指 定搜索条件(search criteria),搜索条件也称为过滤条件(filter condition)。
  • 确定值是否为NULL,不能简单地检查是否= NULL。SELECT语句有一个 特殊的WHERE子句,可用来检查具有NULL值的列。这个WHERE子句就 是IS NULL子句。
  • select xxx from table where xxx is (not) NULL;
  • 运算符/通配符/操作符
  • or and and优先级高 (xx or xxx) and xxxx
  • in (xx,xx) 范围
  • not 否定
  • %表示任何字符出现任意次 数
  • _ 匹配一个
  • like `xxx%`
  • 通配符%看起来像是可以匹配任何东西,但有个例外,这就是 NULL。 子句WHERE prod_name LIKE '%'不会匹配产品名称为NULL的行。

分组语句 GROUP BY

  • 聚集函数
  • AVG—返回平均值
  • COUNT()–返回行数
  • FIRST()–返回第一个记录的值
  • LAST()–返回最后一个记录的值
  • MAX()–返回最大值
  • MIN()–返回最小值
  • SUM()–返回总和
  • ABS()–返回绝对值
  • 语句解释
  • 相同的分为一组
  • HAVING子句
  • 在分组的基础上进行筛选

排序语句 ORDER BY

  • 语句解释
  • SELECT prod_name FROM Products ORDER BY prod_name(对prod_name列以字母顺序排序数据)
  • 正序、逆序
  • DESC降序,默认升序(ASC)

函数

  • 时间函数
  • AddDate() 增加一个日期(天、周等)
  • AddTime() 增加一个时间(时、分等)
  • CurDate() 返回当前日期
  • CurTime() 返回当前时间
  • Date() 返回日期时间的日期部分
  • DateDiff() 计算两个日期之差
  • Date_Add() 高度灵活的日期运算函数
  • Date_Format() 返回一个格式化的日期或时间串
  • Day() 返回一个日期的天数部分
  • DayOfWeek() 对于一个日期返回星期几
  • Hour() 返回一个时间的小时部分
  • Minute() 返回一个时间的分钟部分
  • Month() 返回一个日期的月份部分
  • Now() 返回当前的日期和时间
  • Second() 返回一个时间的秒部分
  • Time() 返回当前的日期时间的时间部分
  • Year() 返回一个日期的年份部分
  • 数值函数
  • ABS() 返回一个数的绝对值
  • COS() 返回一个角度的余弦
  • EXP() 返回一个数的指数值
  • MOD() 返回除操作的余数
  • PI() 返回圆周率
  • RAND() 返回一个随机数
  • SIN() 返回一个角度的正弦
  • SQRT() 返回一个数的平方根
  • TAN() 返回一个角度的正切
  • 字符串函数
  • UCASE()–将某个字段转换为大写
  • LCASE()–将某个字段转换为小写
  • MID()–从某个文本字段提取字符
  • SubString(字段,1,end)–从某个文本字段提取字符
  • LEN()–返回某个文本字段的长度
  • ROUND()–对某个数值字段进行指定小数位数的四舍五入
  • NOW()–返回当前的系统日期和时间
  • FORMAT()–格式化某个字段的显示方式

SQL注释

  • 分单行注释和多行注释:
  • 单行注释使用 --
  • 多行注释采用 /*…*/

SQL代码规范

查找所有重复的电子邮箱

  • select email from email group by email having count(email) > 1;

查找大国

  • select name,population,area from world where area>3000000 or (population>25000000 and gdp>20000000);