MySQL(1-3章知识点)

 

   第一章知识点总结

### 一、MySQL的特点:

1.运行速度:
MySQL的运行速度相当快,My5QL开发人员相信它是目前最快的数据库系统之一。你可以查询一下最近 10年来MySQL的排名,它一直在数据库开发排行榜的前三名。MySQL一直在进步,尤其是在InnoDB(它现在是默认的存储引擎)和查询优化器方面。
2.易用性:
MySQL是一个相对简单的、高性能数据库系统,与其他大型数据库系统相比,它的设置和管理都要简单很多。
3.SQL支持:
MySQL支持的结构化查询语言(Structured Query Language,SQL),是目前所有现代数据库系统都选用的标准语言。在上一小节中,我们介绍了很多主流的数据库,在这些数据库中除了MongoDB是典型的NoSQL外,其他数据库都支持SQL。因此,有很多的软件开发企业和互联网企业在招聘时通常要求应聘者“熟练使用MySQL、SQLServer、Oracle一种或多种数据库”,而不会严格要求会使用哪一种具体数据库。
4.功能性:
MySQL服务器支持多线程,因此允许多个客户端同时与它连接。每个客户端可以使用多个数据库。与MySQL进行交互的接口很多,通过他们可以输入查询命令,并查看查询结果。主要的接口类型包括命令行客户端、Web浏览器和GUI客户端等。此外,它还提供了多种语言编程接口,其中包括C、Perl、Java、PHP、Python和Ruby。也可以通过支持ODBC、JDBC和ADO.NET的应用程序来访问 MySQL。也就是说,你可以选择使用预先打包好的客户端软件,也可以编写自己的应用程序。
5.连接性与安全性:
MySQL完全支持网络化,用户可以从因特网上的任何地点来访问数据库,因此你可以与任何地方的任何人共享数据。由于MySQL拥有访问控制功能,它可以保证连接的一方完全无法看到另一方的数据。为了提供更多的安全防护,MySQL还支持使用安全套接层(Secure Sockets Layer,SSL)协议加密的连接。
6.可移植性:
MySQL除了可以运行在Windows系统上以外,还可以运行在各种版本的Unix和Linux系统上。可以运行MySQL硬件包括各种类似路由器和个人电脑那样的小型设备,也包括那些拥有多个CPU和大容量内存的高端服务器。

7. 可用性和成本: 
Mvsau是一个开源项目,有多种许可条款可供选择。首先,可以选择GNU通用公共许可(Senerel Public License,GPLy).这意味着SL对于大部分内部使用都是免费的。其次,对于那些愿意接受或者需要正规服务的组织,以及那些不想受到GPL许可约束的机构,可以选择商业许可。

8. 公开发行和源代码:
  获取MySQL的方法很简单,只需要使用浏览器即可。如果对某些工作原理有不太明白的地方,或者对某个算法感到好奇,或者想要进行安全审查,你可以获取它的源代码,并
  对它进行检查。

  ## 二、MySQL如何选择数据类型:

MySQL提供了大量的数据类型,为了优化存储,提高数据库性能,在任何情况下均应使用最精确的类型。既在所有可以表示该列值的类型中,该类型使用的存储最少。
整数和浮点数
1.
如果不需要小数部分,则使用整数来保存数据;如果需要表示小数部分,则使用浮点数类型。
浮点数包括FLOAT与DOUBLE类型。FLOAT类型的精度低于DOUBLE类型。因此,如果需要存储精度较高时,应选择DOUBLE类型。
2. 浮点数和定点数
  浮点数FLOAT、DOUBLE相对于定点数DECIMAL的优势是:在长度一定的情况下,浮点数能表示更大的数据范围。但是由于浮点数容易产生误差,因此对精确度要求比较高时,建议使用DECIMAL类型来存储。DECIMAL在MySQL中是以字符串存储的,用于定义货币等对精确度要求较高的数据。另外FLOAT和DOUBLE类型在进行减法和比较运算时也容易出问题,因此在进行计算的时候,一定要小心。如果进行数值比较,最好使用DECIMAL类型。
  3.日期与时间类型
  MySQL对于不同种类的日期和时间提供了很多的数据类型。可以针对要存储的数据选择适当的数据类型。例如:
  存储生日,可以选择DATE
  存储订单时间,可以选择DATETIME或TIMESTAMP。注意TIMESTAMP的取之范围小于DATETIME。
  如果只需要存储年份,则可以使用YEAR。
  4.CHAR 与 VARCHAR
  两者之间区别在于:
  1)CHAR是固定长度字符,VARCAHR是可变长度字符串。
  2)CHAR会自动删除插入字符串时的尾部空格,VARCHAR不会自动删除尾部空格。
  3)CHAR是固定的长度,所以它的处理速度比VARCHAR的速度更快,但是它的缺点就是浪费存储空间。所以对存储要求不大,但在速度上有要求的可以使用CHAR类型,反之可以使用VARCHAR类型来实现。例如:如果要存储学生的学号、员工编号、订单编号、身份证号等这些长度固定但有明确业务要求的信息时可以考虑使用CHAR。如果要存储家庭地址、姓名、联系方式等这些长度不固定的信息时可以考虑使用VARCHAR。
  5.BLOB与TEXT
  BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息。BLOB主要存储图片、音频信息等,而TEXT只能存储纯文本文件。

  #                    第二章知识点总结

