MySQL数据库

目录

为什么要学习数据库,什么是数据库?

概述数据库 

根据存储类型

Mysql数据库 

 Mysql语法

 数据(结构)定义语言DDL(Data Definition Language)

 数据库存储数据的特点

 数据库表的基本概念

数据库设计表 

 创建表语法

删除表

修改表名

复制表结构

数据操纵语言DML(Data Manipulation Language)

插入数据

修改数据

删除数据

DQL(Data Query Language)

查询结果处理

基础查询好处

函数

逻辑处理

数学函数

日期函数

条件查询

模糊查询

UNION

排序

 数量限制

多表设计&关联查询

数据库设计范式

1.第一范式(确保每列保持原子性)

2. 第二范式就是要有主键,要求其他字段都依赖于主键

3.第三范式就是要消除传递依赖,方便理解,可以看做是“消除冗余”

关联查询 

子查询


为什么要学习数据库,什么是数据库?

      因为数据库使得数据能够在本地永久保存并且方便统一管理数据。

数据库(DataBase) 
数据库管理系统(DataBase Management System)
结构化查询语言(Structure Query Language)
DB: 为了方便数据的存储和管理,它将数据按照特定的规则存储在磁盘上, 就是一个存储数据的仓库。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。是一个 存储数据的容器。

DBMS:又叫做数据库软件或者数据库产品,用来创建or管理数据库。

SQL:几乎是所有数据库语言通用的语言,用来和数据库通信。

概述数据库 

根据存储类型

关系型数据库RDBMS,R即relation

Oracle:功能强大,收费.
MySQL 快捷、可靠 开源、免费
SQL Server(微软): 只能安装在Windows操作系统
DB2 (IBM):适合处理海量数据,收费
非关系型数据库
MongdoDB
Redis
/***详尽知识大家有兴趣可以自行百度一下****/

Mysql数据库 

      MySQL 是瑞典的MySQL AB公司开发的一个可用于各种流行操作系统平台的关系数据库系统,它具有客户机/服务器体系结构分布式数据库管理系统。MySQL 完全适用于网络,用其建造的数据库可在因特网上的任何地方访问,因此,可以和网络上任何地方的任何人共享数据库。MySQL具有功能强、使用简单、管理方便、运行速度快、可靠性高、安全保密性强等优点。

MySql软件是一种开放源码软件,你可以修改源码来开发自己的 Mysql 系统

MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用

 Mysql语法

MySQL 语法规范
不区分大小写,建议关键字大写,表名、列名小写
每句话用 ;
注释
单行注释: # 注释文字
单行注释:
-- 注释文字(要有空格)
多行注释:
/* 注释文字 */
结构化查询语言 (Structured Query Language) 简称 SQL ,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

 数据(结构)定义语言DDL(Data Definition Language)

DDL是用来创建和修改数据库表结构的语言,常用语句:create ,alter,drop,rename

创建数据库并设置编码格式

CREATE DATABASE [if not exists] 数据库名 [ CHARSET utf8]

删除数据库

DROP DATABASE 数据库名 / [IF EXISTS 数据库名 ];
修改字符集
ALTER DATABASE 数据库名 CHARSET gbk;

实例: 

CREATE DATABASE IF NOT EXISTS studentscore CHARSET utf8;
 -- 创建数据库studentscore
DROP DATABASE studentscore;
 -- 删除数据库studentscore
ALTER DATABASE studentscore CHARSET gbk;
 -- 修改字符集

 数据库存储数据的特点

将数据放到表中,表再放到库中
一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。
表具有一些特性,这些特性定义了数据在表中如何存储,类似Java中“类”的设计。
表由列组成,我们也称列为字段。所有表都是由一个或多个列组成的,每一列类似java中的”属性”
表中的数据是按行存储的,每一行类似于Java中的“对象”。

 数据库表的基本概念

1、数据表
表(table)是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素。表的最简单形式是由行和列组成,分别都包含着数据。 每个表都有一个表头和表体,表头定义表名和列名 .表中的行被看作是文件中的记录,表中的列被看作是这些记录的字段。
2、记录
记录也被称为一行数据,是表里的一行。在关系型数据库的表里,一行数据是指一条完整的记录。
3、字段
字段是表里的一列,用于保存每条记录的特定信息。如客户订单表的字段包括“订单ID”、“姓名”、“客户ID”、“职务”、“上级”、“地区”、“运货商”、“国家”等。 数据表的一列包含了特定字段的全部信息。

数据库设计表 

在设计表之前,我们首先需要确认一些特征 

1. 表名

2.表中的字段(列名)

3.字段数据类型及长度

char n )    长度为 n 的定长字符串
varchar(n ) 最大长度为 n 的可变长字符串
date             日期, 包含年月日
datetime      年月日 时分秒

