Mysql数据库

Mysql数据库

一、安装和删除

安装

	下载官网安装包,符合系统的位数
	安装包不能选择安装目录,还需要配置环境变量

转载 安装包安装 https://www.cnblogs.com/kendoziyu/p/MySQL.html

一.免安装

		1.从官网下载数据库安装包文件进行解压
		2.下载后没有 my.ini 文件,需要自己配置
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=C:\zzzzz\kaifa\DBMS
# 设置mysql数据库的数据的存放目录
datadir=C:\zzzzz\kaifa\DBMS\Data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
3.配置完my.ini后  以管理员进入cmd  
	cd 进入数据库bin目录,输入安装命令
	mysqld  --initialize --console
	安装可能会报错,原因是缺少微软常用运行库合集,百度下载即可

在这里插入图片描述

	安装后需要记录密码

需要记录密码
二、mysql服务安装和启动

	1.安装mysql服务
mysqld --install [服务名]                     ###(服务名可以不加默认为mysql)
2.启动mysql服务,成功后会显示mysql服务启动成功
	如果运行cmd命令发现不能正常使用,可以用管理员运行cmd
net start mysql         #启动mysql服务命令
net stop mysql			#停止mysql服务命令

启动mysql可以在服务中启动

删除数据库

	1.直接删除卸载
	2.删除   C:\ProgramData、C:\Program Files (x86)  下的Mysql文件
	3.删除注册表

mysql登录

1.在CMD下进行数据库连接

	先进入cmd,cd到数据库的bin目录下,输入连接命令,如果不想输入目录,可以去系统配置环境变量
mysql -h localhost -p 端口号 -u 用户名 -p 密码  	
ctrl+c   退出快捷键

2.创建mysql启动快捷方式

创建mysql的bin目录下的mysqld.exe快捷方式,修改属性目录添加"-uroot" “-p”

二、数据库基础

E-R 图

矩形:实体名称
椭圆:属性、字段
菱形:两个实体之间的关系

1、m、n、
1:1 一对一
1:n 一对多
m:n 多对多

数据库三大范式

第一范式
原子性,所有列都是简单属性,且不可再分割。
第二范式
满足第一范式的同时每个表必须都有主键(唯一,非空,不重复),其他非主键完全依赖主键。
第三范式
满足第二范式的同时,非主键字段不能存在依赖关系。两个表存在关联,有且只能引用一个列

1. SQL 语句

	定义:对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。
	sql关键字和函数名不区分大小写,在Mysql数据库中,列名和索引名不区分大小写

sql语言包含四个部分

数据定义语言(Data Definition Language,DDL) 对库和表的操作

*  CREATE:创建数据库和表等对象
*  DROP:删除数据库和表等对象
*  ALTER:修改数据库和表等对象的结构

数据操作语言(Data Manipulation Language,DML) 对表中数据的操作

* INSERT:向表中插入新数据
* UPDATE:更新表中的数据
* DELETE:删除表中的数据

数据查询语言(Data Query Language,DQL) 主要对表中的数据进行查询,多用SELECET语句

数据控制语言(Data Control Language,DCL)
用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令

* GRANT:赋予用户操作权限
* REVOKE:取消用户的操作权限
* COMMIT:确认对数据库中的数据进行的变更
* ROLLBACK:取消对数据库中的数据进行的变更

术语

	行:一行包含了一个元组(对象)的所有信息
	列:包含了一类的所有信息
	冗余:存储两倍数据,提升安全性,降低了性能
	主键:主键是唯一的,一个表中只能包含一个主键
	外键:外键用于关联两个表
	索引:索引是对表中的一列或多列进行排序的结构,可以使用索引进行快速查询
	值:每个字段的实体数据

2.sql基本命令

注释:#、–、/**/

show databases;							查看数据库列表
use 数据库名	;							使用指定数据库
show tables from 数据库名;				查看某个数据库的表
desc 表名;								查看某个表的结构组成
select version();						查看当前mysql版本
exit;									退出数据库
show create database 数据库名;			查看数据库定义内容
show engines;							查看数据库引擎

创建数据库

create database 数据库名;				创建数据库
create database if not exists 数据库名; 创建数据库如果不存在这个数据库
create database if not exists 数据库名 
default character set utf8  
default collate utf8_chinese_ci;		设置默认字符集、校对规则

修改数据库

alter database 数据库名	
default character set gb32;				修改数据库信息

删除数据库

drop database if exists 数据库名 		删除数据库如果存在

3.数据库基本类型

数值类型

	整数类型:tinyint、smallint、mediumint、int、bigint
	浮点类型:float()、double()
	定点类型:decimal()
	例子:decimal(总长度,小数点)  decimal(3,2)传入参数如 9.99