### 一、设计数据库的必要性

数据库中创建的数据表的结构,以及数据实体之间的复杂关系是决定数据库系统工作效率的重要因素。
1.糟糕的数据库设计具有以下不足。
       *效率低下
       *更新和检索数据会出现异常
良好的数据库设计具有以下优点。
        1.效率高
        2.便于进一步扩展
        3.使得应用程序的开发变得更容易。

### 二、数据库设计的步骤

数据库设计分为6个阶段。
1.需求分析阶段
准确了解与分析用户需求,是整个设计过程的基础,也是最困难、最耗费时间的阶段。
2.概念结构设计阶段
这一阶段是整个数据库设计的关键,通过对用户需求进行综合、归纳及抽象,形成一个独立于具体DBMS的概念模型,同时在这个阶段绘制E-R模型图。
3.逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
4.数据库物理设计阶段

为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5.数据库实施阶段
运用DBMS提供的数据语言、工具,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库并进行试运行。
6.数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正式运行。在运行过程中必须不断地对其进行评价、调整及修改。
无论数据库的复杂程度如何,在进行数据库分析设计时,都需要执行收集信息、标识实体、标识实体的属性及标识实体的关系4个步骤。

### 三、实施数据完整性

1.域完整性(主键约束、唯一约束、标识列)

2.列完整性(非空约束、默认约束)

3.引用完整性(主外键关系)

4.自定义完整性

###  四、简单熟悉数据库范式

​    第一范式(1NF):字段值具有原子性,不能再分(所有关系型数据库系统都满足第一范式);

​      例如:姓名字段,其中姓和名是一个整体,如果区分姓和名那么必须设立两个独立字段;

​     

​    第二范式(2NF):一个表必须有主键,即每行数据都能被唯一的区分;

​      备注:必须先满足第一范式;

​     

​    第三范式(3NF):一个表中不能包涵其他相关表中非关键字段的信息,即数据表不能有沉余字段;

​      备注:必须先满足第二范式;

数据库的三范式:

①字段不可分。

②有主键,非主键字段依赖主键。

③非主键字段不能互相依赖。

​     

​    备注:往往我们在设计表中不能遵守第三范式,因为合理的沉余字段将会给我们减少join的查询;

​       例如:相册表中会添加图片的点击数字段,在相册图片表中也会添加图片的点击数字段;

#                      第三章知识点总结

## 一、比较运算符

1) 等于运算(=)
= 运算符用来比较两边的操作数是否相等,相等的话返回 1,不相等的话返回 0。具体的语法规则如下:
若有一个或两个操作数为 NULL,则比较运算的结果为 NULL。
若两个操作数都是字符串,则按照字符串进行比较。
若两个操作数均为整数,则按照整数进行比较。
若一个操作数为字符串,另一个操作数为数字,则 MySQL 可以自动将字符串转换为数字。

注意:NULL 不能用于 = 比较。

2) 安全等于运算符(<=>)
<=> 操作符和 = 操作符类似,不过 <=> 可以用来判断 NULL 值,具体语法规则为:
当两个操作数均为 NULL 时,其返回值为 1 而不为 NULL;
而当一个操作数为 NULL 时,其返回值为 0 而不为 NULL。

3) 不等于运算符(<> 或者 !=)
与 = 的作用相反,<> 和 != 用于判断数字、字符串、表达式是否不相等。对于 <> 和 !=,如果两侧操作数不相等,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL。

4) 小于等于运算符(<=)
<= 是小于等于运算符,用来判断左边的操作数是否小于或者等于右边的操作数;如果小于或者等于,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL。

5) 小于运算符(<)
< 是小于运算符,用来判断左边的操作数是否小于右边的操作数;如果小于,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL。

6) 大于等于运算符(>=)

