MySql 视图 学习笔记
视图
1. 常见的数据库对象
对象
描述
表(TABLE)
表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录
数据字典
就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改,只可查看
约束(CONSTRAINT)
执行数据校验的规则,用于保证数据完整性的规则
视图(VIEW)
一个或者多个数据表里的数据的逻辑显示,视图并不存储数据
索引(INDEX)
用于提高查询性能,相当于书的目录
存储过程(PROCEDURE)
用于完成一次完整的业务处理,没有返回值,但可通过传出参数将多个值传给调用环境
存储函数(FUNCTION)
用于完成一次特定的计算,具有一个返回值
触发器(TRIGGER)
相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理
2. 视图概述
2.1 为什么使用视图?视图一方面可以帮我们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会 ...
MySql 数据处理增删改查 学习笔记
数据处理增删改查练习综合案例1、创建数据库test01_libraryCREATE DATABASE test01_library CHARACTER SET 'utf8';USE test01_library;
2、创建表 books,表结构如下:CREATE TABLE IF NOT EXISTS books(id INT,`name` VARCHAR(50),`authors` VARCHAR(100),price FLOAT,pubdate YEAR,note VARCHAR(100),num INT);SHOW TABLES FROM test01_library;DESC books;
3、向books表中插入记录1)不指定字段名称,插入第一条记录INSERT INTO booksVALUE(1,'Tal of AAA','Dickes',23,1995,'novel',11);
2)指定所有字段名称,插入第二记录INSERT INTO books (id,NAME,`authors`,pri ...
MySql 创建和管理表语句 学习笔记
创建和管理表的课后练习练习一1 创建数据库test01_office 指明字符集为utf-8并在此数据库执行下列操作CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8';USE test01_office;#创建表 dept01#字段 类型#id int7#name varchar25CREATE TABLE IF NOT EXISTS dept01(id INT(7),`name` VARCHAR(25)); SHOW TABLESSHOW TABLES FROM test01_office
2将表departments中的数据插入新表dept02CREATE TABLE dept02ASSELECT * FROM atguigudb.`departments`;SELECT *FROM dept02;
创建表emp01#字段 类型#id int7#first_name varchar25#last_nmae va ...
MySql 约束 学习笔记
约束
1. 约束(constraint)概述1.1 为什么需要约束数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑:
实体完整性(Entity Integrity):例如,同一个表中,不能存在两条完全相同无法区分的记录
域完整性(Domain Integrity):例如:年龄范围0-120,性别范围“男/女”
引用完整性(Referential Integrity):例如:员工所在部门,在部门表中要能找到这个部门
用户自定义完整性(User-defined Integrity):例如:用户名唯一、密码不能为空等,本部门经理的工资不得高于本部门职工的平均工资的5倍。
1.2 什么是约束约束是表级的强制规定。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后通过 ALTER TABLE 语句规定约束。
...
MySql 查询语句 学习笔记
MySql 查询语句练习DESC departments;SELECT * FROM employees WHERE last_name ='king';
单表练习查询员工12个月工资总和和奖金 别名annual aslarySELECT employee_id,last_name,salary *12*(1+IFNULL(commission_pct,0)) "annual aslary"FROM employees;
查询员工表中去除重复job_id后的数据SELECT DISTINCT job_id FROM employees;
查询工资大于12000员工的名和工资SELECT last_name, salary FROM employees WHERE salary >12000;
查询员工工号为176的姓名和部门号SELECT last_name,department_id FROM employeesWHERE employee_id =176;
显示表departments 的结构 并查询其中全部数据DESC de ...
MySql MySQL数据类型精讲 学习笔记
MySQL数据类型精讲
1. MySQL中的数据类型
类型
类型举例
整数类型
TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT
浮点类型
FLOAT、DOUBLE
定点数类型
DECIMAL
位类型
BIT
日期时间类型
YEAR、TIME、DATE、DATETIME、TIMESTAMP
文本字符串类型
CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT
枚举类型
ENUM
集合类型
SET
二进制字符串类型
BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB
JSON类型
JSON对象、JSON数组
空间数据类型
单值类型:GEOMETRY、POINT、LINESTRING、POLYGON;
集合类型
MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION
常见数据类型的属性,如下:
MySQL关键字
含义
NULL ...
MySql 数据处理之增删改 学习笔记
数据处理之增删改
1. 插入数据1.1 实际问题
解决方式:使用 INSERT 语句向表中插入数据。
1.2 方式1:VALUES的方式添加使用这种语法一次只能向表中插入一条数据。
情况1:为表的所有字段按默认顺序插入数据
INSERT INTO 表名VALUES (value1,value2,....);
值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同。
举例:
INSERT INTO departmentsVALUES (70, 'Pub', 100, 1700);
INSERT INTO departmentsVALUES (100, 'Finance', NULL, NULL);
情况2:为表的指定字段插入数据
INSERT INTO 表名(column1 [, column2, …, columnn]) VALUES (value1 [,value2, …, valuen]);
为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值。
在 I ...
MySql 创建和管理表 学习笔记
创建和管理表
1. 基础知识1.1 一条数据存储的过程存储数据是处理数据的第一步。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团乱麻,无从下手。
那么,怎样才能把用户各种经营相关的、纷繁复杂的数据,有序、高效地存储起来呢? 在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。
我们要先创建一个数据库,而不是直接创建数据表呢?
因为从系统架构的层次上看,MySQL 数据库系统从大到小依次是数据库服务器、数据库、数据表、数据表的行与列。
MySQL 数据库服务器之前已经安装。所以,我们就从创建数据库开始。
1.2 标识符命名规则
数据库名、表名不得超过30个字符,变量名限制为29个
必须只能包含 A–Z, a–z, 0–9, _共63个字符
数据库名、表名、字段名等对象名中间不要包含空格
同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来
保持字段名和类型的 ...
MySql 子查询 学习笔记
子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。
SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出一个数据结果,然后与这个数据结果(可能是某个标量,也可能是某个集合)进行比较。
1. 需求分析与问题解决1.1 实际问题
现有解决方式:
#方式一:SELECT salaryFROM employeesWHERE last_name = 'Abel';SELECT last_name,salaryFROM employeesWHERE salary > 11000;#方式二:自连接SELECT e2.last_name,e2.salaryFROM employees e1,employees e2WHERE e1.last_name = 'Abel'AND e1.`salary` < e2.`salary`
#方式三:子查询SELECT last_name,salaryFROM employeesWHER ...
MySql 聚合函数 学习笔记
聚合函数
我们上一章讲到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。
1. 聚合函数介绍
什么是聚合函数
聚合函数作用于一组数据,并对一组数据返回一个值。
聚合函数类型
AVG()
SUM()
MAX()
MIN()
**COUNT() **
*
聚合函数语法
聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。
1.1 AVG和SUM函数可以对数值型数据使用AVG 和 SUM 函数。
SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary)FROM employeesWHERE job_id LIKE '%REP%';
1.2 MIN和MAX函数可以对任意数据类型的数据使用 MIN 和 MAX 函数。
SELECT MIN(hire_date), MAX(hire_date)FROM employees;
1.3 COUNT函数 ...