• 一 :Mysql基础


    1.Mysql初识

    三高角度引入

    三高:高并发,高可用,高性能.

    why:

      1.1数据文件和程序不应该放在同一台机器上!一旦机器挂了,数据和程序全都挂了不能对外提供服务,高可用性差.

      1.2纵向扩展有极限,横向扩展可以解决瓶颈问题.

      1.3虽然可以使用代码来对文件里面的数据进行操作,但是代码操作文件里面的数据是很麻烦,例如文件中的数据是连续的没有规则的.

      1.4如果使用文件,那么每个机器都只能操作自己机器的文件,别的机器访问造成数据不一致.

      1.5开发者只要开发基于数据的程序,就要自己写socket代码,来连接client和server端,然后传输数据.

    what:

    普通的文件存放数据是连续无规则的,如何将数据有规则的存放到文件中,然后设计一种规则可以提取所需要的数据,这样就会更快捷,这个规则叫---------SQL。

    SQL:结构化查询语言,需要用于存取数据以及查询、更新和管理关系型数据库。

    每个机器放一份数据文件造成数据不一致问题,解决数据不一致问题(提供锁保证数据一致),不同机器数据共享,涉及网络通信socket编程。

    DBMS数据库管理系统:已经写好的socket服务端代码,不用开发者自己写了,支持高并发,否则每次开发都需要把数据库写一遍,管理方式写一遍,socket写一遍。

    开发者可以不用关注数据的管理操作,你可以抽身出来把精力放到你的逻辑代码中,直接对数据增删改查即可。

    Mysql是一个C/S架构的软件,帮我们管理数据库,解决了上述的效率问题,并发问题,稳定性问题,数据一致性问题.高性能

    架构方面,mysql主从复制,多节点部署,即使挂了一台,开一个节点,立马同步其他节点的数据就可以对外提供服务,完全不影响使用,保证高可用

    Mysql是一个数据库管理软件,帮助我们管理数据库,具体如何操作数据的复杂的操作它来完成,不用你从头开发一个高性能高并发高可用的数据管理程序,你只需要通过sql语句来告诉他你想干什么,它就会十分高效的完成.

    当然Mysql不是唯一的DBMS,ORACEL,SQLSERVER等都是不错的DBMS.便宜不要钱,性能还好,尽管被Oracle收购了,还有mariaDB来解决Mysql闭源的风险.

    linux上安装mysql的时候会发现,都用mariaDB来替代了mysql,只是换了个名字,其他操作没有变化.

    你不用开发数据库了,但是用了别人的软件,就要熟悉别人的规则,才可以为你所用。

    二:概念梳理

    1数据:用来描述事物的特征 zhansan 18 60kg sex等,在python中是变量在内存中,在数据库中就是存放在硬盘文件中,断电不消失。

    2记录:描述一个事物的一系列典型的特征(数据)。

    3表:文件夹里面的文件.用来存放数据,列叫字段,行叫记录,一行记录是没有意义的,只是特定的数据,字段就是标识数据代表着什么意义。

    如 name age weight female

    4数据库:文件夹,用户表,部门表,工资表,不可能放在一张表,把他们组织到一起就需要数据库,本质就是文件夹。

    Mysql是高效管理数据存储,数据查询的一个系统软件.

    5数据库服务器:安装DBMS的计算机,性能远高于普通电脑

    6表结构:desc tablename查看表结构,有字段名,字段类型,约束等

    数据库分类:

    关系型数据库:有表结构

    非关系型数据库:没有表结构,就是key-value对的形式存储数据。

    三:安装Mysql

    windows安装就是一路点点点.

    启动mysql:net start mysql  相当于mysqld.exe,只不过是把它做成了服务而已。

    设置密码:mysqladmin -uroot -p123  password "新密码"

    -p后跟原始密码,米有就不写:mysqladmin -uroot -p password "123"

    密码存放在data文件夹里面的mysql文件夹的user开头的文件中

    破解密码:

    1.关掉服务:net stop mysql

    2.跳过授权表启动mysql:mysqld --skip-grant-tables

    3:mysql启动客户端:mysql -uroot -p不用密码就是root,想干嘛就干嘛

    4:updata mysql.user set password=password("123") where user="root" and host="localhost";#使用函数为123加密,对本地root用户

    5:flush privileeges;刷新权限。

    6:net start mysql即可使用新的密码。

    linux下破解密码一样,

    只不过mysqld --skip-grant-tables,换成mysqld-safe --skip-grant-tables

    字符编码:

    进入mysql后s可以看到server的信息,可以看到字符编码,可能为gbk,这可以在配置文件里面配置,让mysql启动的时候就是utf8编码

    linux下安装,yum install -y mysql-server mysql,现在都换成了mariadb

    centos7安装mariadbhttps://www.cnblogs.com/gyxpy/p/12995164.html

    四:配置文件

    windows下my.ini先备份一份

    linux /etc/my.cnf也是先备份一份, copy /etc/my.cnf /etc/my.cnf.bak

    然后进去修改,基本不用改,

    .ini文件里面[]括号内部表示命令,执行此命令默认加上的配置参数

    例如以前登录的时候都是mysql -uroot -p123

    在my.ini文件里面添加

    [mysql]

    user="root"

    password="123"

    那么以后登录直接mysql即可,后面的信息直接从my.ini配置文件里面加载了。

    因为mysql是客户端的命令,直接退出客户端,重新连接一下即可。

    但是如果更改了字符编码,就必须重启一下服务端才可以。

    [mysql]
    # 设置mysql客户端默认字符集
    default-character-set=utf8 
    [mysqld]
    #设置3306端口
    port = 3306 
    # 设置mysql的安装目录
    basedir=C:Program Filesmysql-5.6.39-winx64 
    # 设置mysql数据库的数据的存放目录
    datadir=C:Program Filesmysql-5.6.39-winx64data 
    # 允许最大连接数
    max_connections=200
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    View Code

    [mysql]是客户端的配置

    [mysqld]是服务端配置

    mysqldump命令备份数据库

    五:基础操作

    show databases;查看所有数据库

    use databasename;选择某数据库,相当于打开文件夹

    show tables;显示所有的数据表

    desc tablename;查看表结构

    select databases();查看当前在哪个数据库下

    #1. 操作文件夹
            增:create database db1 charset utf8;
            查:show databases;
            改:alter database db1 charset latin1;
            删除: drop database db1;
    
    
    #2. 操作文件
        先切换到文件夹下:use db1
            增:create table t1(id int,name char);
            查:show tables
            改:alter table t1 modify name char(3);
                  alter table t1 change name name1 char(2);
            删:drop table t1;
        
    
    #3. 操作文件中的内容/记录
            增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3');
            查:select * from t1;
            改:update t1 set name='sb' where id=2;
            删:delete from t1 where id=1;
    
            清空表:
                delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。
                truncate table t1;数据量大,删除速度比上一条快,且直接从零开始,
    
                auto_increment 表示:自增
                primary key 表示:约束(不能重复且不能为空);加速查找
    sql基础
    看十遍不如自己写一遍!巩固基础,纵横开拓!
  • 相关阅读:
    文件夹无法删除解决方案
    常用Web Service汇总(天气预报、时刻表等)
    浏览器兼容手册
    如何在word2007下右键添加“新建Word 2003 文档”
    Centos7上实现不同网段的服务器文件共享
    ubuntu安装界面 会出现不完整情况
    Centos7搭建dhcp服务器
    Centos7上搭建ftp服务器
    Centos7上配置网络和本地yum方法
    浅谈网络流
  • 原文地址:https://www.cnblogs.com/gyxpy/p/11563432.html
Copyright © 2020-2023  润新知