快速,持续,稳定,傻瓜式
支持Mysql,Sqlserver数据同步

MySQL数据库知识学习一)SQL与基本知识

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

MySQL是一个关系数据库。由于MySQL是开源,免费且易于扩展的,因此它在Java企业开发中非常常用。因此,我决定从一开始就学习MySQL知识,具体路线如下:

数据模型是用于抽象,表示和处理现实世界中的数据和信息的工具,它是对现实世界的模拟,并且是数据库系统的核心和基础。

数据抽象分为三个级别:物理层,逻辑层和视图层

逻辑层中使用的数据模型包括两种类型:

  1. 概念数据模型:主要用于数据库设计,可以为一般用户所理解,它与人们表达思想的方式相对接近。这些模型包括实体关系模型(ERM)
  2. 逻辑数据模型:从计算机系统的角度对数据进行建模,使数据更适合于计算机表示。该模型主要用于关系模型,面向对象模型,层次模型和网格模型等DBMS的实现。

设计人员构建数据库模式的方法通常是使用E-R模型在较高级别上对数据建模,然后将其转换为关系模型。在物理层使用的数据模型称为物理数据模型。

数据模型通常由三部分组成: 数据结构,数据操作和完整性约束

SQL语言分为四类:数据查询语言DQL,数据操作语言DML,数据定义语言DDL,数据控制语言DCL

数据查询语言DQL:

数据查询语言DQL的基本结构是由 SELECT 子句, FROM 子句和 WHERE 子句组成的查询块:

选择\ lt;字段名称表来自\ lt;表格或视图名称在哪里;查询条件

SELECT * FROM lmapp.lm_addr,其中uid如” U1351106%”;

数据操作语言DML:

更新,添加和删除记录在数据库表中,不包含查询,DML的数据操作语言主要有三种形式:

1)插入:插入?

插入到tmp(medid,searchid)值(12345,54321);?

2)更新:更新?

更新tmp设置searchid =” 1″,其中medid =” 12345″ ;

3)删除:删除?

从mpid中删除,其中medid =’12345′;

数据定义语言DDL:

数据定义语言DDL用于在数据库中创建各种对象-表,视图,索引,同义词,聚类等:

创建表/视图/索引/SYN/集群(表视图索引同义词簇)?

以下是用于创建MySQL表的常规SQL语法:

?-CREATE TABLE table_name(column_name column_type);

数据控制语言DCL:

数据控制语言DCL用于授予或回收访问数据库的某些特权,并控制数据库操作事务的时间和效果以及监视数据库。如 :?

1) GRANT :授权。 ?

2)撤消:撤消授权。 ?

3)回滚[WORK]到[SAVEPOINT]:回滚到某个点,rollback命令将数据库状态返回到最后一次提交的状态。其格式为:? SQL \回滚;?

4)提交[工作]:提交。在数据库中进行插入,删除和修改操作时,仅当事务提交到数据库后才完成。

根据数据的不同抽象级别,数据库具有三个模式级别: 外部模式,概念 模式和内部模式。

数据库内模式:也称为存储模式,它描述数据库的物理结构和存储方法,并且是在数据库中表示数据的方式。数据库只有一种内部模式。 内部模式反映了数据库系统的存储概念。

概念模式:也称为模式或逻辑模式,它对应于概念级别。它是数据库设计者构建的一种全局逻辑结构,用于根据统一的观点综合所有用户的数据。它是对数据库中所有数据的逻辑结构和特征的一般描述,并且是所有用户的通用数据视图(全局视图)。它由数据库管理系统提供的数据描述语言(DDL)进行描述和定义。 概念模型反映了数据库系统的整体视图。

数据库外模式:也称为子模式或用户模式,它描述了数据库用户可以查看和使用的本地数据的逻辑结构和特征,以及数据库用户的数据视图。通常是模式的子集。数据库可以具有多种外部模式。用户可以通过外部模式描述语言描述和定义与用户相对应的数据记录(外部模式),也可以使用数据操作语言(DML)操作这些数据记录。 外部模型反映了用户对数据库系统的感知。

E-R图由以下元素组成:

  1. 矩形,代表实体类型;
  2. 椭圆,代表属性;
  3. 钻石,请与代表联系;
  4. 线段,它连接属性和实体,或连接实体类型和连接。

