https://www.cnblogs.com/longhai3/longhai

MYSQL>>笔记2-1-3

Posted on 2022-02-12 23:32  凡是过去,皆为序曲  阅读(207)  评论(0编辑  收藏  举报

我们在本章需要了解,掌握数据库、数据库系统、数据库管理系统的基本概念,了解数据库技术发展经历的三个阶段,掌握关系模型、SQL语言的基本概念,掌握MySQL的安装、配置、启动、登录等操作,了解常用图形化工具的使用。

数据库可以理解为excel,但是与excel不同之处在于关系模式,也就是相互之间的关系。

数据库的基本概念:

数据(Data):不仅包括普通意义上的数字,还包括文字、图像、声音等。也就是说,凡是在计算机中用来描述事物的信息都可称作数据。

数据库(Database,DB):是按照数据结构来组织、存储和管理数据的仓库。

数据库管理系统(Database Management System,DBMS):专门用于创建和管理数据库的一套软件,介于应用程序和操作系统之间,如MySQL、Oracle等。

数据库应用程序:在很多情况下, DBMS无法满足用户对数据库的管理。此时,就需要使用数据库应用程序与DBMS进行通信、访问和管理DBMS中存储的数据。

数据库系统(DataBase System,DBS):是指在计算机系统中引入数据库后的系统,除了数据库,还包括数据库管理系统、数据库应用程序等。

数据库技术:是计算机领域重要的技术之一。主要应用在互联网、银行、通讯、政府部门、企事业单位、科研机构等领域,都存在着大量的数据。

信息是现实世界事物的存在方式或运动状态的反映,它通过符号、信号等具体形式表现出来。是客观存在的,数据是信息,但信息不一定是数据,数据是信息的物理实体,是具体表现形式,是信息的载体,信息是变化的,不一定是真实的,是一切物质和事务的属性,信息的符号化就是数据,信息是数据的逻辑意义(物理意义),信息可以独立存在

 

数据库技术研究的意义

  • 如何对数据进行有效的管理,包括如何组织和存储数据。
  • 如何在数据库系统中减少数据存储冗余(处理重复数据)、实现数据共享(区分前两个阶段)、保障数据安全(钱),以及高效地检索和处理数据。

(聚类分析)

数据库技术的发展:
任何一种技术都不是凭空产生,而是经历了长期的发展过程。通过了解数据库技术的发展历史,可以理解现在的数据库技术是基于什么样的需求而诞生的。

数据库技术的发展主要分为3个阶段,分别是人工管理阶段,文件系统阶段和数据库系统阶段

人工管理阶段:人工进行处理

文件系统阶段:

文件系统阶段的特点:

  • 数据在计算机外存设备上长期保存,可对数据反复进行操作。
  • 通过文件系统管理数据,文件系统提供了文件管理功能和存取方法。
  • 在一定程度上实现了数据独立性和共享性,但都非常薄弱。

数据库系统阶段:

为了提高数据管理的效率,解决多用户、多应用程序共享数据的需求,数据库技术应运而生,由此进入了数据库系统阶段。

数据库系统阶段的特点:

  • 数据结构化:数据库系统实现了整体数据的结构化,这是数据库主要的特征之一。
  • 数据共享:数据只需保存一份,其他软件都通过数据库系统存取数据。
  • 数据独立性高:数据的独立性包含逻辑独立性和物理独立性。
  • 数据统一管理与控制:包含安全控制、完整控制和并发控制。

数据模型

数据库的类型通常按照数据模型(Data Model)来划分。

数据模型是数据库系统的核心和基础。

数据模型是对现实世界数据特征的抽象,用来描述数据,可理解成一种数据结构。

在数据库的发展过程中,出现了3中基本的数据模型,层次模型,网状模型和关系模型,建立在关系模型上的数据库称为关系数据库。

数据建模

数据建模是对现实世界中的各类数据的抽象组织,以确定数据库的管辖范围、数据的组织形式等。

将文字转换为E-R图,将E-R转换为二维表,就是我们所主要需要学习的东西

基本概念

1.实体(Entity)是指客观存在并可相互区分的事物。

例如,学生、班级、课程都是实体。实体就是一个个具体的事物,比如我是一个学生,一个老师,一个班级,这是都是实体

2.属性(Attribute)是指实体所具有的某一特性,一个实体可由若干个属性来描述。属性就是具体的事物的细分

例如,学生实体的属性有学号、学生姓名和学生性别。

3.属性由两部分组成,分别是属性名和属性值。

例如,学号和学生姓名是属性名,而“1、张三”这些具体值是属性值。(1是学号,学生姓名是张三)

4.联系(Relationship)是指实体与实体之间的联系,有一对一、一对多、对多对三种情况。如果以下三种情况在哪里加外键

当1对1时 无

1对N,在n那边加外键

M对N,新建一个表去进行1对1

5.E-R图

E-R图也称为实体-联系图(Entity Relationship Diagram)。

E-R图是一种用图形表示的实体联系模型,由Peter Chen于1976年提出。

E-R图提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。

在E-R图中:

实体:用矩形框表示,将实体名写在框内。

属性:用椭圆框表示,将属性名写在框内,用连线将实体与属性连接。

联系:用菱形框表示,将联系名写在框内,用连线将相关的实体连接,并在连线旁标注联系类型(一对一“1:1”、一对多“1:n”、多对多“n:m”)。

关系(Relation)一词与数学领域有关,它是集合基础上的一个重要的概念,用于反映元素之间的联系和性质。

从用户角度来看,关系模型的数据结构是二维表,即通过二维表来组织数据。

一个关系对应一张二维表,表中的数据包括实体本身的数据和实体间的联系。

关系模式(Relation Schema):是关系的描述,通常可以简记为“关系名(属性1,属性2,…,属性n)”。

例如,学生(学号,姓名,性别,出生年月)。

属性(Attribute):二维表中的列称为属性,每个属性都有一个属性名。

元组(Tuple):二维表中的每一行数据称为一个元组。

域(Domain):域是指属性的取值范围,例如,性别属性的域为男、女。

键(Key):在二维表中,唯一标识某一条记录,又称为关键字、码。一般称之为主键,而经过其他表引入的称为外键

例如,学生的学号具有唯一性,学号可以作为学生实体的键。而学生姓名可能存在重名,不适合作为键。

关系模型的完整性:为了保证数据库中数据的正确性和相容性,需要对关系模型进行完整性约束。完整性通常包括实体完整性、参照完整性和用户自定义完整性

  • 实体完整性:要求关系中的主键不能重复,且不能取空值。空值是指不知道、不存在或无意义的值。
  • 参照完整性:要求关系中的外键要么取空值,要么取被参照关系中的某个元组的主键值。
  • 用户自定义完整性:是用户针对具体的应用环境定义的完整性约束条件,由DBMS检查用户自定义的完整性。

每个表中应该含有的信息,一共4个表

零件表:(零件号,零件名,单价)

产品表:(产品号,产品名,型号)

供应商表:(供应商号,供应商号,地址)

数量表:(零件号,产品号,供应商号,数量)

供应是这4个表之间的联系

 =======================================================================================================================

第二章:数据库基本操作

    2.1 数据库操作:

创建数据库:create database 数据库名称

创建相同名称的数据库:create database if not exists 数据库名称(与前一个名称相同)

if not exists 作用:创建两个相同名称的数据库,程序会报错,加if not exists后程序不再报错,但是会返回一条警告消息

查看错误信息:show warns

查看数据库:1.查看MySQL服务器下所有数据库:show databases

2.查看指定数据库的创建信息show create database 数据库名称

选择数据库:use 数据库名称

删除数据库:drop database 数据库名称

添加注释:/*   */

                                             

注意:1.换行、缩进和结尾分隔符,多行书写时可以按回车键换行,在命令行窗口也可以使用"\g"结尾,效果与分号相同。2.大小写问题:MySQL的关键字在使用时不区分大小写。3.反引号的使用:为了避免自定义名称与系统的命令(例如关键字)冲突,最好使用反引号('')包裹数据库名称、字段名称和数据表名称。

 2.2 数据表操作:

创建数据表:create table 表名

查看数据表:show tables   (查看数据表)/show table status [from 数据库名](from+数据库名:该条信息从哪个库来的,[]表明括号内为非必选项)

修改数据表:

1.修改数据表名称:alter table 旧表名 rename [to|as] 新表名/rename table 旧表名1 to 新表名1[,旧表名2 to 新表名2]......

2.修改表选项:alter table 表名

 

查看表结构:

1.查看数据表的字段信息:desc 数据表名(查看所有字段的信息)desc 数据表名 字段名(查看指定字段的信息)

 

2.查看数据表的创建语句:show create table 表名

3.查看数据表结构:show [full] coumns from 数据表名[from 数据库名]/show [full] columns from 数据库名.数据表名

修改表结构:

1.修改字段名:alter table 数据表名 change 旧字段名 新字段名 字段类型[字段属性]

2.修改字段类型:alter table 数据表名 modify 字段名 新类型[字段属性]

3.修改字段位置:alter table 数据表名 modify 字段名1 数据类型[字段属性][first|after 字段名2]

4.新增字段:alter table 数据表名 add 新字段名 字段类型[first|after 字段名]/alter table 数据表名 add (新字段名1 字段类型1,新字段名2 字段类型2,.....)

5.删除字段:alter table 数据表名 drop 字段名

6.删除数据表:drop table 数据表1[,数据表2]...

补充关于modify:

2.3 数据操作:

添加数据:

为所有字段添加数据:insert [into] 数据表名

为部分字段添加数据:insert [into] 数据表名(字段名1[,字段名2]...)

一次添加多行数据:insert [into] 数据表名 +多行数据

查询数据:

1.查询表中全部数据:select * from 数据表名

2.查询表中部分字段:select {字段名1,字段名2,字段名3,...} from 数据表名

3.简单条件查询数据:select * /{字段名1,字段名2,字段名3,...}from 数据表名 where 字段名 =值

修改数据:

update 数据表名 set 字段名1 =值1[,字段名2 =值2,...][where条件表达式]

删除数据:delete from 数据表名 [where条件表达式]

删除数据有两种情况:1.删除指定行:delete from 表名 where 条件

 2.删除所有表中数据:delete from 表名     注意区分 delete 和 drop table

 

 

第三章:数据类型与约束

3.1 数据类型:

数字类型:整数类型(int)/浮点数类型(float单精度/double双精度)/定点数类型(decimal,通过decimal(M,D)设置位数,精数)/BIT类型(BIT(M),M为位数,1-64位)

时间和日期类型:date/datetime

字符串类型:char(固定长度字符串(定长))/varchar(可变长度字符串(不定长))/text(文本)

3.2 表的约束

(共五种,可以在创建表时设置,也可以在修改表结构时调整/添加):

默认约束(表中字段为默认值,若为数值,直接写入;若为字符,由单引号引起):字段名 数据类型 default 默认值(BLOB,text不支持)

非空约束(该字段必有值,不为空):字段名 数据类型 not null

唯一约束(该字段可为空,但是若有数据则不可重复,只能唯一存在):unique(字段名1,字段名2,...)

主键约束(表中必有约束,唯一且不为空,一般写primary key 无需再写not null,可以是单字段做主键,也可以是多字段做主键,即primary key(a,b)):primary key (字段名1,字段名2,...)

外键约束(将表进行关联,即ER图中的联系):constraint 外键名 foreign key 字段名 references 主表名(字段名)

第四章

 4.2 数据库设计范式:

由于本章所学不多只搞好范式即可

第一范式(NF)(数据不可分):指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也就是实体中的某个属性能有多个值,或者不能有重复的属性

第二范式(2NF)(2NF遵从唯一性,非主键字段需完全依赖主键):以NF为基础,满足2NF的前提是满足NF,2NF要求实体的属性完全依赖于主键,不能仅依靠主键的一部分(对于复合主键而言)

第三范式(3NF)(非主键字段不能相互依赖):以2NF为基础,满足3NF的前提是满足2NF,3NF要求一个数据表中每一列数据都和主键直接相关,而不能间接相关

 

第五章:单表操作

5.1数据操作:

清空数据:truncate [table] 表名

去除重复记录:select 字段列表 from 数据表表名 (select distinct 字段名 as 用户编号 from 表名 where uid=‘1001’(附加条件))

5.2排序与限量:

一、排序:

1.单字段排序:select */字段列表(字段名)(具体行或者列) from 表名 order by 字段名 asc/desc(升序/降序)

2.多字段排序:select */字段列表 from 表名 order by 字段名1 asc/desc [,字段名2 asc/desc]....

限量:Select */具体行或者列 from 表名 where order by ()asc/desc (限制条件,升序/降序) limit 数字/m[,n](从第m+1行开始,共显示n行数据)      eg:0,2(从第0+1行开始显示2行数据)

5.3分组与聚合函数:

分组统计:select 字段名 from 表名 where条件表达式 group by 字段名

分组排序:select 字段名 from 表名 where条件表达式 group by 字段名 [asc/desc]

多分组统计:select 字段名 from 表名 where条件表达式 group by 字段名1 [asc/desc],[,字段名2[asc/desc]]....

统计筛选:select 字段名 from 表名 where条件表达式 group by 字段名 [asc/desc],having条件表达式

别名:select 原名称 as 想改的名称(改名) 或者 select 原名称 想改的名称(去掉as) from 所在表名

聚合函数:count(统计数量),sum(求和),avg(平均值),max(最大值),min(最小值)    select字段名,count/max/…(限制条件) from表名 group by 主键

拓展:

一、Where与having条件:select from where 条件 group by … having 条件二者区别:

1.语法位置不同

2.执行顺序(先where,在分组;having只能跟在分组结果上筛选数据)

3.统计函数不能写在where之后

                                             

二、数据查询结构式:

select *列名,列名|函数|表达式 from 表名 where 条件(不能写函数)group by.列名.having.条件(可以写函数) order by 列名 limit m[,n](m,n是数字)

三、

6类条件:

(1)表达式=、 >、<、 >=、<=、!=、<>

(2)逻辑查询 A and B (AB条件都满足)、 A or B(AB条件满足一个即可)

(3)模糊查询 字段名 like '王%'    _ 1个字符 %表示0或多个字符

(4)空值查询 null 、not null select...from... where  字段名 is null    注意:不要写  字段名=null

(5)范围查询 between ..x.and...y not between...and...    注意:可以与>= <=互换,包括x,y

(6)列表in查询  in(a,b,c,...)    注意:可以同or互换

第六章:多表操作

    6.1多表查询:

连接查询:

1.交叉查询(表1的第一行把表2的所有行连一遍,表1的第二行把表2的所有行连一遍,以此类推):select 查询字段(例如c.cid cid,c.name cname,g.id gid,g.name gname) from 表1 fross join 表2

2.内连接:select 查询字段 from 表1 join 表2 on 匹配条件

3.左外连接:select 查询字段 from 表1 left join 表2 on 匹配条件

4.右外连接:select 查询字段 from 表1 right join 表2 on 匹配条件

随心,随记

https://www.cnblogs.com/w1hg/331817