文章目录
- 前言
- 一、SQL简述
- 二、数据库的三大范式
- 三、数据库的数据类型
- 四、数据库、数据表的基本操作
- 五、数据表的约束
- 六、数据表插入数据
- 七、更新数据
- 八、删除数据
- 九、MySQL数据表简单查询
- 十、函数
- 十一、条件查询
- 十二、别名设置
- 十三、表的关联关系
- 十四、多表连接查询
- 十五、子查询
- 总结
前言
知识无底,学海无涯,到今天进入MySQL的学习4天了,知识点虽然简单,但是比较多,所以写一篇博客将MySQL的基础写出来,方便自己以后查找,还有就是分享给大家。
一、SQL简述
1.SQL的概述
Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。
2.SQL的优点
1、简单易学,具有很强的操作性
2、绝大多数重要的数据库管理系统均支持SQL
3、高度非过程化;用SQL操作数据库时大部分的工作由DBMS自动完成
3.SQL的分类
1、DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP
2、DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE
3、DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY
4、DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT
二、数据库的三大范式
1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。
2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。
3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。
三、数据库的数据类型
使用MySQL数据库存储数据时,不同的数据类型决定了 MySQL存储数据方式的不同。为此,MySQL数据库提供了多种数据类型,其中包括整数类型、浮点数类型、定点 数类型、日期和时间类型、字符串类型、二进制…等等数据类型。
1.整数类型
根据数值取值范围的不同MySQL 中的整数类型可分为5种,分别是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。下图列举了 MySQL不同整数类型所对应的字节大小和取值范围而最常用的为INT类型的,
数据类型
字节数
无符号数的取值范围
有符号数的取值范围
TINYINT
1
0~255
-128~127
SMALLINT
2
0~65535
-32768~32768
MEDIUMINT
3
0~16777215
-8388608~8388608
INT
4
0~4294967295
-2147483648~ 2147483648
BIGINT
8
0~18446744073709551615
-9223372036854775808~9223372036854775808
2.浮点数类型和定点数类型
在MySQL数据库中使用浮点数和定点数来存储小数。浮点数的类型有两种:单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。而定点数类型只有一种即DECIMAL类型。下图列举了 MySQL中浮点数和定点数类型所对应的字节大小及其取值范围:
数据类型
字节数
有符号的取值范围
无符号的取值范围
FLOAT
4
-3.402823466E+38~-1.175494351E-38
0和1.175494351E-38~3.402823466E+38
DOUBLE
8
-1.7976931348623157E+308~2.2250738585072014E-308
0和2.2250738585072014E-308~1.7976931348623157E+308
DECIMAL(M,D)
M+2
-1.7976931348623157E+308~2.2250738585072014E-308
0和2.2250738585072014E-308~1.7976931348623157E+308
从上图中可以看出:DECIMAL类型的取值范围与DOUBLE类型相同。但是,请注意:DECIMAL类型的有效取值范围是由M和D决定的。其中,M表示的是数据的长 度,D表示的是小数点后的长度。比如,将数据类型为DECIMAL(6,2)的数据6.5243 插人数据库后显示的结果为6.52
3.字符串类型
在MySQL中常用CHAR 和 VARCHAR 表示字符串。两者不同的是:VARCHAR存储可变长度的字符串。
当数据为CHAR(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节;而VARCHAR(M)所对应的数据所占用的字节数为实际长度加1
插入值
CHAR(3)
存储需求
VARCHAR(3)
存储需求
‘’
‘’
3个字节
‘’
1个字节
‘a’
‘a’
3个字节
‘a’
2个字节
‘ab’
‘ab’
3个字节
‘ab’
3个字节
‘abc’
‘ab’
3个字节
‘abc’
4个字节
‘abcd’
‘ab’
3个字节
‘abc’
4字节
4.字符串类型
文本类型用于表示大文本数据,例如,文章内容、评论、详情等,它的类型分为如下4种:
数据类型
储存范围
TINYTEXT
0~255字节
TEXT
0~65535字节
MEDIUMTEXT
0~16777215字节
LONGTEXT
0~4294967295字节
5.日期与时间类型
MySQL提供的表示日期和时间的数据类型分别是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下图列举了日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值:
数据类型
字节数
取值范围
日期格式
零值
YEAR
1
1901~2155
YYYY
0000
DATE
4
1000-01-01~9999-12-31
YYYY-MM-DD
0000-00-00
TIME
3
-838:59:59~ 838:59:59
HH:MM:SS
00:00:00
DATETIME
8
1000-01-01 00:00:00~9999-12-31 23:59:59
YYYY-MM-DD HH:MM:SS
0000-00-00 00:00:00
TIMESTAMP
4
1970-01-01 00:00:01~2038-01-19 03:14:07
YYYY-MM-DD HH:MM:SS
0000-00-00 00:00:00
5.1 YEAR类型
YEAR类型用于表示年份,在MySQL中,可以使用以下三种格式指定YEAR类型 的值。
1、使用4位字符串或数字表示,范围为’1901’—'2155’或1901—2155。例如,输人 ‘2019’或