关系模型包括三个部分:关系数据结构,关系操作集和关系完整性约束。在关系模型中,实际实体和实体之间的关系由关系表示。

关系模型中通常使用的关系操作包括:选择,投影,连接,划分,合并,交集,差异和其他查询操作以及添加,删除和修改。关系运算的特征是设定的运算模式,即运算的对象和结果都是设定的。关系运算可以通过两种方式定义:基于代数的定义称为关系代数;基于代数的定义称为关系代数。基于逻辑的定义称为关系演算。由于使用的变量不同,关系演算分为元组关系演算和域关系演算。

关系模型允许定义三种类型的完整性约束:实体完整性,引用完整性和用户定义的完整性。其中,实体完整性和引用完整性是关系模型必须满足的完整性约束。 实体完整性规则是:关系的主代码不能为null。参照完整性规则是:外码必须是另一个表中主码的有效值或”空值”。

关系数据库系统支持三级模型结构。 模式(数据库),外部模型和内部模型中的基本对象包括表和视图以及索引。因此,SQL数据定义功能包括模式定义,表定义,视图定义和索引定义。 SQL通常不提供修改模式定义,修改视图定义和修改索引定义。如果用户要修改这些对象,则只能删除它们,然后重建它们。

1.创建表格

使用 CREATE TABLE基本表名语句创建表,并按如下方式创建学生表:

其中学生是表名,表的所有列都用括号括起来,各列之间用逗号分隔,并且每列的名称为唯一列名是数据类型,后跟列完整性约束, PRIMARY KEY 关键字指定表的主键的哪一列,这里是 sid AUTO_INCREMENT 表示sid是自增的; 引擎 = InnoDB 表示数据库的存储引擎。

应该注意的是,创建的表名不能存在于数据库中,否则会发生错误。如果要覆盖表,则必须先删除然后重建。

NULL值:

NULL值是没有值或缺少值。允许NULL值的列也被允许在不给出列值的情况下插入行,不允许NULL值的列和没有值的行也被接受。每个表的列只能是NULL或NOT NULL。默认值为NULL。例如,对于上面的学生表,学生ID sid,姓名sname和年龄贤者不允许为空,但地址saddress可以为空。

请注意,不要将NULL值与空字符串混淆,NULL值没有值,并且“”(两个单引号不要之间的字符)。

主键:

可以唯一标识元组的属性或属性组称为关系关键字或候选关键字。如果一个关系有多个候选键,则可以选择一个作为主键(Primary?Key)。

主键必须不允许NULL值,并且允许多列形成唯一标识的主键,并且这些列都不能为空

使用默认值:

如果在插入行时未给出任何值,则MySQL可以使用默认值。默认值由关键字 DEFAULT 指定。上表中的年龄默认为18.MySQL不允许将函数用作默认值,只能使用常量,请尝试使用默认值而不是null。

存储引擎:

MySQL具有多个内部引擎,用于特定的数据管理和处理,可以通过ENGINE =引擎名称指定,默认为InnoDB引擎,有关详细信息,请参见本文

2.修改表格

使用 ALTER吗? TBALE表名? 更改表,更新表定义而不是数据。并且在理想状态下,一旦存储了数据,就不应更改表,因此表的设计需要大量时间,并尽可能避免以后更改。

以下语句添加phone列,并删除表sutdent的列。表名必须存在,否则报告错误。

更改了吗? TBALE的常用用法是定义外键。

3.删除表格

使用 DROP TABLE 删除表,整个表被删除,而不仅仅是内容。删除后,将无法撤消。

重命名表可以重命名一个表或多个表。语法是:RENAME TABLE student TO stu;

1.SELECT语句

select语句查询至少提供两条信息:您要选择的内容以及从何处选择

SQL查询返回的数据顺序不是特殊的,它可以是加法顺序,也可以不是,只要返回相同数量的行,它是正确的。

SQL不区分大小写,但是常规关键字是大写字母,您定义的列和表名是小写字母,所有空格都被忽略。

2.排序和检索数据

ORDER BY子句可以清楚地指定SELECT语句查询数据的顺序,如下所示:

3.过滤数据

WHERE子句用于提取满足指定条件的那些记录。

运算符是WHERE子句的运算符