4.一些约束

PRIMARY KEY 设置主键约束   在一张表中代表唯一的一条记录 ,不能为空,不能重复
NOT NULL 不能为空约束
UNIQUE 唯一性约束
检查约束 设置条件
外键约束
主键自动增长
AUTO_INCREMENT
默认值
DEFAULT default_value
字段注释 :
comment ' 注释'

 设计表(数据类型)

TEXT 列字符字符串
4 TEXT 类型: TINYTEXT TEXT MEDIUMTEXT LONGTEXT
它的长度:
TINYTEXT :最大长度 255 个字符 (2^8-1)
TEXT :最大长度 65535(2^16-1)
MEDIUMTEXT :最大长度 16777215(2^24-1)
LONGTEXT 最大长度 4294967295(2^32-1)

 创建表语法

CREATE TABLE 表名 (
列名1 数据类型 [ 约束 ] [ 默认值 ] [ 注释 ],
列名2 数据类型 [ 约束 ] [ 默认值 ] [ 注释 ],
       ......
[CONSTRAINT 约束名 约束规则 ]
)

删除表

DROP TABLE [if exists ]表名

修改表名

RENAME TABLE 旧表名 TO 新表名

复制表结构

CREATE TABLE 新表名 LIKE 被复制表名;
简单举个栗子
CREATE TABLE studentgrade(
stu_num INT  NOT NULL,
stu_name VARCHAR(5) NOT NULL,
stu_subject VARCHAR(5) NOT NULL,
stu_score INT NOT NULL

)-- 创建成绩表
DROP TABLE studentgrade -- 删除成绩表
RENAME TABLE studentgrade TO studentgrade1; -- 修改表名
CREATE TABLE studentgrade2 LIKE studentgrade1;    -- 复制表结构

数据操纵语言DMLData Manipulation Language

常用语句:
insert,delete,update

插入数据

方式 1: INSERT INTO 表名 ( 1, 2……, n) VALUE( 1, 2….., n);
方式 2: INSERT INTO 表名 set 列名 1= 1,.. 列名 n= n;
方式 3: INSERT INTO 表名 ( 1, 2……, n) VALUES( 1, 2….., n),( 1, 2…..,
n);
方式 4:INSERT INTO 表名 ( 1, 2……, n) 查询语句 ( 查询的列数与插入列数匹配 )
INSERT INTO studentgrade(stu_num,stu_name,stu_subject,stu_score)
VALUES(1,'张三','语文',70),
(1,'张三','数学',80),
(1,'张三','英语',66),
(2,'李四','语文',50),
(2,'李四','数学',75),
(2,'李四','英语',80),
(3,'王五','语文',77),
(3,'王五','数学',55),
(3,'王五','英语',88),
(3,'王五','物理',90)-- 并添加数据.方式三

修改数据

UPDATE 表名 SET 列名 = ‘新值’ WHERE 条件

删除数据

DELETE FROM 表名 WHERE 条件
TRUNCATE TABLE 表名 ; 清空整张表

DQLData Query Language

基础查询 :数据查询语言查询是使用频率最高的一个操作, 可以从一个表中查询数据,也可以从多个表中查询数据。

语法:

        select 查询列表 from 表名 ;
特点:
        查询列表可以是:表中的字段、常量、表达式、函数
        查询的结果是一个虚拟的表格

查询结果处理

        特定列查询:select column1,column2 from table
        全部列查询: select * from table
        算数运算符:+ - * /
        排除重复行: select distinct column1,column2 from table
        查询函数:select 函数 ; / 例如 version()

基础查询好处

1.隐藏了实现细节
2.提高代码重用性

调用: select 函数名(实参列表) [from ];

函数

length() :获取参数值的字节个数
char_length() 获取参数值的字符个数
concat(str1,str2,.....) :拼接字符串
upper()/lower() :将字符串变成大写 / 小写
substring(str,pos,length) :截取字符串 位置从 1 开始
instr(str, 指定字符 ) :返回子串第一次出现的索引,如果找不到返回 0
trim(str) :去掉字符串前后的空格或子串 ,trim( 指定子串 from 字符串 )
lpad(str,length, 填充字符 ) :用指定的字符实现左填充将 str 填充为指定长度
rpad(str,length, 填充字符 ) :用指定的字符实现右填充将 str 填充为指定长度
replace(str,old,new) :替换,替换所有的子串

逻辑处理

case when 条件 then 结果1 else 结果2 end; 可以有多个when
ifnull(被检测值,默认值)函数检测是否为null,如果为null,则返回指定的值,否则返回
原本的值
if函数:
if else的 效果 if(条件,结果1,结果2)

数学函数

