zoukankan      html  css  js  c++  java
  • MySQL 温故知心(一)

    1、创建表

     1 SET NAMES utf8;
     2 SET FOREIGN_KEY_CHECKS = 0;
     3 
     4 -- ----------------------------
     5 --  Table structure for `employee_tbl`
     6 -- ----------------------------
     7 DROP TABLE IF EXISTS `employee_tbl`;
     8 CREATE TABLE `employee_tbl` (
     9   `id` int(11) NOT NULL,
    10   `name` char(10) NOT NULL DEFAULT '',
    11   `date` datetime NOT NULL,
    12   `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',
    13   PRIMARY KEY (`id`)
    14 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    15 
    16 -- ----------------------------
    17 --  Records of `employee_tbl`
    18 -- ----------------------------
    19 BEGIN;
    20 INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2');
    21 COMMIT;
    22 
    23 SET FOREIGN_KEY_CHECKS = 1;

    2、WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。

    例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数

    SELECT NAME, SUM(singin) AS singin_count FROM  employee_tbl GROUP BY NAME WITH ROLLUP;

    3、

    其中记录 NULL 表示所有人的登录次数。

    我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

    select coalesce(a,b,c);

    参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

    以下实例中如果名字为空我们使用总数代替:

    SELECT COALESCE(NAME, '总数'), SUM(singin) AS singin_count FROM  employee_tbl GROUP BY NAME WITH ROLLUP;

     4、MySQL事务

    MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
    在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务
    事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行
    事务用来管理insert,update,delete语句
    一般来说,事务是必须满足4个条件(ACID): Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、Durability(可靠性)
    a、事务的原子性:一组事务,要么成功;要么撤回。
    b、稳定性 : 有非法数据(外键约束之类),事务撤回。
    c、隔离性:事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。
    d、可靠性:软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候吧事务保存到日志里。

    5、设置序列的初始值

    一般情况下序列的开始值为1,但如果你需要指定一个开始值100,那我们可以通过以下语句来实现:

    mysql> CREATE TABLE insect
        -> (
        -> id INT UNSIGNED NOT NULL AUTO_INCREMENT = 100,
        -> PRIMARY KEY (id),
        -> name VARCHAR(30) NOT NULL, # type of insect
        -> date DATE NOT NULL, # date collected
        -> origin VARCHAR(30) NOT NULL # where collected
    );

    或者你也可以在表创建成功后,通过以下语句来实现:

    mysql> ALTER TABLE t AUTO_INCREMENT = 100;
  • 相关阅读:
    HTML5 开发工具收集
    (转载)flash as滤镜效果总结
    线性表

    AS3 库资源 很多非常有用的类库
    设计模式之简单工厂
    strcpy,strncpy,strcmp,strncmp,strcat,strlen..还有啥?
    设计模式学习之前言
    转CString 用法小结
    String类的构造函数,析构函数,赋值函数
  • 原文地址:https://www.cnblogs.com/huangjianping/p/8054124.html
Copyright © 2011-2022 走看看