INFORMATION_SCHEMA简介 INFORMATION_SCHEMA提供对数据库元数据的访问,有关MySQL服务器信息,例如数据库或表的名称,列的数据类型或访问权限。...该 INFORMATION_SCHEMA数据库包含几个只读表。它们实际上是视图,而不是基表,因此没有与它们关联的文件,并且您无法在它们上设置触发器。此外,没有具有该名称的数据库目录。...与SHOW相比,使用SELECT具有以下优点: 它符合Codd的规则,因为所有访问都是在表上完成的。 您可以使用熟悉的SELECT语句语法,只需要了解一些表名和列名。...例如,Oracle数据库用户熟悉在Oracle数据字典中查询表。 因为SHOW很熟悉并且被广泛使用,所以SHOW语句仍然是另一种选择。...实际上,随着INFORMATION_SCHEMA的实现,SHOW的增强功能见官方文档 1.4 INFORMATION_SCHEMA和特权 每个MySQL用户都有权访问这些表,但只能看到表中与用户具有适当访问权限的对象相对应的行
MySQL 为关系型数据库(Relational Database Management System),一个关系型数据库由一个或数个表格组成, 如图所示的一个表格: 表头(header): 每一列的名称...; 列(col): 具有相同数据类型的数据的集合; 行(row): 每一行用来描述某个人/物的具体信息; 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;...键(key): 表中用来识别某个特定的人物的方法, 键的值在当前列中具有唯一性。...语法:UPDATE表名称SET列名称=新值WHERE列名称=某值 -- update语句设置字段值为另一个结果取出来的字段update user set name = (select name from...as up ON ua.id = up.user_id; JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
列和数据类型 表由列(column)组成,列存储表中某部分的信息,每个列都有相应的数据类型(datatype)。而行(row)是表中的一个记录。...任何列作为主键的条件: 任意两行都不具有相同的主键值; 每一行都必须具有一个主键值(主键列不允许NULL值); 主键列中的值不允许修改或更新; 主键值不能重用(某行从表中删除,它的主键不能赋给以后的新行...一个子句通常由一个关键字加上所提供的数据组成。 使用 ORDER BY 子句以字母顺序排序数据,取一个或多个列的名字,据此对输出进行排序。...下面代码检索 3 个列,按其中两个列对结果进行排序,首先按价格,然后按名称排序。...屏幕快照 2018-05-25 06.04.04.png 对于上述例子中的输出,仅在多个行具有相同的 prod_price 值时才对产品按prod_name 进行排序。
JSON 数据类型,因此尽管前面示例中的 @j 看起来像 JSON 值,并且具有与 JSON 值相同的字符集和排序规则,但它不具有 JSON 数据类型。...JSON_MERGE_PRESERVE() 通过将具有相同键的所有唯一值,组合到一个数组中,来处理多个对象;该数组随后被用作结果中该键的值。...(类型名称是由 JSON_TYPE() 函数返回的名称。)一行中显示在一起的类型具有相同的优先级。列表中前面列出的具有 JSON 类型的任何值都比列表中其后列出的具有 JSON 类型的任何值更大。...OBJECT:如果两个 JSON 对象具有相同的键集,并且两个对象中的每个键都具有相同的值,则它们是相等的。...另一方面,如果查询比较两个包含数字的 JSON 列,则无法提前知道数字是整数还是双精度数。为了在所有行中提供最一致的行为,MySQL 将近似值转换为精确值。得到的排序是一致的,并且不会丢失数值精度。
执行基本查询 要查看表中单个列的所有数据,请使用以下语法: SELECT column FROM table; 要查询同一个表中的多个列,请使用逗号分隔列名: SELECT column_1, column..._2 FROM table; 您还可以通过用星号(*)替换列的名称来查询表中的每个列。...Asterisks(*)是表示“all”的占位符,它将查询表中的每一列: SELECT * FROM table; 百分号(%)表示零个或多个未知字符。...如在本示例这样,如果每个两个表中存在具有相同名称和数据类型的列,JOIN子句会开始查询: SELECT table_1.column_1, table_2.column_2 FROM table_1 JOIN...INNER JOIN将返回两个表中具有匹配值的所有记录,但不会显示任何没有匹配值的记录。 通过使用外部 JOIN子句,可以从两个表中的一个表中返回所有记录,包括在另一个表中没有相应匹配的值。
(1)数据表:数据库中的数据表与我们日常生活中使用的表格类似,由列和行组成。其中,每一列代表一个相同类型的数据。...(4)复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。 (5)索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,类似于书籍的目录。...(6)视图:视图看上去同表相似,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表或其他视图产生的,它限制了用户能看 到和修改的数据。...MySQL为关系数据库,这种所谓的“关系”可以理解为“表格”的概念,一个关系数据库由一个或数个表格组成。 (1)表头(header):每一列的名称。...(2)列(col):具有相同数据类型的数据的集合。 (3)行(row):每一行用来描述某条记录的具体信息。 (4)值(value):行的具体信息,每个值必须与该列的数据类型相同。
两个或更多个列上的索引被称作复合索引。 利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。...复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。...索引名index_name可选,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。...事实上,PRIMARY KEY索引仅是一个具有名称PRIMARY的UNIQUE索引。这表示一个表只能包含一个PRIMARY KEY,因为一个表中不可能具有两个同名的索引。...如果没有创建PRIMARY KEY索引,但表具有一个或多个UNIQUE索引,则MySQL将删除第一个UNIQUE索引。 如果从表中删除了某列,则索引会受到影响。
有时您可能正在使用具有相对较长或难以读取的名称的列或表的数据库。在这些情况下,您可以通过使用AS关键字创建别名来使这些名称更具可读性。...JOIN子句可用于组合查询结果中两个或多个表的行。它通过在表之间查找相关列并在输出中适当地对结果进行排序来实现此目的。...=table2.related_column; 请注意,因为JOIN子句比较了多个表的内容,所以前面的示例通过在列的名称前面加上表的名称和句点来指定从哪个表中选择每个列。...请注意,当使用UNION从多个表查询多个列时,每个SELECT语句必须查询相同数量的列,相应的列必须具有相似的数据类型,并且每个SELECT语句中的列必须具有相同的顺序。...查询多个表的另一种方法是使用子查询。子查询(也称为内部或嵌套查询)是包含在另一个查询中的查询。这些在您尝试根据单独的聚合函数的结果过滤查询结果的情况下非常有用。
,而 insert select 语句可以将某个外部表中的数据插入到另一个新表中。...连接查询是同时查询两个或两个以上的表时使用的。当不同的表中存在相同意义的列时,可通过该字段来连接这几个表。 MySQL支持不同的连接类型:交叉连接、内连接、自连接查询。...表名1.列名1=表名2.列名2; 当表的名称过长或两个或多个表的列名相同时,可以重新为表指定名称。...由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个或多个字段生成的键组成,这些键存储在数据结构(B-数或哈希表)中,通过MySQL可快速查找与键值相关联的字段。...用于将多行合并成一行,返回一个由多个值组成的字符串 mysql 流程控制函数 函数名称 作用 if 判断,流程控制 ifnull 判断是否为空 case 搜索语句 不同进制的数字进行转换 函数名称
当一个用户连接到MySQL Server时,用户的认证身份由"请求连接的主机名和用户名"确定,MySQL使用主机名+用户名的方式来识别和区分"相同主机不同用户"和"不同主机相同用户"发出的请求(例如:从...客户端传入Server中的身份标识(主机名和用户名)可能与用户表中的多个行记录匹配成功。...然后再按照用户列值进行排序(排序规则跟主机列值类似),host和user两列的排序规则有点类似与多列索引中的排序规则。...db:该表中的权限作用范围是数据库级别,对应数据库内的所有对象: user列和host列的表现形式要求与user表相同。...PS:与user表类似,Server会在启动时就将db表中的内容读入内存,并在内存中进行排序,根据Host,Db和User 三列对db表中的数据进行排序。
约束分类: 主键约束(primary key) PK 概念: MySQL主键约束是一个列或多个列的组合,其值能唯一的标识表中的每一行,方便在RDBMS中尽快的找到某一个行。...key (字段名) ); 在定义字段的同时指定主键: create table 表名( 字段1 类型(长度) primary key ); 添加多列的联合主键 就是这个主键是由一张表中多个字段组成 注意...:当主键是由多个字段组成时,不能直接在字段名后面声明主键约束; 一张表只能有一个主键,联合主键也是一个主键。...定义:外键约束是表的一个特殊字段,经常和主键约束一起使用,对于两个具有关联关系的表来说,相关字段中主所在表就是主表(父表),外键所在表就是从表(子表) 特点(定义一个外键时,需要遵守的规则): 主表必须已经存在于数据库中...,那么这个列或列的组合必须是主表的主键或候选键 外键中列的数目必须和主表的主键中的列的数目相同 外键中列的数据类型必须和主表的主键中的列的数据类型相同 方式一:在创建表的时候设置外键约束 语法: constraint
联结多个表 SQL对一条SELECT语句中可以联结的表的数目没有限制。 创建联结的基本规则也相同。首先列出所有表,然后定义表之间的关系。...虽然这是完全合法的,但对products的引用具有二义性,因为MySQL不知道你引用的是products表中的哪个实例。 -- 为解决此问题,使用了表别名。...虽然最终的结果是相同的,但有时候处理联结远比处理子查询快得多。 外部链接 许多联结将一个表中的行与另一个表中的行相关联。但有时候会需要包含没有关联行的那些行。...UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出) 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型...>对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY子句。
SELECT 语句从 SQL Server 中检索出数据,然后以一个或多个结果集的形式将其返回给用户。结果集是对来自 SELECT 语句的数据的表格排列。与 SQL 表相同,结果集由行和列组成。...此列表指定结果集有三列,并且每一列都具有 Product 表中相关列的名称、数据类型和大小。因为 FROM 子句仅指定了一个基表,所以 SELECT 语句中的所有列名都引用该表中的列。...此列表指定结果集有三列,并且每一列都具有Product表中相关列的名称、数据类型和大小。因为FROM子句仅指定了一个基表,所以SELECT语句中的所有列名都引用该表中的列。...BY TOP 4.4 选择列表 结果集列的以下特性由选择列表中的下列表达式定义: 结果集列与定义该列的表达式的数据类型、大小、精度以及小数位数相同。...FROM 子句可以指定 一个或多个表或视图 两个或多个表或视图之间的联接(join) 一个或多个派生表,这些派生表是 FROM 子句中的 SELECT 语句,由别名或用户指定的名称引用。
外键约束 主键约束(PRIMARY KEY): 约束在当前表中,指定列的值非空且唯一. 外键约束(FOREIGN KEY): A表中的外键列的值必须引用于于B表中的某主键列....规定: employee表中的deptno列的值,应该来源于department表中的主键列deptno, 我们就把employee表中的deptno列称之为外键列. ----...内连接分为:隐式内连接、显示内连接,其查询效果相同。 隐式内连接: SELECT FROM A ,B WHERE A.列 = B.列 显示内连接(推荐写法):....SELECT FROM A [INNER] JOIN B ON A.列 = B.列 需求:查询所有商品的名称和分类名称: 使用表名前缀在多个表中区分相同的列。...在不同表中具有相同列名的列可以用表的别名加以区分。 使用别名可以简化查询。 使用表名前缀可以提高执行效率。
非关系型数据库NoSql 主要包含:MongoDB,Redis,HBase… RDBMS专业术语 表:具有固定的列数,和任意的行数 数据库:数据库是一些关联表的集合 列:一个数据项 Field 字段...索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。 MySql介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。...:被合并的两个结果:列数、列类型必须相同。...因为更新表时, MYSQL不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段, 会调整因为更新所带来的键值变化后索引的信息 索引分类 单值索引 一个索引只包含间个列,一个表可以有多个单值索引...查询中排序的字段,排序的字段若通过索引去访问将大提升排序速度 索引能够提高检索的速度和排序的速度 查询中统计或分组的字段 分组的前提是必排序 什么是视图 视图是一个虚拟表,其内容由查询定义。
描述 UNION将两个或多个查询组合为一个查询,该查询将数据检索到结果中。 由UNION组合的查询可以是由单个SELECT语句组成的简单查询,也可以是复合查询。...可以指定一个SELECT中的NULL列与另一个SELECT中的数据列配对,以匹配列的数量。...结果列名取自联合的第一个分支中的列(或列别名)的名称。 在两个分支中对应的列没有相同名称的情况下,在所有分支中使用相同的列别名来标识结果列可能会很有用。...如果任何UNION分支中的任何列是空的,则结果列元数据报告为空的。 UNION结果中的字符串字段具有相应SELECT字段的排序规则类型,但如果字段排序规则不匹配,则分配精确排序规则。...例如,值33(数据类型NUMERIC(9))和33.00(数据类型NUMERIC(9,2))并不被认为是相同的。 具有不同排序规则的字段没有相同的值。
列,一列包含了相同类型的数据。 行,一行是一组相关的数据。 冗余,存储两倍数据,冗余降低了性能,但提高了数据的安全性。 主键,是唯一的,一个数据表中只能包含一个主键。 外键,用于关联两个表。...表头为每一列的名称,列为具有相同数据类型的数据的集合,行为每一行用来描述某条记录的具体信息,值为行的具体信息,每个值必须与该列的数据类型相同,键的值在当前列中具有唯一性。...order by后面可以跟多个不同的排序字段。...SELECT 列名称 FROM 表名称 SELECT * FROM 表名称 SELECT LastName,FirstName FROM Persons SQL SELECT DISTINCT 语句 在表中...Update 语句用于修改表中的数据。 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 DELETE 语句用于删除表中的行。
表是某种特定类型数据的结构化清单。 存储在表中的数据是同一种类型的数据或者清单 数据库中的每个表都有自己的名字,并且这个表是唯一的。 列 表是由列组成的,列存储表中某部分的信息。...列是表中的某个字段。所有的表都是由一个或者多个列组成的。 数据库中的每个列都应该是具有的相同数据类型datatype。数据类型定义了列可以存储哪些数据类型。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...它的语句都是由简单的、具有描述性的英文单词组成的 3、SQL虽然简单,但是实际上是一种很强有力的语言,灵活使用去语言元素,可以进行复杂和高级的数据库操作 检索数据 本章中介绍的是如何使用select语句从表中检索一个或者多个数据列...如果它不是最后的子句,那么就会报错。 按多个列排序 在实际的需求中,我们经常会遇到根据多个列进行排序。比如根据员工的姓名排序,如果姓相同,再根据名字进行排序。
联接提供了将一个表中的数据与另一个表中的数据链接起来的方法,并且经常用于定义报表和查询。 有几种表示联接的语法形式。首选形式是在SELECT语句中指定显式联接表达式作为FROM子句的一部分。...在连接前加上单词NATURAL,说明正在连接具有相同名称的两个表的所有列。 由于NATURAL连接对具有相同名称的所有列自动执行相等条件,因此不可能指定on子句或USING子句。...对于NATURAL连接的两个操作数,只支持简单的基表引用(不支持视图或子查询)。 只能将NATURAL连接指定为连接表达式中的第一个连接。 NATURAL连接不会合并名称相同的列。...ON子句只能引用位于JOIN操作数中的列。 多个连接中的语法优先级可能会导致ON子句失败。...重复的列名被忽略。 USING子句不会合并名称相同的列。 USING子句是表示ON子句中表达的相等条件的一种简单方式。
❑同时,每个 SELECT 语句中的列的顺序必须相同。...您可以使用 AS 子句来应用新名称。 SELECT INTO 语句可用于通过另一种模式创建一个新的空表。...我们可以从一个表中复制所有的列插入到另一个已存在的表中: INSERT INTO table2 SELECT * FROM table1; 或者我们可以只复制希望的列插入到另一个已存在的表中: INSERT...语法 CREATE DATABASE dbname; CREATE TABLE 语句用于创建数据库中的表。 表由行和列组成,每个表都必须有个表名。...FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。 CHECK - 保证列中的值符合指定的条件。 DEFAULT - 规定没有给列赋值时的默认值。
领取专属 10元无门槛券
手把手带您无忧上云