日期时间类型

	year、time、date、datetime、timestamp

字符串类型

char、varchar、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET

char和varchar的区别:
char  定长       char(10)    输入3个字符 还剩余7个字符,剩下的空间不会释放,会用空格补全
varchar   变长   varchar(10)    输入3个字符,剩余7个字符会释放空间

二进制类型

 BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGB

4.查询命令

select * from 表名;
select 字段名,字段名  from 表名;
select 100;														查询常量
select 110%9;													查询表达式
select version();												查询函数
select 100%9 as 结果;											取别名
select name as 名字,sex as 性别	from 表名;						增加可读性,取别名
select name 名字,sex 性别 from 表名	;							用空格取别名
select distinct 字段名 from 表名;								去重 用 distinct			
	

mysql中 + 号只能用来做运算符

select 99+1  			 两个数字相加只做数字加法,结果为100
select '99'+1			 一个字符数字加一个数字,将字段转换为数值进行相加,结果为100
select ‘ads’+1		 	 一个字符加一个数字,转换字符为0,结果为1
select null+1  		  	加法中有一个为null,结果就是null

连接字符用concat()函数

select  concat(a,b) from  表名
在字符串拼接的过程中,如果有null,所有的结果将会为null
可以使用 ifnull()函数进行字符段转换
例   	b的字段中含有null,可以用如下拼接
	select concat(a,ifnull(b,0)) from 表名

5.创建表格

在这里插入图片描述

5.1 创建主键约束 primary key

创建表的同时创建主键约束
在这里插入图片描述
在这里插入图片描述

5.2 删除主键约束

alter table 表名 drop primary key

5.3 创建唯一约束(索引)unique

在这里插入图片描述

5.4 删除唯一约束(删除索引)index

删除约束实则删除的时索引名称
在这里插入图片描述
创建表时添加唯一约束,可以直接在字段后面添加unique

5.5 域完整性

5.5.1 确定字段输入数据的规则

在这里插入图片描述

5.5.2默认值约束就是默认值(删除默认约束只能修改成没有默认值)default

在这里插入图片描述

5.5.3非空约束 not null

在这里插入图片描述

5.5.4参照完整性—外键约束 foreign key(外键) references(参照)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.从表引用的主表字段,必须是主键或唯一约束
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建外键约束的时候,从表的列名可以和主表的列名不一样,但是数据类型和内容必须一致

5.5.5 删除外键约束

在这里插入图片描述

6.修改表结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.数据库操作语言DML—增、删、改、

7.1 增加表中数据——insert into value

7.1.1 增加一条个别字段数据

在这里插入图片描述
字符和日期需要用引号括起来

7.1.2增加一整条数据

在这里插入图片描述
字段可以不写,但填入的数值要对应字段位置,不写的可以用引号空格括起来

7.1.3增加多条数据

在这里插入图片描述

7.2删除表中数据 delete from

7.2.1删除整个表数据

在这里插入图片描述

7.2.2 删除对应的数据

在这里插入图片描述

7.3 更改表中的数据 update set

7.3.1 更改一列的值

在这里插入图片描述
一改就是一列

7.3.2 更改多列的值

在这里插入图片描述

7.3.3更改某一条数据的值

在这里插入图片描述

7.3.4 更改的时候做计算

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200729120924813.pn

8.数据库查询语言 select

8.1 基本查询语句

select 列名(可以多列) from 表名
在执行查询语句时,先执行 from 确定表,在执行列名

8.2查询的时候计算

在这里插入图片描述

8.3聚合函数 ——在select之后,可以看作特殊的列名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.3.1去重 distinct ——在select之后 对列名的操作

在这里插入图片描述

8.3.2 取别名 as ——在select之后 对列名的操作

在这里插入图片描述

8.4函数 ——在select之后 对列名的操作

8.4.1字符串函数—查看字符串长度

在mysql中 一个汉字占三个字节,一个子母占一个字节
在这里插入图片描述
在这里插入图片描述

8.4.2 截取函数 mid ——截取中间某一部分的信息

截取字段数据里某一部分
在这里插入图片描述

8.4.3 数学函数 round——四舍五入

mysql中小数默认保留四位小数
round(数值,保留几位小数)
round(数值)只填入数值的话保留整数

8.4.4 最大值最小值 least greatest——只能填入准确数值

在这里插入图片描述

8.4.5 日期时间函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.4.6 控制函数 if、ifnull

在这里插入图片描述

8.5 条件查询 where

8.5.1比较运算符——在where之后

