MySQL数据库

1、数据库概述

数据库:Database简称DB。是按照一定的结构来组织、存储和管理数据的仓库。通常分为关系型数据库和非关系型数据库。

MySQL属于关系型数据库,以表、行、列的结构来组织和处理数据。

表:命名的存储空间;列:一组命名的属性,也称字段;行:一条记录。

每个表由一组列来定义其结构,行则是表中的一条数据。行和列的交集称为数据项,指出了某列在某行上的值,也称为字段值。

2、结构化查询语言SQL

SQL语言可分为五种:DDL数据定义语言;DML数据操作语言;DQL数据查询语言;DCL数据控制语言;TCL事务处理语言。

书写规范

  1. 可多行书写,必须分号结尾。
  2. 适当缩进、空格提高可读性。
  3. 不区分大小写。
  4. 关键字不可缩写、分开、跨行书写。

3、DQL简单查询

查询表中的所有列或者指定列,通过算术运算符、列别名以及消除重复行可以改变查询结果的显示方式。

3.1 语法

查询表中所有列:

SELECT *

FROM dept;

或者

SELECT deptno,dname,loc

FROM dept;

查询指定列:

SELECT deptno,loc

FROM dept;

算术运算符优先级:

  1. 乘除优先于加减
  2. 相同优先级从左往右进行
  3. 括号提高优先级

空值理解:

空值用NULL表示,表示一种无效的、未知的值,空值不同于零或者空格。参与运算后结果为空值。

列别名:

  1. 直接在列名/表达式后起别名
  2. 列名与别名中间加as

当别名中含有空格或者特殊字符时,别名两侧需加双引号。

消除重复行:

使用DISTINCT关键字,消除查询结果中完全相同的行。

4、DQL条件查询

查询某些特定条件得到行记录。分为单条件和多条件。

4.1单条件查询语法

WHERE语句:

  1. 必须紧跟在FROM子句后;
  2. 格式:列名 比较运算符 比较值

特殊比较运算符:

BETWEEN...AND...  :查询值在某个范围中;

IN :查询值是否与给定集合内的任意一值相等;

LIKE :查询值是否满足部分匹配(%:匹配零个或者任意个字符;_:匹配一个字符);

IS NULL :查询值是否为NULL。

4.2多条件查询语法

逻辑运算符:(不同逻辑之间需要用"AND"做连接)

  1. AND :逻辑与;
  2. OR :逻辑或;
  3. NOT :逻辑非。

运算符优先级:

  1. 算术运算符;
  2. 比较运算符;
  3. 特殊运算符;
  4. 逻辑非;
  5. 逻辑与;
  6. 逻辑或。

5、DQL查询结果排序

ORDER BY子句:对结果集按照一定的顺序进行显示。可以按照列名、列别名、列序号排序

5.1结果排序语法

ORDER BY 子句:(多属性排序时,越靠前优先级越高)

        ORDER BY 属性 ASC,属性 EDSC;

  1. ASC(默认值):升序;DESC:降序。
  2. 可同时按照多个列名进行排序。
  3. 必须写在SELECT语句最后。
  4. 空值在升序排列中排在最前面,在降序排列中排在最后。

6、DQL多表查询

通过多个表之间的连接条件,使表之间发生发生关联,进而从多个表之间获取数据。

连接方法

  1. WHERE子句书写同属性相等连接条件(等值连接);
  2. 将多个表相乘成为一个新的“大表”(笛卡尔积);
  3. WHER子句结合运算符书写不等的连接条件(非等值连接);
  4. 通过不同属性信息之间的关系,建立连接(自连接);
  5. 以左(右)表为基础加入关联表内容(外部链接);LEFT OUTER JOIN 表名 ON 连接条件
  6. 关联属性的相同属性值的行留下,其余删除(内连接);INNER JOIN 关联属性

注:外部关联表不要在FROM子句中与笛卡尔积混淆;左连接的左表为FROM子句中的表,右表为用来连接的表。

练题

##显示员工SMITH的姓名,部门名称,直接上级名称
SELECT e.ename,d.dname,m.ename
FROM emp e,emp m,dept d
WHERE e.deptno=d.deptno
AND e.mgr=m.empno
AND e.ename='SMITH';
##显示员工姓名,部门名称,工资,工资级别,要求工资级别大于4级。
SELECT  e.ename,d.dname,s.grade
FROM emp e,dept d,salgrade s
WHERE e.deptno=d.deptno
AND e.sal BETWEEN s.losal AND s.hisal
AND s.grade>3;
##显示员工KING和FORD管理的员工姓名及其经理姓名
SELECT e.ename 员工姓名,m.ename 经理姓名
FROM emp e,emp m
WHERE e.mgr=m.empno
AND m.ename='KING' OR m.ename='FORD';
##显示员工姓名,参加工作时间,经理名,参加工作时间,要求参加时间比经理早
SELECT e.ename,e.hiredate,m.ename
FROM emp e,emp m
WHERE e.mgr=m.empno
AND e.hiredate<m.hiredate;


7、DQL分组函数

分组函数也叫聚合函数,将多个数据看成一个集体,只能表现出来集体的属性值。

7.1分组函数语法

规则

  1. 写在SELECT子句中
  2. WHERE、ORDER BY子句可省略不写

分组函数

  1. MAX 求最大值
  2. MIN 求最小值
  3. SUM 求和
  4. AVG 求平均值
  5. COUNT 求个数

注:用法均为MAX( [ DISTINCT | ALL ] 列名 | 表达式 );除COUNT(*)不忽略掉空值外,其余函数都是忽略掉空值再进行运算(包括COUNT(属性))

空值处理

IFNULL(列名,值):表示如果指定行某列的值是NULL,则当做指定的值参与运算。

SELECT AVG(IFNULL(comm,0)) , COUNT(IFNULL(comm,0))

FROM emp;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值