mysql> CREATE TABLE class1 (
        -> id SMALLINT UNSIGNED AUTO_INCREMENT ,
        -> name VARCHAR(30) NOT NULL UNIQUE KEY ,
        -> school VARCHAR(30) DEFAULT 'chengdu_collage' ,
        -> PRIMARY KEY(id)
        -> );
        Query OK, 0 rows affected (0.09 sec)

图片 1
主要知识点:over partition by
over partition 
by关键字是分析性函数的一部分,它和聚合函数不同的地方在于它能返回一个分组中的多条记录,常用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组

1.事务的四个特点,原子性,一致性,隔离性,持久性。
2.并发的危险
丢失更新:两个进程读取同一个数据然后试图更新会丢失一个进程的更新;
脏读:当一个进程读取了另一个没提交进程修改的数据时,如果另一个进程会滚第一个进程就是脏读;
不可重复读:在一个事务内不能保证两次读取一个数据的结果是一样的就是不可重复读;
幻影读:一个事务对一个范围的数据插入或删除了行,而这个范围的数据正被另一个事务读取就是幻影读;
重复读:一个事务对表进行扫描时另一个事务进行了数据移动或插入会造成重复读。
3.锁:被用来组织多种类型的访问,锁是针对其他类型锁的阻塞。
4.锁的分层,在用更少数量的锁锁定更多数量的数据和用更多数量的锁锁定更少数量的数据必须做个权衡。
5.共享锁S,
更新锁U,更新锁必须转换为拍他锁,等到最后一个共享所释放后就能转换为拍他锁了;
排他锁X,一直持有到事务结束。
意向锁IS,IU,IX,为了在锁层次较高的层级表示意向,用于优化锁的检查。
转换锁SIX,SIU,UIX,事务从粗级别的锁转换为细级别的锁时会建立。
6锁升级:当一个表的行或页面上的锁超过5000个时就会触发锁升级,直接升级到表锁或分区锁,并删除之前的行锁。
7.死锁:数据库引擎会把死锁的一个事务回滚并抛错1205,可检测错误号并尝试重试。
解决方向,要么尽快释放事务占用资源,要么增加锁定资源,让其他事务没有重叠的可能。
8.隔离级别
可序列化,锁定一切。
可重复读,会发生幻影读。
已提交读(默认),会出现幻影读,重复读,不可重复读的事务问题
未提交读,可出现除上述问题外还有脏读。
快照,乐观锁,需要设置数据库,特点不需要锁。

 

2、根据条件查询某个字段并按照逗号,合并在一起。

之前的摘要在小组:

2.进入数据库

Group by
根据一列或者多列的值或表达式将选定的行进行一个摘要分组,每一个分组只返回一行。

 

1.插入(INSERT)

第二条sql:

 

执行效果如下:

        mysql> DESC class1;
        +--------+----------------------+------+-----+-----------------+----------------+
        | Field  | Type                 | Null | Key | Default         | Extra          |
        +--------+----------------------+------+-----+-----------------+----------------+
        | id     | smallint(5) unsigned | NO   | PRI | NULL            | auto_increment |
        | name   | varchar(30)          | NO   | UNI | NULL            |                |
        | school | varchar(30)          | YES  |     | chengdu_collage |                |
        +--------+----------------------+------+-----+-----------------+----------------+
        3 rows in set (0.00 sec)

表类似结构如下:

4.查询(SELECT)

有关FOR XML PATH更多知识,我觉得下面这篇文章讲的很好:
灵活运用 SQL SERVER FOR XML
PATH

    1.INSERT INTO tb_name [(col_name...)] {VALUES|VALUE}({expr | DEFAULT},....),(...)...
        例子:
            mysql> INSERT INTO class1 (name) VALUES ('john');
            Query OK, 1 row affected (0.01 sec)

            mysql> INSERT INTO class1 VALUES (DEFAULT,'jobs','chengdu_agricultural_college');
            Query OK, 1 row affected (0.01 sec)


    2.INSERT INTO tb_name SET col_name = {expr | DEFAULT},...
        例子:
            mysql> INSERT INTO class1 SET name='tom';
            Query OK, 1 row affected (0.02 sec)

            mysql> INSERT INTO class1 SET name='lues',school='chengdu_agricultural_college';
            Query OK, 1 row affected (0.01 sec)

第一条sql:
select c.Id,c.OrderNum, c.CreateTime FROM (select t.*,row_number()
over(partition by t.OrderNum order by t.CreateTime ) rn  from Payinfo t
WHERE t.OrderNum IN(‘20160906025229′,’20160905006031′,’20160905016570’))
c WHERE rn = 1;

 

 

4.查看表结构

图片 2

发表评论

电子邮件地址不会被公开。 必填项已用*标注