round( 数值 ) :四舍五入
ceil( 数值 ) :向上取整,返回 >= 该参数的最小整数
floor( 数值 ) :向下取整,返回 <= 该参数的最大整数
truncate( 数值 , 保留小数的位数 ) :截断,小数点后截断到几位
mod( 被除数 , 除数 ) :取余,被除数为正,则为正;被除数为负,则为负
rand() :获取随机数,返回 0-1 之间的小数

日期函数

now() :返回当前系统日期 + 时间
curdate() :返回当前系统日期,不包含时间
curtime() :返回当前时间,不包含日期
可以获取指定的部分,年、月、日、小时、分钟、秒
YEAR( 日期列 ),MONTH( 日期 ),DAY( 日期 ) ,
HOUR( 日期 ) ,MINUTE( 日期 ) SECOND( 日期 )
str_to_date :将日期格式的字符转换成指定格式的日期
date_format :将日期转换成字符串
datediff(big,small) :返回两个日期相差的天数

 分组函数

功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类: sum 求和、 avg 平均值、 max 最大值、 min 最小值、 count 计数
(非空)
1.sum avg 一般用于处理数值型 max min count 可以处理任何类型
2. 以上分组函数都忽略 null
3.count 函数的一般使用 count * )用作统计行数
4. 和分组函数一同查询的字段要求是 group by 后的字段

条件查询

        使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句。
        语法:select < 结果 > from < 表名 > where < 条件 >
比较
        =, != 或 <>, >, <, >=, <=
逻辑运算
        and 与
        or 或
        not 非

模糊查询

LIKE :是否匹配于一个模式 一般和通配符搭配使用,可以判断字符型数值 或数值型.
通配符: % 任意多个字符,包含 0 个字符 _ 任意单个字符
between and 两者之间 , 包含临界值;
in 判断某字段的值是否属于 in 列表中的某一项
IS NULL (为空的)或 IS NOT NULL (不为空的)

UNION

1 UNION 的语法如下:
[SQL 语句 1]
UNION
[SQL 语句 2]
2 UNION ALL 的语法如下:
[SQL 语句 1]
UNION ALL
[SQL 语句 2]
当使用union 时,mysql 会把结果集中重复的记录删掉,而使用union all ,
mysql 会把所有的记录返回,且效率高于union 。

排序

查询结果排序 , 使用 ORDER BY 子句排序 order by 排序列 ASC/DESC
asc 代表的是升序, desc 代表的是降序,如果不写,默认是升序
order by 子句中可以支持单个字段、多个字段

 数量限制

limit 子句:对查询的显示结果限制数目 (sql 语句最末尾位置 )
SELECT * FROM table LIMIT offset rows;
SELECT * from table LIMIT 0,5;

多表设计&关联查询

数据库设计范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。
目前关系数据库有 5 种范式:第一范式( 1NF )、第二范式( 2NF )、第三范式(3NF )、巴斯 - 科德范式( BCNF )、第四范式 (4NF )和第五范式(5NF ,又称完美范式)。
满足最低要求的范式是第一范式( 1NF )。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF ),其余范式以次类推。一般来说,数据库只需满足第三范式(3NF )就行了。

1.第一范式(确保每列保持原子性)

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该 数据库表满足了第一范式。

 

2. 第二范式就是要有主键,要求其他字段都依赖于主键

没有主键就没有唯一性,没有唯一性在集合中就定位不到这行记录,所以要主键。
其他字段为什么要依赖于主键?因为不依赖于主键,就找不到他们。更重要的是,其
他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们只需要依
赖于主键,也就成了唯一的。

3.第三范式就是要消除传递依赖,方便理解,可以看做是消除冗余

 注意:

1、当主表中没有对应的记录时,不能将记录添加到从表
2、不能更改主表中的值而导致从表中的记录孤立
3、从表存在与主表对应的记录,不能从主表中删除该行
4、删除主表前,先删从表

关联查询 

        含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询笛卡尔乘积现象:表1有 m 行,表 2 n 行,结果 =m*n
        发生原因:没有有效的连接条件
        如何避免:添加有效的连接条件
按功能分类:
内连接
        等值连接
        非等值连接
        自连接
外连接
        左外连接
        右外连接

 

 

 

 

子查询

含义:出现在其他语句中的 select 语句,称为子查询或内查询;外部的查询语句,称为主查询或
外查询 .
分类:
        按子查询出现的位置:
                select后面:支持标量子查询
                from后面:支持表子查询
                where:支持标量子查询,列子查询
        按功能、结果集的行列数不同:
                标量子查询(结果集只有一行一列)
                列子查询(结果集只有一列多行)
                表子查询(结果集一般为多行多列)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CsDn.FF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值