• MySql-数据库基础


    MySql-数据库基础

    数据库基本概念

    数据库是什么

    数据库是用来存储数据的仓库,本质上就是一套基于CS架构的服务端和客户端程序,最终将数据存储在服务器的磁盘中。所有的用户涉及到数据相关的,都必须来这个地方查找。之前学过的数据存储方式有:

    ​ 1.列表,字典......等等,是在内存中的数据,缺点是断电丢失,优点是速度快

    ​ 2.文件存储,如json,txt.......等等,优点是可以实现永久保存,缺点是速度慢。

    为什么要用数据库

    1.提高速度

    2.通过网络来访问不同机器上的数据:我们的程序将来可能分布在不同的机器上,而每台及机器性能肯定有上限,如果一台机器不能够满足,就需要用多个机器来共同完成任务。

    • 分布式:每个服务器提供不同的服务,有时候某个业务流程可能涉及到多个服务器。所以通信繁琐,容灾性也没有集群好,但耦合性低,易维护
    • 集群:所有服务器提供的服务是一模一样的,容灾性强,易扩散,可插拔

    3.管理用户权限

    4.多个客户端并发访问,保证数据安全。

    数据库的分类

    关系型数据库:数据之间可以存在关联关系,关系型数据库通常都是表结构,也就意味着你在用关系型数据库的时候,第一步就要确定表结构。数据库会帮我们维护这种关系。通常把磁盘作为存储介质。常见的关系型数据库有:

    • MySQL:目前最流行的关系型数据库,免费开源
    • SQLserver:微软推出,只有运行在windows平台下
    • oracle:最强大的关系型数据库,主要在集群和用户管理比较突出,收费
    • db2:IBM的产品,主要面向企业级用户

    非关系型数据库:不能帮我们维护数据之间的关系,通常把内存作为存储介质。通常以k,v键值的形式来存储数据。

    常用的非关系型数据库有:MongoDB(文档型数据库,一个非常接近关系型的非关系型数据库)、Redis、memcahe

    数据库重要概念

    数据(Column):文件中的某个字符串

    记录(Row):文件中的某一行数据叫做一条条的记录

    表(Table):某个文件

    库(DataBase):就是一个文件夹

    其中表头就是表格的第一行数据,字段有特定的类型,字段是字段名+字段类型,存名字用字符串,存密码用数字,存生日用日期等。

    DBIMS:数据库管理系统(指的就是数据库软件)

    数据库服务器:运行DSMS的计算机

    MySQL使用前奏

    在安装好Mysql后,有bin文件用来存储所有执行文件,bin文件中的 mysqld.exe是服务端程序,mysql.exe是客户端程序。需要先运行mysqld.exe。data文件是用来存数据的地方。

    运行客户端时,如果直接双击进入为游客模式;正确的运行方式是在终端里输入命令指定用户名和参数,如:mysql -h 127.0.0.1 -p 3306 -uroot -p

    • -h:要连接的服务端主机名称,如果是本机可以忽略
    • -p:指定的端口,Mysql默认端口号为3306,可以不写
    • -u:指定用户名
    • -p:指定密码(一般不指定密码,因为此时显示的密码是明文。通常直接-p后回车再输入密码)

    以管理员身份运行终端cmd:

    • mysqld-install # 注册系统服务,注册后可设置为自动启动,下次就不用自己开启服务端
    • sc delete mysql # 删除服务
    • net start mysql # 启动服务
    • net stop mysql # 停止服务
    • tasklist | findstr mysqld # 查看进程
    • taskkill -f/pid 18536 # 关闭指定的进程
    • taskkiii /F /PID 进程号

    mysql 5.6 管理员密码的设置

    知道密码时:

    1.登录到mysql执行更新语句来修改

    • 进入mysql—>use mysql—>update user set password=password("123")where host ="localhost" and user = "root"—>flush privileges;或则重启mysql(注123为你设置的密码)

    2.使用mysqladmin小工具修改

    • mysqladmin -uroot -p123 password 321(注123为原来的密码,321设置你的新密码)
    • mysqladmin -uroot -p password 123(没有密码,设置密码123)

    修改成功后会报一个警告信息Warning: Using a password on the command line interface can be insecure.

    当命令输入错误的时候,可以用c取消前面的命令,c的意思是cancel

    不知道密码时通过跳过授权来修改(破解密码):

    • 以管理员身份运行终端—> net stop mysql(停止mysql服务)—>mysqld --skip-grant-tables(跳过授权开启服务端)—>以普通身份运行终端—>mysql -uroot -p直接回车不输入密码—>use mysql(切换到mysql数据库下)—>update user set password=password("123") where host="localhost" and user ="root";(修改管理员用户对应的密码)—>重新正常启动服务端(net start mysql)—>正常登录

    MySql存储引擎

    文件格式有很多种,对应的软件也有很多种,txt,pdf等

    针对不同类型的文件,需要对应有不同的软件帮助我们去操作

    # 查看所有的存储引擎
    show engines;
    
    innode 是默认的存储引擎,查询速度较myism慢,但是更安全
    myisam 是mysql老版本用的存储引擎
    blackhole:无论存什么,都立马消失(黑洞)
    menory:内存引擎(数据全部存在内存中)
    
    # 查看不同存储引擎存储表结构文件特点
    create table t1(id int)engine=innodb;
    create table t2(id int)engine=myisam;
    create table t3(id int)engine=blackhole;
    create table t4(id int)engine=menory;
    
    insert into t1 values(1);
    insert into t2 values(1);
    insert into t3 values(1);
    insert into t4 values(1);
    
    innode:创建一个表之后会在data文件夹db1文件夹中创建两个文件。以frm结尾的是表结构,以ibd结尾的是表真实数据。
        
    myisam:创建一个一个表之后会创建三个文件,以frm文件结尾的是表结构,以MYD结尾的是真实数据,以MYI结尾的是表的索引
        
    blackhole:创建一个表之后,会出现一个以frm结尾的文件表示的是表结构,因为此存储引擎,无论存什么,都会消失,所以不会有文件真实数据存在。
        
    menory:创建一个表之后,会出现一个以frm结尾的文件表示的是表结构。由于真实数据是存储在内存中,所以也也没有真实数据在硬盘中。
    

    简单的使用

    数据必须找个文件存起来也就是表,表必须存在库中也就是文件夹中

    库的操作

    库类似于文件夹。

    # 切换数据库
    use 数据库名称
    
    
    
    # 查看所有数据库
    show databases;
    # 查看单个数据库的详细信息
    show create database 数据库名;
    show create database db1;  查单个
    # 查看当前库
    select database();
    
    
    
    # 创建数据库
    create database 数据库名称;
    create database db1;
    # 创建数据库时指定字符编码,不能写utf-8
    create database 数据库名称 charset utf8;
    
    
    
    # 删除数据库
    drop database 数据库名称;
    drop database db1;  删库
    
    
    
    # 修改数据库编码,可以进入到数据库文件修改db.opt。db.opt的第一行是编码,第二行是校对规则
    
    # 修改数据库的字符编码
    alter database 数据库名 charset utf-8;
    alter database db1 charset='gbk';  修改编码
    # 修改数据库名,可以直接修改对应的文件夹名称
    

    表的操作

    表就相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段。

    还记得我们之前写过的"员工信息表作业"吗?存储着员工信息的文件是这样的:

    id,name,age,sex,phone,job
    1,Tank,83,female,13651054608,IT
    2,Nick,26,male,13304320533,Tearcher
    3,Sean,25,male,13332353222,IT
    4,Jason,40,male,13332353333,IT
    

    如果把上面这个文件改成一张表,应该是下面这个样子

    id name age sex phone job
    1 Tank 83 female 13651054608 IT
    2 Nick 26 male 13304320533 Tearcher
    3 Sean 25 male 13332353222 IT
    4 Jason 40 male 13332353333 IT

    id,name,age,sex,phone,job称为字段,其余的,一行内容称为一条记录。

    在创建表的时候,需要先制定库。创建表就是创建某一个文件。

    # 指定库或切换数据库:
    use 数据库名称
    # 查看当当前所在库:
    select databases();
    
    
    
    # 创建表
    create table 表名称(列名称 列的数据类型,列名称2 列的数据类型...);
    create table userinfo(id int,name char);
    # 创建表时指定编码方式
    create table 表名称(列名称 列的数据类型,列名称2 列的数据类型...)charset gbk;
    
    
    
    # 查看当前库下所有表
    show tables;
    # 查看表结构
    desc 表名称;<===>describe 表名称;
    desc userinfo;    <==> describe userinfo;
    # 查看表的创建语句
    show create table 表名称;
    show create table userinfo;
    
    
    
    # 修改表结构
    # 添加字段
    alter table 表名称 add 列名称 数据类型
    # 删除字段
    alter table 表名称 drop 列名称
    # 修改数据类型
    alter table 表名称 modify 列名称 新的数据类型;
    alter table userinfo modify name char(32);
    # 修改列名
    alter table 表名称 change 旧的列名 新的列名 新的类型;
    # 修改编码
    alter table 表名称 charset utf8;
    
    
    
    # 删除表
    drop table 表名称;
    drop table userinfo;
    # 清空表
    truncate table 表名称;
    
    
  • 相关阅读:
    this和e.target的异同
    onmouseover和onmouseenter区别
    jquery带参插件函数的编写
    让bind函数支持IE8浏览器的方法
    LeetCode #9 Palindrome Number
    LeetCode #7 Reverse Integer
    LeetCode #1 Two Sum
    iOS 真机测试错误“The application bundle does not contain a valid identifier”
    Swift、Objective-C 单例模式 (Singleton)
    iOS 相册和网络图片的存取
  • 原文地址:https://www.cnblogs.com/zuihoudebieli/p/11375218.html
Copyright © 2020-2023  润新知