美文网首页
Mysql 操作详解

Mysql 操作详解

作者: MF_遇见零一 | 来源:发表于2018-04-23 16:48 被阅读0次

    修改mysql密码

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; //修改密码
    FLUSH PRIVILEGES; // 更新权限
    

    在创建数据库时,指定数据库的编码

    CREATE DATABASE <数据库名> DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; // gbk编码
    CREATE DATABASE <数据库名> DEFAULT CHARSET utf8 COLLATE utf8_general_ci; //utf8编码
    
    或者直接修改配置文件
    vim /etc/mysql/my.cnf
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    
    重启mysql服务
    sudo service mysql stop
    sudo service mysql start
    
    通过status命令可以查看状态信息
    

    查看数据表设置( 字段名称和类型)

    DESCRIBE <表名>;
    

    查询时,如果某个字段存在重复值,可以用DISTINCT 去重

    SELECT owner FROM pet;
    SELECT DISTINCT owner FROM pet;
    

    由于字符串类型数据大小写不敏感,在排序时可用用 BINARY 强制区分大小写

    SELECT name,birth FROM pet ORDER BY BINARY  species;
    

    排序时 ASC/DESC 仅适用于它前面的字段,不影响其他列的顺序;

    SELECT name,species,birth FROM pet OREDER BY species, birth DESC; 
    // 升序(默认)对动物的种类进行排序,然后降序根据生日进行排序
    

    数值类型

    整型

    • 如果为一个数值列指定ZEROFILL,MySql将自动为该列添加UNSIGNED属性
    • SERIAL 等价于 BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
    • SERIAL DEFAULT VALUE 等价于 NOT NULL AUTO_INCREMENT

    浮点数

    FLOAT[(M,D)] [UNSIGNED] [ZEROFILL] 
    // M: 浮点数的总位数
    // D:小数点后面的位数
    // 如果指定UNSIGNED,不允许负值
    

    日期时间类型

    • DATE
    // MySql 以 YYYY-MM-DD 格式显示 DATE 值,但允许使用字符串或数字类型数据为 DATE 列赋值
    INSERT INTO test_time (date) VALUE ('2018-04-25'); // 如果不加引号,传入的值为0000-00-00
    
    • DATETIME
    //日期和时间的组合,MySql 以 YYYY-MM-DD HH:MM:SS 格式显示 DATETIME 值,但允许使用字符串或数字类型数据为 DATE 列赋值
    
    • TIMESTAMP
    //TIMESTAMP 列用于执行 INSERT 或 UPDATE 操作是记录日期和时间
    //如果你不分配一个值,自动设置为最近操作的日期和时间
    //也可以通过分配一个 NULL,将 TIMESTAMP 列设置为当前的日期和时间
    
    • TIME
    //MySql 以 HH:MM:SS 格式显示 TIME 值,但允许使用字符串或数字为 TIME 列分配值
    
    • YEAR
    CREATE TABLE test_year (year_2 YEAR(2),year_4 YEAR); // 默认为4位
    INSERT INTO test_year (year_2,year_4) VALUE (30,30); // 20, 2030
    INSERT INTO test_year (year_2,year_4) VALUE ('30','30'); // 20, 2030
    INSERT INTO test_year (year_2,year_4) VALUE (2030,2030); // 20, 2030
    INSERT INTO test_year (year_2,year_4) VALUE ('2030','2030'); // 20, 2030
    

    字符串类型

    //CHARSET 等价于 CHARACTER SET
    
    • CHAR / VARCHAR
    CREATE TABLE test_string (
        str_char CHAR(4),
        str_varchar VARCHAR(4)
    );
    INSERT INTO test_string VALUE('ABCDE','ABCDE');  //ABCD, ABCD 超过长度的部分自动省略
    
    • VARBINARY
    //VARBINARY 类型类似于 VARCHAR 类型,但存储二进制 字节 字符串,而非普通字符串
    
    • TEXT / LONGTEXT
    //存储长文本...
    
    • 枚举类型
    ENUM('value1','value2','value3');
    

    函数和操作符

    • COALESCE
    //返回参数列表中的第一个非 NULL 值,在没有非 NULL 值的情况下返回值为 NULL;
    SELECT COALESCE(null,1);   // 1
    SELECT COALESCE(null,null,null); // NULL
    
    • GREATEST
    // 当有两个或两个以上参数时,返回值为最大的那个参数
    SELECT GREATEST(2,0); // 2
    SELECT GREATEAT('b','a','c'); // c
    
    • expr IN (value,...)
    // 若IN 列表中包含 expr , 返回值为1,否则返回值为 0
    // 匹配字符串时,不区分大小写
    // 若expr 的值为 NULL, 无论是否匹配,返回值都为 NULL
    SELECT 'yjy' IN ('mf','css','yjy') ; // 1
    
    • INTERVAL(N,N1,N2,N3....)
    //返回比 N 大的数的位置, N1<N2<N3
    SELECT INTERVAL (20,1,5,19,20,21,30); //4 从0开始计数 
    
    • 流程控制函数
    SELECT CASE 3 
      WHEN 1 THEN 'one'
      WHEN 2 THEN 'two'
      ELSE  'more' 
    END; 
    // 3 
    
    SELECT CASE WHEN 1>0
      THEN 'true'
      ELSE 'false'
    END;
    // true
    
    SELECT CASE BINARY 'B' 
      WHEN 'b' THEN 2
    END;
    // NULL
    
    • IF(expr1,expr2,expr3)
    SELECT IF(1<2,'yes','no');  // 如果 expr1 的值为true,返回 expr2 否则返回 expr3
    // 如果 expr2 或 expr3 中有一个为 NULL, 那么不管判断的结果如何,返回不是 NULL 的那个
    SELECT IF(1<2,NULL,'yyy'); // yyy  
    

    字符串函数

    • LENGTH
    // 返回字符串的长度
    SELECT LENGTH('yjy');  // 3
    SELECT CHAR_LENGTH('yjy');  //3
    
    • CONCAT(str1,str2)
    //返回的结果为连接参数产生的字符串
    // 如果有一个参数的值为 null ,则返回值为 null
    // 如果有参数为数字类型,可用cast 转换
    SELECT CONCAT( CAST(int_col AS CHAR), char_col );
    
    • ELT(N,str1,str2,str3)
    SELECT ELT(1,'yy','jj','pp');   // yy
    SELECT ELT(2,'yy','jj','pp'); // jj
    SELECT ELT(3,'yy','jj','pp'); // pp
    // 若N<1 或者 N> arg.length,  返回 NULL
    
    • FORMAT(X,D)
    // 货币转换, X 为传入的数字,D 保留的小数位, 返回结果为字符串类型
    SELECT FORMAT(1156151.556,2);  // 1,156,151,56, 结果四舍五入了 
    
    • LOAD_FILE(file_name)
    // 读取文件,并将文件按照字符串的格式返回  (满足读取 条件的前提下)
    UPDATE tal_name SET blob_column = LOAD_FILE('/tmp/picture') WHERE id=1;
    

    时间日期函数

    • CURDATE()
    // 返回当前的日期
    SELECT CURDATE(); // 2018-04-25
    SELECT CURDATE() +0; // 20180425  
    

    -CURTIME()

    //返回当前的时间 // 16:37:46 
    
    • Mysql 的时间计算
    SELECT '2018-01-01 12:52:50' + INTERVAL 1 hour; // 2018-01-01 13:52:50
    SELECT DATE_ADD('2018-05-04', INTERVAL 1 month); // 2018-06-04
    
    • 计算星期
    SELECT DAYNAME('2018-04-25');  // wednesday
    
    • LAST_DAY(date);
    SELECT LAST_DAY('2018-04-25');  // 2018-04-30
    
    • NOW();
    //返回当前日期和时间值 
    SELECT NOW(); 
    SELECT NOW()+0;
    

    相关文章

      网友评论

          本文标题:Mysql 操作详解

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