zoukankan      html  css  js  c++  java
  • 终端操作数据库

    新装了mysql8.0后再用navicat链接就会报2059的错误。

    1.进入mysql命令: mysql -uroot -p

    2.输入你的密码:xxxx
    然后运行以下SQL即可

    alter user 'root'@'%' identified by '123456' password expire never;
    alter user 'root'@'%' identified with mysql_native_password by '123456';
    flush privileges;
    

    3. 连接远程服务器 mysql -h 39.106.41.11 -utest -pgloryroad -p3306

     

     mysql 命令需要增加到path路径下

     

    4.展示数据库:show databases;

     

    5.切换数据库: use 数据库名称;

     

    6.查看你当前选中的数据库:select database();

     

    7.展示数据库中的表: show tables;
      查看表数据          1、select * from tableName
      条件查询数据       2、select * from tableName where id = 20;
      查询表插入领一张表数据  3、insert into tableName(id, name) select 21,name from tableName where c_id = 20;

     

    8.创建数据库:create database gloryroad;

     

    9.创建表:create table test(id int,name varchar(20));

     

    10:插入数据:insert into test values(1,"lilaoshi");

     

    11.更新数据:update test set name="cailaoshi" where id = 2;

     

    12.删除数据库:drop database gloryroad; (慎重操作)

     

    13.删除表的数据:delete from test;

     

    14.删除表数据和表结构:drop table test;

     

    15.建一个复杂的表:CREATE TABLE `studentinfo` (   `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '不为空的自增长的主键ID',   `student_id` varchar(20) NOT NULL,   `name` varchar(30) NOT NULL,   `sex` char(4) DEFAULT NULL,   `tel` varchar(13) NOT NULL,   `AdmissionDate` timestamp DEFAULT '0000-00-00 00:00:00',   `status` tinyint(2) DEFAULT '0',   PRIMARY KEY (`ID`),   UNIQUE KEY `tel` (`tel`),   UNIQUE KEY `student_id` (`student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 COMMENT='学生信息表';

     

    遇到了一个错误:

     

    ERROR 1067 (42000): Invalid default value for 'AdmissionDate'

     

    产生的原因:

     

    是因为sql_mode中的NO_ZEROR_DATE导制的,在strict mode中不允许'0000-00-00'作为合法日期

     

    查看sql_mode:show variables like 'sql_mode';

     

    +---------------+--------------------------------------------------------------------------------------------------------------+

    | Variable_name | Value |

    +---------------+--------------------------------------------------------------------------------------------------------------+

    | sql_mode | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |

    +---------------+--------------------------------------------------------------------------------------------------------------+

     

    解决办法:set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

     

    16:创建一个关联的表:

     

    create table grade( ID int auto_increment not null, stuID varchar(20), course varchar(20) not null, score tinyint(4) default 0, primary key (ID), key idx_stuid(stuID), CONSTRAINT FK_ID FOREIGN KEY(stuID) REFERENCES studentInfo(student_id) )engine=innodb character set utf8 comment "学生成绩表";

     

    名词解释-外键:

     

    外键: grade表中插入的stuID字段的数据必须在studentInfo 的student_id中存在,不在,则不让插入。 删除studentInfo中的student_id数据,那么grade中相关 的stuID数据必须先删除,才能成功。

     

    示例:

     

    studentInfo student_id:2007123 #不能直接删除,grade表中 删除2007123,就可以删除 student_id:2007123 grade: stuID:2007124 插入失败 stuID:2007123 插入成功--》把删掉

     

     

     

    *************************************************华丽的分割线***************************************************

     

    python操作数据库的模式:

     

    写一堆参数连接数据

     

    获取游标

     

    执行sql

     

    关闭游标

     

    关闭连接

    另,查询数据库运行状态的基本命令:

    #查询数据库连接
    show full  processlist;
    show status like '%Max_used_connections%';
    show status like '%Threads_connected%';#当前连接数
    show status like '%table_lock%';#表锁定
    show status like 'innodb_row_lock%';#行锁定
    show status like '%qcache%'; #查询缓存情况
    show variables like "%query_cache%";
    SHOW STATUS LIKE 'Qcache%';
    show variables like "%binlog%";
    show status like 'Aborted_clients';#由于客户没有正确关闭连接已经死掉,已经放弃的连接数量
    show variables like '%max_connections%';//查看最大连接数量
    show variables like '%timeout%';#查看超时时间
    show variables like 'log_%'; #查看日志是否启动
     
     

    docker 安装完mysql 后客户端无法访问

    1.在虚拟机的centos 中安装 docker 的mysql 镜像。

    docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

    2 .在虚拟机外面通过客户端访问docker安装的mysql ,连接失败

    (1)进入镜像中的mysql(ti 后面的字符串是mysql镜像ID)

    docker exec -ti 2cbb0f246353 /bin/bash

    (2)登录mysql

    mysql -u root -p

    (3)修改root 可以通过任何客户端连接

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
  • 相关阅读:
    rider中的gitbash如何从上次退出的目录启动
    docker swarm外部验证负载均衡时不生效
    css做一个可以变成关闭图标的菜单按钮
    mac外接键盘HOME,END键问题
    kubernetes实践录 使用Baget部署一个私有Nuget仓库
    C#中正确的实现IDisposable接口以释放非托管资源
    网络磁盘nfs使用笔记
    EFCore分组查询(GroupBy)后获取第一个元素
    Angular踩坑ExpressionChangedAfterItHasBeenCheckedError异常
    写了个适用于vscode的minio图床客户端插件 vscodeminiopicman
  • 原文地址:https://www.cnblogs.com/pxuan/p/12916706.html
Copyright © 2011-2022 走看看