zoukankan      html  css  js  c++  java
  • MySQL操作

    Ubuntu 下载mysql

    sudo apt install mysql-server mysql-common

    已root用户通过mycli 补全tab进入MySQL命令行进行操作。

    $ sudo pip3 install mycli
    % sudo mycli -uroot mysql
    > create user '用户名'@'访问主机' identified by '密码';
    mysql> grant 权限列表 on 数据库 to '用户名'@'访问主机' ;(修改权限时在后面加with grant option)

    字段操作

    添加字段

    ALTER TABLE table_name ADD COLUMN Name VARCHAR(128) DEFAULT NULL COMMENT '姓名';
     修改原字段名称及类型
    ALTER TABLE table_name CHANGE old_name new_name field_type;
    删除字段
    ALTER TABLE table_name DROP field_name;

     INSERT 中的子查询

    考虑与 CUSTOMERS 表拥有相似结构的 CUSTOMERS_BKP 表。现在要将 CUSTOMER 表中所有的数据复制到 CUSTOMERS_BKP 表中,用于复制表数据,克隆数据库。

    SQL> INSERT INTO CUSTOMERS_BKP
         SELECT * FROM CUSTOMERS 
         WHERE ID IN (SELECT ID 
                      FROM CUSTOMERS) ;

     UPDATE中的子查询

    mysql出现You can’t specify target table for update in FROM clause 这个错误的意思是不能在同一个sql语句中,先select同一个表的某些值,然后再update这个表。 select的结果再通过一个中间表select多一次,就可以避免这个错误。

    注意,只有mysql会有这个问题,mssql与oracle都没有这个问题。

    update worknote set endtime = 1595211930 where id in  (select id from (select id from worknote ) as a);

    导出表结构和表数据

    mysqldump 导出表结构和表数据

    mysqldump -h localhost -uroot -p123456 (-d) dbname  (table) ( --ignore-table=dbname.tablename) > dump.sql

    -d: 导出时不包含数据

    table: 导出时指定单个表

    --ignore-table=dbname.tablename: 导出时排除某个表

    所以上面不包括括号内容时代表着,导出整个daname数据库所有的表结构和表数据。

    时间戳转换

    mysql> SELECT FROM_UNIXTIME(1560739226, '%Y-%m-%d %H:%m:%s') as time;
    +---------------------+
    | time                |
    +---------------------+
    | 2019-06-17 10:06:26 |
    +---------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT DATE_FORMAT(1560739226, '%Y-%m-%d %H:%m:%s') as time;
    +------+
    | time |
    +------+
    | NULL |
    +------+
    1 row in set, 1 warning (0.00 sec)

    时间格式('%Y-%m-%d %H:%m:%s')字符串%s直接存进数据库中,需要UNIX_TIMESTAMP('%s')进行转换成时间戳,这样可以组SQL语句进行比较时间大小范围。

     MySQL的limit m,n

    SELECT * FROM table_name LIMIT [m],n;
    SELECT * FROM stu LIMIT 2,4; //取stu表中第3至第6条,共4条记录。

    m: [m]为可选,如果填写表示skip步长,即跳过m条。

    n:显示条数。指从第m+1条记录开始,取n条记录。

    SQLDriveConnect报错

    连接到驱动程序

    参考

    SQL文档

    C教程

    配置MySQL驱动程序

    极客学院SQL进阶

    作者:yusq77

    -------------------------------------------

    Wish you all the best and good health in 2021.

  • 相关阅读:
    15、事例十五:纹理映射
    14、事例十四:材质:十二个材质球
    [luogu]P1084 疫情控制
    [luogu]P2502 [HAOI2006]旅行
    [luogu]P2053 [SCOI2007]修车
    线性相关/线性基
    [luogu]P3629 [APIO2010]巡逻
    [luogu]P3623 [APIO2008]免费道路
    权值线段树
    树链剖分
  • 原文地址:https://www.cnblogs.com/yusq77/p/11009793.html
Copyright © 2011-2022 走看看