之间

运算符 说明
= 等于
\ lt; \ gt; 不相等。 注意:在某些版本的SQL中,该运算符可以写为! =
\ gt; 大于
\ lt; 小于
\ gt; = 大于或等于
\ lt; = 小于或等于
在一定范围内
喜欢 搜索模式
IN 为一列指定多个可能的值

AND \ OR

IN \ NOT

像通配符

在SQL中,通配符与SQL LIKE运算符一起使用。 SQL通配符用于搜索表中的数据。

通配符 说明
替换0个或更多字符
_ 替换字符
[字符列表] 字符列中的任何单个字符
[^ 字符列表]

[! 字符列表]

不在字符中

简而言之,

在where子句中可以使用以下运算符:

  • 算术运算符
  • 逻辑运算符
  • 字符串匹配运算符,包括like,not like
  • 集合成员运算符,包括,而不是
  • 谓词,包括存在的所有,全部,唯一的
  • 聚合函数,包括平均,最小值,最大值,总和和计数
  • 也可以是另一个select语句

select语句的完整语法:

选择?目标表的列名或列表达式序列

来自?基本表名和/或视图顺序

[在哪里?线条件表达式]

[按列名称顺序分组]

? [具有组条件表达式]

[按列名排序[asc | desc]]

整个语句的执行过程如下:

1)?读取基本表的数据并在from子句中查看并执行笛卡尔积运算;

2)?选择满足where子句中给出的条件表达式的元组;

3)?根据group子句中指定列的值进行分组,并在having子句中提取满足组条件表达式的那些组;

4)?根据select子句中给出的列名或列表达式求值并输出;

5)? order子句使用附加指令对输出目标表进行升序排列,或者根据desc对其进行降序排列。

4.数据分组

GROUP BY语句用于组合聚合函数,以基于一个或多个列对结果集进行分组。

聚合函数:

  • 平均AVG()-返回平均值
  • COUNT()-返回行数
  • FIRST()-返回第一条记录的值
  • LAST()-返回最后一条记录的值
  • MAX()-返回最大值
  • MIN()-返回最小值
  • SUM()-返回总和

5.子查询

一个SELECT语句返回的查询结果在另一个SELECT语句的WHERE子句中使用。

6.连接表

联接是一种将表与SELECT语句关联的机制。 加入不是物理测试实体,它仅存在于查询中。

7.高级连接

使用别名:除了列名和计算字段外,别名还可以别名表。您可以使用 AS 设置表的别名,以下客户别名设置为c,订单别名设置为o,从而简化了SQL语句

表别名不仅可以用于 where子句,而且还可以用于选择的列表,排序依据子句和语句的其他部分。但是,表别名仅在查询执行中使用,与列别名不同,表别名不会返回给客户端。

使用自连接: 自连接(与同一张表连接),例如:找到项目时(ID我s DTNTR)存在问题,因此我们想知道生产这些项目的供应商的其他项目是否也存在这些问题。步骤:首先找到生产ID为DTNTR的物料的供应商,然后从该供应商中查找其他物料。

使用自然连接: 这种连接通常只能通过使用通配符来选择那些唯一的列。 (选择*)用于表,并将子集显式用于所有其他表列。通配符仅用于第一个表,所有其他列均已明确列出,因此不会检索重复的列。

使用外部联接: 联接所包含的行在相关表中没有关联的行。这种连接称为”用于外部连接”。相反,仅包含具有相关行的那些行的连接称为内部连接。

将联接与聚合函数一起使用 : >

8.组合查询

UNION 执行多个查询(多个SELECT语句),并将结果作为单个查询结果集返回,并取并。

9.插入,更新和删除数据

10.使用视图

视图(视图):根据用户需要从一个或几个基本表中创建一个虚拟表。

  • 视图是一个虚拟表,它仅在存储视图时存储视图的定义,而不存储对应的数据
  • 视图仅在打开时按定义从基表中收集数据,并将其呈现给用户

根据以下示例可以理解视图的使用:

参考文章:

” MySQL必须知道必须知道”

https://segmentfault.com/a/1190000019619667#articleHeader0

https://zhuanlan.zhihu.com/p/60031703

相关推荐

 
QQ在线咨询
售前咨询热线
QQ1922638