zoukankan      html  css  js  c++  java
  • 基本的mysql语句

    数据库概念

    那Mysql能干嘛呢?它就是一款软件,安装在任何一台计算机或者服务器上的时候,只要我告诉它创建一个文件,新增一个数据,删除一个数据它就能帮我去做想要的操作

    那我们暂且能不能理解为mysql就是用来帮我们操作文件的!

    MySQL:用于管理文件的一个软件(两个程序)

    ​ -服务端软件

    ​ -socket服务端

    ​ -本地文件操作

    ​ -解析指令

    ​ -客户端软件

    ​ -socket客户端

    ​ -发送指令

    ​ -解析指令

    客户端可以有很多个,python,java,php,c++都可以编程一个客户端,用代码指定ip port链接上服务端即可操作

    那么问题来了,不同的客户端练我一个服务端,语言不相同无法实现交流。所以应该有共同的语言才行>>>解析指令(sql语句)

    技能:

    ​ -安装 服务端和客户端

    ​ -链接

    ​ -学习sql语句规则,指定服务端做任何操作

    mysql只是一种能够帮助我们管理数据的软件,还有其他类似的软件也是通过发送指令来帮你管理数据库

    其他类似软件:

    ​ 关系型数据库:sqlite,db2,oracle,access,sql server,MySQl(必须要表格存储,需要建立表格(k可以就是user, v就是可以是多类型的,比如说是大列表,大字典,大字典中又大字典等))

    ​ 非关系型数据库:mongodb,redis (数据存储方式k,v键值对的形式)

    关系型:彼此之间有约束或者有联系

    总结:mysql就是帮助我们远程在文件上做相应操作的

    MySQL的安装

    mysqld服务端

    mysql客户端

    软件目录结构初识

    终端最好以管理员身份运行

    切换到mysql目录下启动mysqld服务端(阻塞,监听地址,固定的ip和端口)

    cd D:mysql56
    D:
    

    新开cmd窗口启动mysql客户端

    链接mysql:

    mysql -h 127.0.0.1 -P 3306 -uroot -p 密码不输,直接回车

    如果是在本机登陆mysqld服务端,可以简写为mysql -uroot -p

    客户端服务端请求流程分析

    show databases诠释文件夹和库概念

    环节变量配置

    系统服务制作(制作之前一定要先把mysql关闭)

    # 查看mysqld进程
    tasklist |findstr mysqld
    # 杀死mysqld进程
    taskkill /F /PID 'PID号'
    

    将mysqld这款软件做成系统服务软件

    mysqld --install
    

    查看计算机当前运行程序数

    services.msc
    

    修改密码与破解管理员密码

    mysqladmin -uroot -p password "123"
    
    # 第一次修改完密码以后,之后还修改密码需要
    mysqladmin -uroot -p123 password "123456"
    # 为了后续调试方便,这里把密码设为空值
    mysqladmin -uroot -p123 password "新密码"
    

    破解密码

    • 先关闭mysqld服务端

    • 以跳过授权表的方式在命令行中启动mysqld服务端

      mysqld --skip-grant-tables
      
    • 客户端直接以无密码的方式登陆root用户修改密码

      mysql -uroot -p
      
    • 修改管理员密码

      update mysql.user set password=password("123") where user="root" and host="localhost";
      flush privileges;  # 刷新权限
      
    • 命令行杀死mysqld服务

      tasklist |findstr mysqld
      taskkill F PID 'PID'
      
    • 服务管理正常启动mysqld

    统一字符编码

    mysql命令:"s" 查看编码

    修改配置文件,执行时会自动查找my.ini文件

    mysql不输用户名和密码,会默认以游客模式登陆,不好!

    # my.ini配置文件特点
    [mysql]
    #终端输入mysql打头的命令就会加载下面的配置
    username='root'  # 演示确实加载改文件,但是username叫user才正确
    password = '123'
    [mysqld]
    

    通用配置

    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8
    

    mac系统

    finder中切换到默认安装路径下/usr/local/mysql

    下面就是一大堆文件目录

    配置文件是my.cnf,没有int等windows上的配置文件

    基本sql语句

    对数据的增删改查

    sql书写错误,只要没加分号,可以加c使前面的sql语句失效

    • 针对文件夹的(库)

      # 增
      create database db1 charset utf8;
      # 改
      alter database db1 charset gbk;
      # 查
      show databases;
      show create database db1;
      # 删
      drop database db1;
      
    • 针对文件的(表)

      文件首先需要在文件夹下面,所以在操作文件之前,应该先确定操作的是哪个文件夹下面的文件

      # 切换文件夹
      use db1;
      select database();  # 查看当前所在的库
      # 增
      create table t1(id int,name char);  # 创建出来的可能是多个文件,解耦管理
      # 改	
      alter table t1 modify name char(16);
      # 查
      show tables;
      show create table t1;		# 查看表的详细信息
      describe t1; == desc t1;  # 查看表结构
      select name from userinfo where name='egon' or id=3
      # 删
      drop table t1;
      
    • 针对(记录)

      # 增
      insert into db1.t1 values (1,'egon'),(2,'kevin'),(3,'jason');  # into可加可不加,db1可以不指定,默认就是在当前库下
      # 改
      update db1.t1 set name='DSB' where id > 1;
      update db1.t1 set name='DSB' where id = 2 or id = 3;
      # 查
      select id,name from db1.t1;  # db1可不指定,默认当前库下
      select * from t1;
      select name from t1
      
      # 删
      delete from db1.t1 where id >3;
      delete from db1.t1 where name='egon'  # 这里注意如果少了一个引号,后面无论敲什么都没有用了需要将引号补全
      

    库相关操作参考egon博客即可

    表操作

    存储引擎

    支持多个客户端来连,不同的编程语言c++,java等,连接池就是减缓硬件压力的,保证数据库的安全,客户端接口来了先到连接池等着,然后到sql接口,数据管理语言和数据定义语言,存储过程,视图,触发器等,然后到解析器,查询事务对象优先级,然后到优化访问数据顺序,然后到缓存和缓冲池,全局和具体引擎的缓存和缓冲地。以前的默认的引擎是myisam,现在就是innodb,innodb数据更安全,支持行锁表锁,myisam 查询数据比innodb快,但是不安全,
    show engines;查看引擎,结果中的memory就是根本不会刷入硬盘,都是只存在内存,断电就数据就没了,还有backhole黑洞,往里面丢什么数据都没有了,
    

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

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

    # 查看所有的存储引擎
    show engines;
    
    # 查看不同存储引擎存储表结构文件特点
    create table t1(id int)engine=innodb; 会有两个文件,一个是t1.frm表结构;t1.ibd就是存在的真实的数据
    create table t2(id int)engine=myisam;会有三个文件,一个是t2.frm表结构;t2.MYD表示存储数据,D就是数据的意思,t2.MYI这个I表示index索引,查询数据根据索引来查
    create table t3(id int)engine=blackhole;只有一个表结构,t3.frm
    create table t4(id int)engine=memory;只有一个表结构
    
    
    insert into t1 values(1);
    insert into t2 values(1);
    insert into t3 values(1);查看数据的时候没有了
    insert into t4 values(1);重启服务端,查询数据的时候也没了
    
  • 相关阅读:
    DP 水题 最长不下降子序列
    数的划分
    水题------纪念品分组
    NY95 众数问题
    NY86 找球号(一)
    C3-Zexal的矩阵链乘
    C3-Zexal的多路流水线调度
    C4-Zexal的食物链
    C4-排列
    C3-炮弹杀伤力
  • 原文地址:https://www.cnblogs.com/huangxuanya/p/10852542.html
Copyright © 2011-2022 走看看