[MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]


数据库相关概念

数据库管理软件的由来

数据库管理软件:本质就是个C/S架构的套接字程序。 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。

什么是数据(Data)

描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机,在计算机中描述一个事物,就需要抽取这一事物的典型特征,组成一条记录,就相当于文件里的一行内容,单纯的一条记录并没有任何意义,如果我们按逗号作为分隔,依次定义各个字段的意思,相当于定义表的标题

什么是数据库(DataBase,简称DB)

数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的

过去人们将数据存放在文件柜里,现在数据量庞大,已经不再适用

数据库是长期存放在计算机内、有组织、可共享的数据即可。

数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种 用户共享

什么是数据库管理系统(DataBase Management System 简称DBMS)

在了解了Data与DB的概念后,如何科学地组织和存储数据,如何高效获取和维护数据成了关键

这就用到了一个系统软件—数据库管理系统如MySQL、Oracle、SQLite、Access、MS SQL Server

mysql主要用于大型门户,例如搜狗、新浪等,它主要的优势就是开放源代码,因为开放源代码这个数据库是免费的,他现在是甲骨文公司的产品。
oracle主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用高。也是甲骨文公司的产品。
sql server是微软公司的产品,主要应用于大中型企业,如联想、方正等

数据库管理软件分两大类:

关系型:常见的如MySQL,sqllite,db2,oracle,access,sql server

非关系型:mongodb,redis,memcache

可以简单的理解为:

关系型数据库需要有表结构(存数据之前需要将表建立好(表就是文件),例如这个表是用户相关的表,里面专门存用户相关的数据。还需要建立权限表,里面存用户权限相关的数据。用户跟权限是有对应关系的,表跟表之间是有关系的,还有约束)
非关系型数据库是key-value存储的,没有表结构

mysql介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

mysql是什么?

mysql就是一个基于socket编写的C/S架构的软件
客户端软件
  mysql自带:如mysql命令,mysqldump命令等
  python模块:如pymysql

sql语句:套接字管理软件的作者为使用者规定的命令规范

数据库核心概念总结:

数据------------------》事物的状态
记录------------------》文件中的一条信息
表--------------------》一个文件
库--------------------》文件夹
数据库管理软件---------》套接字程序:mysqld、mysql
数据库服务器-----------》运行mysqld的计算机

MySQL下载安装

Windows版本

img

1、下载:MySQL Community Server 5.6.51
http://dev.mysql.com/downloads/mysql/

2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:D:\mysql-5.6.51-winx64

3、添加环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到
 变量名为Path 的一行,双击】 --> 【将MySQL的bin目录路径追加到变值值中,D:\mysql-5.6.51-winx64\bin\】
 
4、初始化
C:\Users\Administrator> mysqld --initialize-insecure

5、启动MySQL服务
C:\Users\Administrator> mysqld    # 启动MySQL服务

6、启动MySQL客户端并连接MySQL服务(另开一个cmd)
C:\Users\Administrator> mysql -u root -p # 连接MySQL服务器

将MySQL服务制作成Windows服务

#上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:

#注意:--install前,必须用mysql启动命令的绝对路径
# 制作MySQL的Windows服务,在终端执行此命令:
C:\Users\Administrator>"D:\mysql-5.6.51-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服务,在终端执行此命令:
C:\Users\Administrator>"D:\mysql-5.6.51-winx64\bin\mysqld" --remove

# 注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
# 启动MySQL服务
C:\Users\Administrator>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

# 关闭MySQL服务
C:\Users\Administrator>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。

MySQL软件基本管理

登录,设置密码

初始状态下,管理员root,密码为空,默认只允许从本机登录localhost
设置密码
C:\Users\Administrator>mysqladmin -uroot password "123"   设置初始密码 由于原密码为空,因此-p可以不用
C:\Users\Administrator>mysqladmin -uroot -p"123" password "456" 修改mysql密码,因为已经有密码了,所以必须输入原密码才能设置新密码

命令格式:
C:\Users\Administrator>mysql -h172.31.0.2 -uroot -p456
C:\Users\Administrator>mysql -uroot -p
C:\Users\Administrator>mysql                    以root用户登录本机,密码为空

破解密码方式:

跳过授权表启动服务端:
# 1.先关闭当前mysql服务端
命令行的方式启动(让mysql跳过用户名密码验证功能)
C:\Users\Administrator>mysqld --skip-grant-tables --user=mysql

# 2.直接以无密码方式连接,另外开一个cmd
C:\Users\Administrator>mysql -uroot -p  # 直接回车
mysql> select user();  # 可以看到直接就是管理员用户

