美文网首页
mysql工作笔记

mysql工作笔记

作者: 塞外务农 | 来源:发表于2018-01-12 13:27 被阅读0次

    [TOC]

    MySQL常用函数

    CONCAT          将多个字段内容连接在一起        select CONCAT(title,know) from my_course where id = 1
                (高中语文诗二首2,3,4,5,6,16,24)
                
    CONCAT_WS       将多个字段用指定字符连接在一起     select CONCAT_WS('|',title,know,id) from my_course where id = 1
                (高中语文诗二首|2,3,4,5,6,16,24,|1)
                
    INSERT          截取字段中的某一截       select INSERT(title,1,3,'---') from my_course where id = 1
                (---文诗二首)
                
    LPAD            将字段补充到指定长度          select LPAD(title,20,'-') from my_course where id = 1
                (-------------高中语文诗二首)
                
    RPAD            将字段补充到指定长度          select RPAD(title,20,'-') from my_course where id = 1
                (高中语文诗二首-------------)
                
    LTRIM(s)            去掉字符串s开始处的空格
    RTRIM(s)            去掉字符串s结尾处的空格
    TRIM(s)             去掉字符串s开始和结尾处的空格
    TRIM(s1 FROM s)     去掉字符串s中开始处和结尾处的指定字符
    REPEAT(s,n)         将字符串s重复n次
    REPLACE(s,s1,s2)    将字符串s2替代字符串s中的字符串s1     select REPLACE(title,'语文','-') from my_course where id = 1
    

    命令行连接

    mysql -h 192.168.0.60 -u dearedu -p -P 3306
    

    PDO连接方法

    header('content-type: text/html; charset=utf8');
    
    try {
        $pdo = new PDO('mysql:host=localhost; dbname=work', 'root', 'root', array(1002 => 'set names utf8'));
    } catch (PDOException $e) {
        die ("Error!: " . $e->getMessage() . "<br/>");
    }
    
    $result = $pdo->query('select * from city');
    
    $one = $result->fetch(PDO::FETCH_ASSOC);
    
    $ls = $result->fetchAll(PDO::FETCH_ASSOC);
    

    开启定时备份数据库

    创建shell文件
        mkdir /home/backup/backup.sh
    编辑shell文件
        vi /home/backup/backup.sh
            #!/bin/bash
            currentdate=`date +%Y%m%d`
            mysqldump -udearedu -ppower123321 member > /home/backup/member_${currentdate}.sql
    赋权限给shell文件
        chmod u+x /home/backup/backup.sh
    添加计划任务
        crontab -e
        插入内容 */1 * * * * /home/backup/backup.sh
    

    数据的导入导出

    1. 导出
    1.导出整个数据库           
            mysqldump -u root -p wyapi > e:/abc.sql
    2.导出一个表              
            mysqldump -u root -p wyapi user > e:/abc.sql
    3.导出一个数据库结构       
            mysqldump -u root -p -d --add-drop-table wyapi > e:/abc.sql
    4.导出数据库wyapi中表notes的前100条数据
            mysqldump -uroot -proot wyapi notes --where "1=1 limit 100" --lock-all-table > e:/abc.sql
    2. 导入
        mysql -uroot -proot
        use test
        source e:/abc.sql
    C:\phpstudy\MySQL\bin>mysqldump.exe -uroot -proot whty_gaozhong wl_exam_question > c:\wl_exam_question.sql
    
    只导数据
    C:\phpstudy\MySQL\bin>mysqldump -t whty_gaozhong -uroot -proot --tables wl_exam_question > c:\wl_exam_question.sql
    
    

    mysql慢查询设置

    • 查看慢查询时间 (默认10s)
      show variables like "long_query_time";
    • 查看慢查询配置情况
      show status like "%slow_queries%";
    • 查看慢查询日志路径
      show variables like "%slow%";
    • 具体配置如下:
    log-slow-queries=F:phpStudyMySQLdataXB-20170514HRTA-slow.log (路劲)
    long_query_time=1 (时间)
    log-queries-not-using-indexes (记录下没有使用索引的查询)
    

    mysql存储引擎的区分

    • MYISAM 默认存储引擎
      表锁,顾而并发不好
      全文搜索
      压缩机制
      适合大量的select
      保存记录的行数,count(*)更高效

    • InnoDB
      行锁,顾而并发好
      事务
      外键
      适合大量的inert、update

    mysql字段类型

    日期和时间数据类型
    date        3字节,日期,格式:2014-09-18
    time        3字节,时间,格式:08:42:30
    datetime    8字节,日期时间,格式:2014-09-18 08:42:30
    timestamp   4字节,自动存储记录修改的时间
    year        1字节,年份
    
    数值数据类型
    tinyint         1字节,范围(-128~127)
    smallint        2字节,范围(-32768~32767)
    mediumint       3字节,范围(-8388608~8388607)
    int             4字节,范围(-2147483648~2147483647)
    bigint          8字节,范围(+-9.22*10的18次方)
    上面定义的都是有符号的,当然了,也可以加上unsigned关键字,定义成无符号的类型,那么对应的取值范围就要翻翻了,比如: tinyint unsigned的取值范围为0~255。
    
    浮点型
    float(m, d)     4字节,单精度浮点型,m总个数,d小数位
    double(m, d)    8字节,双精度浮点型,m总个数,d小数位
    decimal(m, d)   decimal是存储为字符串的浮点数
    我在MySQL中建立了一个表,有一列为float(5, 3);做了以下试验:
    1.插入123.45678,最后查询得到的结果为99.999;
    2.插入123.456,最后查询结果为99.999;
    3.插入12.34567,最后查询结果为12.346;
    所以,在使用浮点型的时候,还是要注意陷阱的,要以插入数据库中的实际结果为准。
    
    字符串数据类型
    char(n)     固定长度,最多255个字符
    varchar(n)  可变长度,最多65535个字符
    tinytext    可变长度,最多255个字符
    text        可变长度,最多65535个字符
    mediumtext  可变长度,最多2的24次方-1个字符
    longtext    可变长度,最多2的32次方-1个字符
    
    1.char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。
    2.同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。
    3.超过char和varchar的n设置后,字符串会被截断。
    4.char的上限为255字节,varchar的上限65535字节,text的上限为65535。
    5.char在存储的时候会截断尾部的空格,varchar和text不会。
    6.varchar会使用1-3个字节来存储长度,text不会。
    
    更多优化内容如下:http://www.jb51.net/article/55853.htm
    

    mysql开启远程连接

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
    flush privileges;
    

    left join、inner join区别

    left join:
        以左表为主,将左表全部记录取出来,右表只取出符合条件的记录,不符合条件的记录设为NUll,同时此时左表的任何不空的判断都无效,右边的不为空也无效
        取并集
    
    inner join:
        取交集,属于任何条件有效
    

    1042 can't get hostname for your address解决办法
    vim /etc/my.cnf

    在[mysqld]节点下新增或修改如下两行
    skip-name-resolve

    忽略主机名的方式访问

    lower_case_table_names=1

    忽略数据库表名大小写

    相关文章

      网友评论

          本文标题:mysql工作笔记

          本文链接:https://www.haomeiwen.com/subject/jqhfoxtx.html