MySQL数据库

数据库是用于长久安全保存保存数据的仓库,我们自己编写小型项目的数据可以使用写文件的方法实现,但是这种方法效率低,也不安全,故大型项目的数据大多保存在数据库中,提供了高效的增删改查方法。

数据库目前分为关系型和非关系型:
关系型数据库指通过外键关联建立表的关系的数据库,目前有MySQL、Oracl、SQLServer等。
非关系数据库指数据以对象形式存储,对象的关系由自身属性决定,如Redis、MongoDB。

MySQL的安装

可以到MySQL官网下载资源,解压目录,本人在D:\mysql-5.7.19-winx64,将该目录下bin文件夹的位置添加到环境变量的path中,先前配置Java时已使用过,这里不再赘述。

增加配置文件,在安装目录下创建my.in文件,文件内容如下:

[mysqld]
basedir=D:\mysql-5.7.19-winx64\  		输入路径
datadir=D:\mysql-5.7.19-winx64\data\  	数据路径
port=3306   	       					 服务端口
skip-grant-tables   					无密码登录

启动管理员模式下的CMD,并将路径切换至mysql下的bin目录,然后输入mysqld –install 安装mysql,
此时可能出现错误MySQL数据库_第1张图片
这是因为缺少运行环境,我们装上vcredist即可修复。

再输入 mysqld --initialize-insecure --user=mysql 初始化数据文件,此时应该可以看到安装目录下新出现了data文件夹,说明安装成功。
此时在cmd窗口中输入mysql -u -p即可进入MySQL系统。

更改密码

先前我们安装了无密码的MySQL系统,如果以后要存储隐私数据的话还是加上密码保护比较好,首先我们在cmd中输入mysql –u root –p 进入mysql管理界面,
更改密码指令
update mysql.user set authentication_string=password('password') where user='root'and Host = 'localhost';
刷新权限flush privileges;,删除my.ini文件内skip-grant-tables语句,重启MySQL,如下界面是更改成功
MySQL数据库_第2张图片

可视化工具

按照上述流程装好M有SQL后,使用只能通过cmd黑窗口,很不方便,我们可以使用可视化工具帮助我们构建项目,在这里我们使用navicat,安装好后是如下界面:
MySQL数据库_第3张图片

SQL语句

用于操作数据库及其中的内容,具体又可分为四种。

DDL数据定义语言

createdropaltershow datebase/table展示所有数据库/表、use table打开数据表、create database\table打开数据库/表等操作。
MySQL中指令不区分大小写,创建表时可创建对应列,每个列由列名、类型、约束构成。

每张表的应该有唯一标识,主键,不能为空,不能重复,大多规定为自动递增,使用primary key ()指定。同时还有外键,用于保持数据一致性完整性,实现多张表的关联。

该部分指令做了解即可,我们一般使用图形界面对数据库和表进行处理。

DML数据操作语言

对表中数据进行增删改操作使用的语言,分别借助insertdeleteupdate实现,增删改分别实现如下:
insert into 表名(列名,列名)values(字段值)往表中插入数据
update 表名 set 修改内容 where 限制条件 修改数据
delete from 表名 where 删除内容删除数据

DQL数据查询语言

基本格式

格式为select 字段名称 from 表名 where 限制条件,语法与编程语言语法基本类似。

like模糊查询,支持%和_匹配,%用以代替其他字符,_用于模糊一个字符。

order by 排序字段按序输出,默认由小到大,可加多个字段,用逗号分隔,排序以第一个字段为准,写在where语句后,asc升序,desc降序,跟在排序字段后。

as起别名,查询时列名用as后的内容代替输出。

distinct去重,修饰的字段不取重复值。

IFNULL(字段,值)判断字段是否为null,如果为null进行数据转换,值为后者。

聚合函数

count(字段)求总记录数,自动忽略空值。

sum(字段)求和

avg()求平均值

max()求最大值

min()求最小值

分组查询

group by 字段分组字段必须出现在select

having对分组的数据再次进行过滤,在group by后根据条件过滤,其实是代替where,只能用于过滤分组后的数据,不可单独使用。

语句执行顺序

where -> group by ->having -> select -> order by
使用where过滤效率较高,只有必要的才放到having中。

limit分页

select form limt 起始索引位置,分页单位;由其实位置开始,查询到的以分页单位为一页展示,起始索引位置计算方法—当前页减一乘分页单位。

多表联查

在两张及以以上的表进行的查询。

SQL92select 字段名 from 表名,表名 where 限制条件
多表联查时一定要给sql加条件,否则出现笛卡尔积现象,即将同时包含字段名的记录都输出出来。限制条件多为限制两张表的外键相同,这种连接方式也成为内连接,或等价连接。
自连接:自己连接自己,相当于对相同的表进行等价连接。
SQL99:内连接select 字段名 from 表 inner(可省略) join 表名 on 连接条件 where 限制条件,该方法将表连接和查询条件分离,效率更高,但内连接会自动忽略空数据,为解决该问题,sql99引入外连接。
right outer(可省略) join右连接,left join左连接,主表显示全部数据,右连接右为主表,左连接左为主表。

子查询,即嵌套查询,将查询结果作为一个表。

多表查询较为复杂,编写时可逐步拆解需求,使用嵌套连接等手段逐步完善。

DCL数据管理语言

修改权限,设置事务,设置事物回滚

总结

主要是sql的增删改查语句,更主要的是查询的语句编写。

你可能感兴趣的:(开发,数据库,mysql)