在这里插入图片描述
在这里插入图片描述

8.5.2逻辑运算符 and or——在where之后

add:同时满足几个条件
or:满足其中一个

8.5.3数值范围查询 between and ——在where之后

在这里插入图片描述
开始值 and 范围值 包含在范围之内

8.5.4 列表条件搜索(子查询) in——在where之后

在这里插入图片描述
在这里插入图片描述

8.5.5 模糊查询 like % _ ——在where之后

%”是 MySQL 中最常用的通配符,它能代表任何长度的字符串,字符串的长度可以为 0
“_”只能代表单个字符,字符的长度不能为 0。例如,a_b可以代表 acb、adb、aub 等字符串。
在这里插入图片描述
在这里插入图片描述
LIKE 模糊查询是不区分大小写的。如果需要区分大小写,可以加入 binary 关键字
在这里插入图片描述

8.5.6 空值查询 is null ——在where之后

空值不是0,也不是空格,就是null
在这里插入图片描述

8.6查询条数限制 limit

limit 初始值,往后查询几条
limit 8 代表从0开始,之后的8条数据
limit 1,8 代表从第二条开始,之后的8条数据,显示2-10的数据
在这里插入图片描述

8.7 数据分组 group by

对查询结果的分组,可以先确定查什么,再进行分组
在这里插入图片描述

8.7.1 分组后按条件查询 having——只在group by 之后

在这里插入图片描述
在这里插入图片描述

8.8 排序 order by

在这里插入图片描述
在这里插入图片描述

三、表连接

1.内连接 inner join 或者 join

内连接 显示结果只会显示几个表相互匹配的数据(根据连接的列共同拥有的数据)
1.首先确定用几个表
2.确定查询哪些列名
3.确定表关联的两个列
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
on 后面可以直接跟条件,用and连接,一般不使用
多个表连接,如果用where,from可以直接写多个表名,where后面再用and连接多个表关联的列
如果用inner join ,需要将前两个表进行inner join on,把前两个表看作一个大表,再去inner join on下一个表,如此往复
在这里插入图片描述

2.外连接

外连接会以一个表为基础返回匹配和不匹配的数据
写在前面的表是左表,写在后面的是右表
左连接对左边的表不加限制,返回左表的所有行
右连接对右边的表不加限制,返回右表的所有行

2.1左连接 left outer join on

查询学生所有信息,学号、姓名、成绩,班级编号、年级

select s.学号,s.姓名,s.成绩,c.班级编号,c.年级
from 学生信息 s left outer join 班级信息 c
on s.学号=c.学号

2.2右连接 right outer join on

在这里插入图片描述

3. 子查询 ——在wherer之后,用in

注意事项:

  1. where条件需要什么,就查询什么
  2. 什么时候需要用到子查询
    1 .条件不明确。
    例子 查看计算机系的学生选了哪些课程,不知道学生是哪些
    2.where后面需要用聚合函数
    where后面不能用聚合函数,需要用子查询查出聚合函数结果
    成绩大于平均成绩
    where grade>(select avg(grade) from 成绩表) 等同于 where grade>60
    在这里插入图片描述
    insert into 后面直接跟 子查询
    update 和 delete 在where 后面跟子查询
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.1 插入数据+select子查询

在这里插入图片描述

在这里插入图片描述

3.2 更新+select子查询

在这里插入图片描述

3.3 嵌套子查询

在这里插入图片描述

四、视图

1. 什么是视图

对视图的数据修改对原表数据有影响
原表的数据修改对视图有影响
在这里插入图片描述

2. 创建视图

在这里插入图片描述
在这里插入图片描述

3. 修改视图结构

修改视图就是重新修改查询结果
在这里插入图片描述

4. 视图数据的增删改

在这里插入图片描述

5.删除视图

在这里插入图片描述

五、索引

1. 什么是索引

类似于书中的目录,方便查询

2. 索引的优缺点

优点:

  1. 方便快速查询
  2. 保证数据的唯一性
  3. 实现表与表之间的参照完整性
  4. 在进行group by、order by 的查询时更快

缺点:

  1. 创建和维护索引耗费时间,随着索引的增加,时间也增加
  2. 索引占用磁盘空间,比表更快占满
  3. 对表中的数据进行操作的时候,索引也要动态维护,降低了数据维护速度

3.创建索引

创建唯一约束的时候会创建索引
可以直接创建索引,主键

六、存储过程

1.什么是存储过程

存储在数据库服务器中的一组sql语句集合。一个存储过程是一个可编程的函数,它在数据库中创建并保存,一般由 SQL 语句和一些特殊的控制结构组成

2.创建存储过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值