>= 是大于等于运算符,用来判断左边的操作数是否大于或者等于右边的操作数;如果大于或者等于,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL。

7) 大于运算符(>)

> 是大于运算符,用来判断左边的操作数是否大于右边的操作数;如果大于,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL。

8) IS NULL(ISNULL) 和 IS NOT NULL 运算符
IS NULL 或 ISNULL 运算符用来检测一个值是否为 NULL,如果为 NULL,返回值为 1,否则返回值为 0。ISNULL 可以认为是 IS NULL 的简写,去掉了一个空格而已,两者的作用和用法都是完全相同的。

IS NOT NULL 运算符用来检测一个值是否为非 NULL,如果是非 NULL,返回值为 1,否则返回值为 0。

9) BETWEEN AND 运算符
BETWEEN AND 运算符用来判断表达式的值是否位于两个数之间,或者说是否位于某个范围内,它的语法格式如下:
expr BETWEEN min AND max

expr 表示要判断的表达式,min 表示最小值,max 表示最大值。如果 expr 大于等于 min 并且小于等于 max,那么返回值为 1,否则返回值为 0。

### 二、逻辑运算符

SQL命令支持的逻辑运算符有And(或者&&)、Or(或者||)和Not(或者!)。
And和Or运算符连接条件,Not否定条件。And连接条件,并且仅当两个条件都为真时才返回1。Or也连接两个条件,但只要其中任意一个为真就返回1。
当一个语句中使用了多个逻辑运算符时,运算时先求Not的值,然后求And的值,最后再求Or的值。
例如可以编写教授数学和物理的男老师,的约束表达式:
(sex='男") AND(type in("数学’',物理'))。

### 三、MySQL语句增、删、改数据

一.增Insert
(特殊的如果id自动递增的话,就不需要插入id)
基本语法  insert into 表名(列1,列2,列3,列4,...)  values(值,值,值)
例子  insert into student(name,sex,age) values('张三',18,'男')


插入的另外一种形式:
insert into 表名 set 列=值,列=值,列=值,....
例子  insert into Set name = '张三',age=18

二.删delete
基本语法 delete from 表名 where 列=值
例子  delete from student where id=1
#DELETE from 表名 一行行删除整张表

三.改update
基本语法  update 表名 set 列=值,列=值,.... where...
列子  update student set name = '张三' where id=1

四.查select
1.基本的select查询语句
select * from student(查询student表中所有列)
*代表代表所有列,要查询哪一列就把*改成哪一列,可以查询一列,也可以查询多列,多列用逗号隔开
from后面跟的是表名
查询的结果包含列名和每一列的数据

2.条件查询where
基本条件查询语句  select * from student where id =1(表示查询student表中id=1的学生的所有列)
where后跟查询条件,查询的如果是字符串,要带引号

多条件查询   如果是并且条件用and 或者用or
多条件查询例子:
查询出班级号为20201001班的学生并且要求是男生,年龄大于20
SELECT * from student where class_num = '20201001' and sex = '男' and age > 20

查询出班级号为20201001班的学生或者性别为女的学生
SELECT * from student WHERE class_num = '20201001' or sex = '女'

3.#去重查询 DISTINCT
例子:查询出表当中有哪些性别   SELECT DISTI

4.模糊查询重点 模糊查询可以实现搜索功能
基本语法  like 通配符
例子  select * from student where name like '%王' 表示模糊查询name以王结束的
select * from student where name like '王%' 表示模糊查询name以王开头的
select * from student where name like '%王%' 表示模糊查询name中包含王字的

5.排序查询 ORDER BY 倒序关键字DESC
默认排序规则是根据id进行排序,并且是id从小到大    SELECT * FROM student


例子 按照年龄从低到高进行排序
SELECT * FROM student ORDER BY age

按照年龄从高到低进行排序
SELECT * FROM student ORDER BY age DESC

6.分页查询
limit关键字 限定查询多少条数据
OFFSET关键字 从第几条数据开始查询 默认第一条数据是0

查询出第二页的数据,这一页有3条数据
SELECT * FROM student LIMIT 3 OFFSET 3

知道页数和每页查询的数据(固定)
SELECT * FROM student LIMIT 数据量 OFFSET 数据量 * (页数-1)

SELECT * from student LIMIT 0,3
LIMIT 0,3 limit后一个数据表示从第几条数据查起,后面数据是查询的条数

7.聚合查询
count() :记录查询列有多少行
SUM() :求数值序列的和
AVG() :求平均数
MAX() :求最大值
MIN() :求最小值

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值