zoukankan      html  css  js  c++  java
  • 深入浅出MySQL 数据库开发、优化与管理维护(第2版) -- 读书笔记 -- 基础篇

     

    1、切换数据库

      use blog;

    2、显示当前数据库 所有的表。

          show tables; 
    +----------------+
    | Tables_in_blog |
    +----------------+
    | test |
    | y2bg_article |
    | y2bg_category |
    | y2bg_link |
    | y2bg_user |
    +----------------+

    3、显示指定表的字段信息

        desc y2bg_user;

    +----------+---------------------+------+-----+---------+----------------+
    | Field | Type | Null | Key | Default | Extra |
    +----------+---------------------+------+-----+---------+----------------+
    | id | int(11) unsigned | NO | PRI | NULL | auto_increment |
    | username | varchar(255) | NO || NULL ||
    | password | varchar(64) | NO ||||
    | email | varchar(255) | YES || NULL ||
    | type | tinyint(1) unsigned | NO || 1 ||
    | logo | varchar(255) | YES || NULL ||
    | status | tinyint(1) | NO || 0 ||
    +----------+---------------------+------+-----+---------+----------------+
    7 rows in set

    4、显示表详细信息

      show create table y2bg_user;

    | y2bg_user | CREATE TABLE `y2bg_user` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `username` varchar(255) NOT NULL COMMENT '用户名',
    `password` varchar(64) NOT NULL DEFAULT '' COMMENT '密码',
    `email` varchar(255) DEFAULT NULL COMMENT '电子邮箱',
    `type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '类型',
    `logo` varchar(255) DEFAULT NULL COMMENT 'Logo',
    `status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态',
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='用户表' |

    5、建表语句

    create table rhythmk(id int(8),name varchar(100),email varchar(200));

    6、添加表字段

    alter table rhythmk add column  create_time timestamp;

    7、删除表字段

    alter table rhythmk drop column  create_time;

    8、修改表字段名称

    alter table rhythmk   change   email  mail varchar(250);

    9、修改表字段属性

      alter table rhythmk   modify   mail varchar(200)  NOT NULL COMMENT '用户邮箱';

    备注:
    change 、modify 都可以修改表字段属性, change 修改是需要两次输入表字段,而modify 只需要一次输入表字段属性, 但 change是可以修改表字段名称的 modify是不支持的 。
    10、关联修改:

        update mlog.t_article a INNER JOIN mlog.t_article_tag b
    on a.id=b.id
    set a.title=CONCAT(a.title,'_update')
    where a.id=1;

    11、关联删除

    DELETE  a  FROM  mlog.t_article a INNER JOIN mlog.t_article_tag b
    on a.id=b.id
    where a.id=10;

    12、MySQL的扩展SQL中有一个非常有意思的应用WITH ROLLUP,在分组的统计数据的基础上再进行相同的统计。
    按分类统计数量 并求总数据量

    select  article_id ,COUNT(*) item_count from mlog.t_article_tag  GROUP BY  article_id  WITH  ROLLUP;
    +------------+------------+

    | article_id | item_count |
    +------------+------------+

    | 3 | 1 |
    | 4 | 3 |
    | NULL | 4 |
    +------------+------------+

    3 rows in set

    13、union 与 union all 是将 union 结果进行一次去重处理。

    14、ZEROFILL 添加0占位符,只是在影响显示结果,且只能在cmd 或者 linux 命令行才能看到效果,位数不足用O补充,超过位将忽视。

    15、mysql ,字母数字皆占1位,UTF-8中一个汉字3个字节,GBK中 一个汉字占用2个字节:

    select LENGTH('abc'); -- 3
    select LENGTH('abc123'); -- 6
    select LENGTH('我来了'); -- 9

    select CHAR_LENGTH('abc'); -- 3
    select CHAR_LENGTH('abc123'); -- 6
    SELECT CHAR_LENGTH('我来了'); -- 3

    如果新建一个 varchar(10)的字段 是可以存放10个字符。 [数字字母汉字]皆占一个字符位。

    16、时间 日期类型:
    如果想表示年月日用 Date (1000-01-01~9999-12-31)
    如果想表示年月日时分秒 DATETIME (1000-01-01 00:00:00~9999-12-31 23:59:59)
    datetime与timestamp区别,timestamp (1970 –2037 ) 范围相对比较小
    17、char 与 varcahr区别
    1>、char 范围为 0~255,varchar 范围为 0~63 535
    2>、char 会将插入字段中的值后面的空格去除掉,varchar 则原样保存。
    3>、存储空间需求不一样
    值 CHAR(4) 存储需求 VARCHAR(4) 存储需求
    ” ’ ’ 4个字节 ” 1个字节
    ‘ab’ ‘ab ’ 4个字节 ‘ab ’ 3个字节
    ‘abcd’ ‘abcd’ 4个字节 ‘abcd’ 5个字节
    ‘abcdefgh’ ‘abcd’ 4个字节 ‘abcd’ 5个字节

    ———— Mysql 中的 运算符
    18、 算术运算符加、减、乘、除、求末运算,以及0为被除数返回的为null。

    select 1.00+2.00 ,1.00-2.00,1.00*2.00,1.00/2.00,7%2,3/0;

    +-----------+-----------+-----------+-----------+-----+------+
    | 1.00+2.00 | 1.00-2.00 | 1.00*2.00 | 1.00/2.00 | 7%2 | 3/0 |
    +-----------+-----------+-----------+-----------+-----+------+
    | 3 | -1 | 2 | 0.5 | 1 | NULL |
    +-----------+-----------+-----------+-----------+-----+------+

    1 row in set

    select mod(10,3)
    ; //求末 等价 10%3
    select 10 div 2; //求余 等价 10/2

    19、regexp 运算符的使用格式为 str regexp strpart, 存在想匹配的字符串返回1,
    不存在匹配的字符串 返回0

    select 'abcdef' regexp 'a'; //1
    select 'abcdef' regexp 'k'; //0

    ——- MYSQL 常用字符串函数 –
    20、concat (p1,p2 … pn) 连接s1,s2,..pn 为一个字符串。
    21、insert(str,x,y,instr) 将字符串str 从x位开始,y个字符长度,替换为字符串instr。

       SELECT INSERT('abcdefg',1,4,'AAA'); -- AAAefg

    22、LOWER ,UPPER 转换大小写函数

    SELECT LOWER('abCD');    -- abcd
    SELECT UPPER('abCD'); -- ABCD

    23、LEFT,RIGHT 从左右端分别截取字符串函数:

    SELECT LEFT('ABCD',2);   -- AB
    SELECT RIGHT('ABCD',2); -- CD

    24、LPAD(str,x ,s)|RPAD(str,x ,s)根据提供字符串str,如果长度小于x则左|右补充s字符。

    SELECT LPAD('a',5,'#');  -- ####a
    SELECT RPAD('a',5,'#'); -- a####

    25、LTRIM 去除左空格,RTRIM 去除右空格,TRIM 去除左右空格。

    SELECT LTRIM(' A '); -- A ;
    SELECT RTRIM(' A '); -- A;
    SELECT TRIM(' ABC '); -- ABC

    26、SUBSTRING(str,x,len) 从x位开始,截取字符串str,len长度。

     SELECT SUBSTRING('acbcdef',2,3); -- cbc

    27、REPEAT(str,x) 重复str字符串,x次。

    SELECT REPEAT('my ',5);  -- my my my my my 

    28、REPLACE(str,x,y)将字符串str,中x 字符替换成y字符串.

    SELECT REPLACE('abcdeabc','a','##')  -- ##bcde##bc

    29、常用数值函数

    # CEIL(X) 返回大于X的最少整数
    SELECT CEIL(11.1); -- 12

    #FLOOR(X) 返回小于X的最大整数
    SELECT FLOOR(11.9); -- 11

    #求模
    SELECT MOD(10,3); -- 1

    #随机数
    SELECT RAND(); -- 0.03454766891388937

    # 四舍五入
    SELECT ROUND(12.3356); -- 12
    SELECT ROUND(12.3356,2); -- 12.34

    #返回指定小数位
    SELECT TRUNCATE(12.12345,2); -- 12.12

    29、常用时间函数

    SELECT NOW();           -- 2016-03-28 14:30:02
    SELECT CURDATE(); -- 2016-03-28
    SELECT CURRENT_TIME(); -- 14:30:02
    SELECT YEAR(NOW()); -- 2016
    SELECT MONTH(NOW()); -- 3
    SELECT DAY(NOW()); -- 28
    SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s'); -- 2016-03-28 14:35:19
    SELECT DATE_ADD(NOW(),INTERVAL -1 DAY); -- 2016-03-27 14:36:28
    # DATEDIFF(expr1,expr2) 计算两个日期之间的天数
    SELECT DATEDIFF('2016-03-06','2016-03-12'); -- -6

    30、IF ,IFNULL, CASE [expr] WHEN | CASE WHEN … END 流程函数

    SELECT IF(1=1,'TRUE','FALSE');  -- TRUE
    SELECT IFNULL(NULL,0) ; -- 0

    SELECT CASE cid when 1 then 'a'
    when 2 then 'b'
    else '' end
    FROM blog.test;


    SELECT CASE when cid=1 then 'a'
    when cid=2 then 'b'
    else '' end
    FROM blog.test;

     
     
  • 相关阅读:
    CentOS同步时间
    使用dnsmasq来提升CentOS上网速度
    bash的变量设置
    CentOS找回root密码
    知识学习网站
    webservice接口测试,使用SoapUI工具进行接口测试
    js中字符串转换为数字
    css颜色大全
    Table分页显示调整
    iframe中,页面转换后回到页面的顶部
  • 原文地址:https://www.cnblogs.com/rhythmK/p/5329121.html
Copyright © 2011-2022 走看看