# 3.修改当前用户的密码
mysql> update mysql.user set password=password("111") where user="root" and host="localhost";
"""
执行一个update命令,mysql文件夹下面有一个文件user(点代表路径分隔符),把password这个字段
的值改掉(密码一定要存成密文的,所以调了password("111")这个函数,把函数的值赋值给字段)where
user把一个本地管理员账号的密码改成111
"""

# 4.立刻将修改数据刷到硬盘
mysql> flush privilegse;   # 执行命令,刷新权限信息
mysql> exit # 执行退出命令

# 5.然后关掉服务端,再以正常方式启动
改完密码重新启动服务端后再在客户端执行连接登录
C:\Users\Administrator>mysql -uroot -p"111"

img

可用此类方式关掉启动mysql服务

img

MySQL配置文件修改

img

mysql默认的配置文件

# 配置文件所在目录D:\mysql-5.6.51-winx64
my-default.ini  # ini结尾的一般都是配置文件文件

程序启动会先加载配置文件中的配置之后才真正的启动

[client] # 其它客户端(mysql既支持自己写的客户端,也支持其它语言客户端)

[mysql]  # 一旦客户端启动立刻加载下面的配置

[mysqld]  # 一旦服务端启动立刻加载下面的配置


# 这个文件不能改,需要自己建一个my.ini的配置文件

# 修改配置文件后一定要重启服务才能生效

# 统一编码的配置,无需掌握直接拷贝即可(偷懒将管理员用户名和密码也添加到配置文件,不是必备项)
[client]
default-character-set = utf8mb4
 
[mysql]
user = "root"  # 用户名
password=111  # 密码
default-character-set = utf8mb4
 
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=\'SET NAMES utf8mb4\'

img

统一编码配置添加到my.ini

img

重启服务后查看配置文件是否修改成功

img

sql语句

有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写

mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要下载mysql的客户端,或者其他模块来连接到mysqld,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。该语法即sql(Structured Query Language 即结构化查询语言)

SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

库详细操作

  • 一、系统数据库

information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
mysql: 授权库,主要存储系统用户的权限信息
test: MySQL数据库系统自动创建的测试数据库

  • 二、创建数据库

    • 1 语法(help create database)
  CREATE DATABASE 数据库名 charset utf8;
- ##### 2 数据库命名规则
可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
  • 三、库—》文件夹:操作文件夹

增:create database day02 charset utf8mb4; # 创建day02数据库,指定字符编码“utf8mb4”

改:alter database day02 charset gbk; # 将字符编码改为“gbk”

查:show databases;   # 查看所有的库
   select database(); # 查看当前所在的库
   show create database day02;  # 查看刚刚创建的库

删:drop database day02; # 删库

img

表操作

  - #### 表----》文件:操作文件
#语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选
3. 字段名和类型是必须的

# 表操作:
use day02;  # 先切换到库下
 select database();  # 查看当前所在的库

增:create table t1(id int,name varchar(16)); 
 # 创建表t1当前库下无需加前缀day02,指定id字段、对应类型,名字,名varchar类型的宽度(16个字符)
 
改:alter table t1 rename t2; # 改表名
   alter table t2 modify name varchar(10); # 改字段varchar类型的宽度改为10
   
查:show tables;  # 查看当前库下的表信息
   desc t2;    # 指定查看一张表的信息
   show create table t2\G; # 查看表详细结构,可加\G
   
删:drop table day02.t2; # 指定绝对路径删除表,不在当前库下也能删除

img

行操作

  - ####   记录----》操作文件中的内容
create database day02; # 先创建库
use day02; # 最好是切到库下进行操作(路径不用加前缀)
create table t1(id int,name varchar(16)); # 创建表

增:insert t1 values   # 往t1插入值
      (1,"egon"),    # 添加第一条记录
      (2,"tom"),     # 添加第二条记录
      (3,"jack");    # 添加第三条记录 
      
改:update day02.t1 set name = "lili" where id = 2;
# 更新day02下的t1表,设置名字改为“lili,”把id等于2的名字改为“lili”

查: select * from day02.t1;  # 查看t1表里面的所有内容
    select name from day02.t1; # 只查看t1表里面的名字
    select name from day02.t1 where id >= 2;  # 查看id大于或等于2的信息
      
      
删:delete from day02.t1 where id = 2; # 指的删除id等于2的内容

清空表:
      delete from t1; # 如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
      truncate table t1; # 数据量大,删除速度比上一条快,且直接从零开始,
      auto_increment  # 表示:自增
      primary key  # 表示:约束(不能重复且不能为空);加速查找

img

版权声明:本文为liupengfei1123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/liupengfei1123/p/14709950.html