精华内容
下载资源
问答
  • 在古代神话传说中,潘多拉(Pandora)女神出于好奇心打开了“魔盒”,让魔鬼、精灵出来,她慌忙关闭了“魔盒”,却把“希望的精神(Spiritof Hope)留在盒子里面了。请看下图:  8月8日,J.Keisler《基础...

         在古代神话传说中,潘多拉(Pandora)女神出于好奇心打开了“魔盒”,让魔鬼、精灵跑了出来,她慌忙关闭了“魔盒”,却把“希望的精神(Spiritof Hope)留在盒子里面了。请看下图:

            88日,J.Keisler《基础微积分》第3.8节连续函数的性质上传互联网获得成功,对于研究、处理无限性的微积分学而言,无穷小与无穷大(超整数)都是人们所希望的种子。也就是说,超整数H,K(作为希望的精灵)又从潘多拉手中的”魔盒“里面跑了出来。超整数(Hyperintegers)有什么用呢?

                回顾历史,1948年美国数学家EdwinHewitt1920-1999)首次严格定义了超整数,当时年仅28岁。当前,国内80后的”小毛头“多半还处在创业阶段,买房子成家。创造谈不上。搜索国内互联网,”超整数“几乎无人问津,微积分袖珍电子书成了开路先锋。搞微积分教学改革,没有超整数的帮助,全是废话。请见:袖珍电子书第4.1节定积分,其中”无限黎曼和”就使用了超整数分割积分区间[a,b]

             818日,微积分袖珍电子书进入全面清理阶段,清除一切图文瑕疵,迎接新学年的开始。我们需要帮助。我们将记住一切提供帮助的有识之士(或企业)。感谢大家的持续关注。


    展开全文
  • 加了Nios并在上面uCOS的时候,nios里面的onchip memory已经无法满足程序的规模了。即使是EP4CE6的,单一个带uCOS的nios cpu也不够放。所以必须放到板上的SDRAM(内存)里面。 1. 先创建一个Nios核。 ...

    转自:http://blog.csdn.net/boriscoding/article/details/24450651


    加了Nios并在上面跑uCOS的时候,nios里面的onchip memory已经无法满足程序的规模了。即使是EP4CE6的,单跑一个带uCOS的nios cpu也不够放。所以必须放到板上的SDRAM(内存)里面去跑。


    1. 先创建一个Nios核。

    注意new_sdram_controller的最后一个Conduit的s需要双击输出端口。


    2. 在设置sdram_controller的时候注意要与开发板上的sdram型号对应

    我的是hy57v641620,配置如图:


    3. 当然CPU(NIos Processor)里面的Reset Vector 和 Exception Vector不能再是Onchip Memory而应该是new_sdram_controller。



    4. 其他什么自动分配基地址,中断等等都一样。然后生成。


    5. 回到硬核添加Nios



    这里注意:

    (1)sdram_controller的s引出的管脚必须严格对应开发板sdram型号的分配

    (2)SDRAM_controller的时钟虽然在nios内部设置的时候从clk连接到了controller上面,但是sdram本身的时钟必须与Nios系统的时钟分开。

    具体操作是:在硬核中加一个PLL,input是板上的晶振,output用两个c0,c1。c0不倍频接给Nios,c1需要向右边移动63相位。

    c1配置如图:




    硬件连接如图:



    6. 软核部分

    (1)打开eclipse建立带bsp的工程blahblah。。。

    建立hello microOS模板工程

    (2)edit bsp

    common里面有这几个地方修改:



    Advanced里面设置成这样:



    (3)build and run

    如果build过了,run到一半出现无法下载elf的错误,多半是管脚sdram_controller的s甩出来的那一堆管脚没有分配正确导致;另外就是SDRAM本身没有分配单独的一个时钟信号。

    展开全文
  • mysql之入门到删库

    万次阅读 多人点赞 2019-10-27 13:53:41
    查询成绩比该课程成绩低的同学的成绩表 思路: a表查出对应的分数跟b表筛选出来的平均分作比较. select * from score a where degree (select avg(degree) from score b where a.cno = b.cno); 表a +-----+-------...
    启动与停止
    • 启动mysql服务
      sudo /usr/local/mysql/support-files/mysql.server start
    • 停止mysql服务
      sudo /usr/local/mysql/support-files/mysql.server stop
    • 重启mysql服务
      sudo /usr/local/mysql/support-files/mysql.server restart
    • 进入mysql目录文件
      cd /usr/local/mysql/support-files
    • 进入mysql命令行
      /usr/local/MySQL/bin/mysql -uroot -p12345678
    • 退出数据库
      exit;
    数据库相关操作
    • 查询所有数据库
      show databases;
    • 选择(使用)数据库
      use mybatis;
    • 查询当前正在使用的数据库名称
      select database();
    • 创建数据库
      create database 数据库名称;
      创建数据库,判断不存在,再创建: create database if not exists 数据库名;
    • 删除数据库
      drop database 数据库名称;
      判断数据库存在,存在再删除:drop database if exists 数据库名称;
    数据库表相关操作
    • 创建数据库表
    create table 表名(
    	列名1 数据类型1,
    	列名2 数据类型2,
    	....
    	列名n 数据类型n
    	);
    
    • 复制表
      create table 表名 like 被复制的表名;
    • 查看某个数据库中的所有的数据表
      show tables;
    • 查看数据表的结构
      desc pet;describe pet;
    • 修改表名
      alter table 表名 rename to 新的表名;
    • 修改表的字符集
      alter table 表名 character set 字符集名称;
    • 添加一列
      alter table 表名 add 列名 数据类型;
    • 删除列
      alter table 表名 drop 列名;
    • 删除表
      drop table 表名;drop table if exists 表名 ;

    • 添加数据
      insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
      其中列名和值要一一对应。如果表名后,不定义列名,则默认给所有列添加值,如:insert into 表名 values(值1,值2,...值n);除了数字类型,其他类型需要使用引号(单双都可以)引起来.
    • 删除数据
      delete from 表名 where 条件
      其中:如果不加条件,则删除表中所有记录。如果要删除所有记录, 使用delete from 表名;一般不推荐使用。这种操作有多少条记录就会执行多少次删除操作.
      TRUNCATE TABLE 表名;推荐使用,效率更高 先删除表,然后再创建一张一样的表.
    • 修改数据
      update 表名 set 列名1 = 值1, 列名2 = 值2,... where 条件;如果不加任何条件,则会将表中所有记录全部修改.
    insert into user2 values (1,'李四','123'); // 增
    delete from pet where ower = 'disn'; //删
    update pet set name = '后裔' where ower = 'dfn'; //改
    
    
    • 查询数据
    ><<=>==<>BETWEEN...ANDIN( 集合)LIKE 模糊查询	
    ⑤_单个任意字符
    ⑥%多个任意字符
    ⑦IS NULLand&&or||not!
    查询条件应用举例:
    SELECT * FROM user WHERE age >= 18;
    SELECT * FROM user WHERE age >= 18 AND  age <=36;
    SELECT * FROM user WHERE age BETWEEN 40 AND 70;
    SELECT * FROM user WHERE age IN (6,18,37);
    // 关于NULL
    SELECT * FROM user WHERE height = NULL; 错误,因为null值不能使用=或(!=) 判断
    SELECT * FROM user WHERE height IS NULL;(正确)
    SELECT * FROM user WHERE height  IS NOT NULL;(正确)
    // 查询姓陈的有哪些?< like>
    SELECT * FROM user WHERE NAME LIKE '陈%';
    // 查询姓名第二个字是新的人
    SELECT * FROM user WHERE NAME LIKE "_新%";
    // 查询姓名是三个字的人
    SELECT * FROM user WHERE NAME LIKE '___';
    // 查询姓名中包含狗的人
    SELECT * FROM user WHERE NAME LIKE '%狗%';
    
    约束相关
    • 主键约束 (primary key)
      能够唯一确定一张表中的的一条记录,我们通过给某个字段添加约束, 可以使得这个字段不重复且不为空.
     create table user (
    	id int primary key auto_increment, // 在创建表时,添加主键约束,并且完成主键自增	
    	name varchar(20)
     );
    -- 联合主键: 由多个字段联合组成的主键, 只要联合的主键加起来不重复就可以.联合主键中的任何一个字段都不能为空.
    create table user2 (
     	id int,
     	name varchar(20),
     	password varchar(20),
     	primary key(id, name)
    );
    
    

    表创建完成后:
    添加主键.如:
    alter table user add primary key(id);alter table user modify id int primary key;
    删除主键:alter table user drop primary key;

    • 唯一约束:unique 约束修饰的字段的值不可以重复.
     create table user1 (
     	id int primary key auto_increment,
      	phone_num varchar(20) unique
      	 );
     create table user2 (
     	id int primary key auto_increment,
      	name varchar(20),
      	unique(id, name) // 表示两个字段在一起不重复就可以
      	 );
      	 
    

    也可以在表创建完成后, 通过alter table user3 add unique(phone_num);alter table user3 modify phone_num varchar(20) unique;来添加unique约束.
    删除unique约束:alter table user3 drop index phone_num;

    • 非空约束:not null 修饰的字段不能为空NULL
    create table user3 (
    	id int primary key auto_increment,
    	name varchar(20) not null
    	);
    

    删除非空约束:alter table user3 modify name varchar(20);

    • 默认约束
      当我们插入字段值时候,如果对应的字段没有插入值,则会使用默认值.如果传入了值,则不会使用默认值.
    create table user4(
    	id int primary key auto_increment,
    	age int default 18,
    	name varchar(20) not null
    	);
    
    • 外键约束:foreign key
    create table 表名(
    ....
    外键列
    constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
    );
    // 班级
    create table classes(
    	id int primary key,
    	name varchar(20)
    	);	
    // 学生表
    create table student (
    		id	int primary key,
    		name varchar(20),
    		class_id int,
    		foreign key(class_id) references classes(id)
    		);
    		
    
    数据库查询进阶
    • 查询所有记录
      例如:查询student表中的所有记录.
      select * from student;
    • 查询指定字段
      例如:查询student中的sname,ssex,class.
      select sname,ssex,class from student;
    • 查询教师表中所有的单位即不重复的depart列. <排除重复distinct>
      select distinct depart from teacher;
    • 查询score表中成绩在60到80之间的所有记录 <查询区间 between…and…>
      select * from score where degree between 60 and 80;
      select * from score where degree > 60 and degree < 80;
    • 查询score表中成绩为85,86或88的记录
      select * from score where degree in(85, 86, 88);
    • 查询student表中’95031’班或性别为’女’的同学记录. <or 表示或者>
      select *from student where class = '95031' or sex = '女';
    • 以class降序查询student表的所有记录 <降序:desc, 升序asc,默认升序(省略)>.
      select * from student order by class desc;
    • 以cno升序,degree降序查询score表的所有记录
      select * from score order by cno asc,degree desc;
    • 查询"95031’班的学生人数 <统计 count>
      select count(*) from student where class = '95031';
    • 查询score表中最高分的学生学号和课程号(子查询)
      select sno, cno from score where degree = (select max(degree) from score );其中:select max(degree) from score 先查出最高分.
      select sno,cno degree from score order by degree desc limit 0,1;其中:limit第一个数字表示从多少开始,第二个表示多少条.当有多个相同最高分时,容易出bug,不推荐使用这种方式查询.
    • 查询每门课的平均成绩
      select cno, avg(degree) from score group by cno;
    • 查询score表中至少有2名学生选修的并以3开头的课程的平均分数.
      select cno, avg(degree) from score group by cno having count(cno) >= 2 and cno like '3%';
    • 查询分数大于70, 小于90的sno列.
      select sno, degree from score where degree between 70 and 90;
    • 查询所有学生的sname, cno和degree列.
      select sname, cno, degree from student, score where student.sno = score.sno;
    • 查询所有学生的sno,cname和degree列
      select sno,cname,degree from course ,score where course.cno = score.cno;
    • 查询"95031"班学生每门课的平均分.
      select cno, avg(degree) from score where sno in (select sno from student where class = '95031') group by cno;
    • 查询选修"3-105"课程的成绩高于"109"号同学"3-105"成绩的所有同学的记录.
      select * from score where cno = '3-105' and degree > (select degree from score where sno = '109' and cno = '3-105');
    • 查询成绩高于学号为"109", 课程号为"3-105"的成绩的所有记录
      select * from score where degree > (select degree from score where sno = '109' and cno = '3-105');
    • 查询和学号为108,101的同学同年出生的所有的sno, sname, sbirthday
      select *from student where year(sbirthday) in (select year(sbirthday) from student where sno in(108, 101));
    • 查询"张旭"教师任课的学生成绩
      select * from score where cno = ( select cno from course where tno = (select tno from teacher where tname = "张旭"));
    • 查询选修某课程的同学人数多于5人的教师姓名.
      select tname from teacher where tno = (select tno from course where cno = (select cno from score group by cno having count(*) > 5));
    • 查询存在有85分以上的成绩的课程的cno
      select cno, degree from score where degree > 85;
    • 查询出"计算机系"教师所教课程的成绩表
      select * from score where cno in (select cno from course where tno in (select tno from teacher where depart = "计算机系"));
    • 查询选修编号为"3-105"课程且成绩至少高于选休息编号为"3-245"的同学的cno,sno和degree,并按degree从高到低次序排序.
      any 至少一个.
    select * from score where cno = '3-105' and degree > any(select degree from score where cno = '3-245') order by degree desc;
    
    
    • 查询选修编号为"3-105"课程且成绩高于选休息编号为"3-245"的同学的cno,sno和degree,并按degree从高到低次序排序.
      all 表示所有
    select * from score where cno = '3-105' and degree > all(select degree from score where cno = '3-245') order by degree desc;
    
    
    • 查询所有教师和同学的name, sex和birthday
    select tname as name, tsex as sex, tbirthday as birthday from teacher union select sname, ssex, sbirthday from student;
    
    
    • 查询所有"女"教师和"女"同学的name,sex和birthday
    select tname as name, tsex as sex, tbirthday as birthday from teacher where tsex = '女' union select sname, ssex, sbirthday from student where ssex = '女';
    
    
    
    • 查询成绩比该课程成绩低的同学的成绩表
      思路: 从a表查出对应的分数跟b表筛选出来的平均分作比较.
    select * from score a where degree < (select avg(degree) from score b where a.cno = b.cno);
    表a
    +-----+-------+--------+
    | sno | cno   | degree |
    +-----+-------+--------+
    | 101 | 3-105 |     91 |
    | 102 | 3-105 |     92 |
    | 103 | 3-105 |     92 |
    | 103 | 3-245 |     86 |
    | 103 | 6-166 |     85 |
    | 104 | 3-105 |     81 |
    | 105 | 3-105 |     88 |
    | 105 | 3-245 |     75 |
    | 105 | 6-166 |     79 |
    | 109 | 3-105 |     76 |
    | 109 | 3-245 |     68 |
    | 109 | 6-166 |     81 |
    +-----+-------+--------+
    12 rows in set (0.00 sec)   
    
    表b
    | sno | cno   | degree |
    +-----+-------+--------+
    | 101 | 3-105 |     91 |
    | 102 | 3-105 |     92 |
    | 103 | 3-105 |     92 |
    | 103 | 3-245 |     86 |
    | 103 | 6-166 |     85 |
    | 104 | 3-105 |     81 |
    | 105 | 3-105 |     88 |
    | 105 | 3-245 |     75 |
    | 105 | 6-166 |     79 |
    | 109 | 3-105 |     76 |
    | 109 | 3-245 |     68 |
    | 109 | 6-166 |     81 |
    +-----+-------+--------+
    12 rows in set (0.00 sec) 
    
    
    • 查询所有任课教师的tname和depart
      select tname, depart from teacher where tno in (select tno from course);
    • 查询至少有两名男生的班号
    select class from student where ssex= '男' group by class having count(*) > 1
    
    
    • 查询student表中不姓"王"的同学记录
    select * from student where sname not like '王%';
    
    • 查询student表中每个学生的姓名和年龄
    select sname, year(now()) - year(sbirthday)  as '年龄' from student;
    
    • 查询student表中最大和最小的sbirthday日期值
    select max(sbirthday) as '最大', min(sbirthday) as '最小' from student;
    
    • 以班号和年龄从大到小的顺序查询student表中的全部记录
    select * from student order by class desc, sbirthday;
    
    • 查询"男"教师及其所上的课程
    select * from course where tno in (select tno from teacher where tsex = '男');
    
    
    • 查询最高分同学的sno, cno和degree列
    select * from score where degree = (select max(degree) from score);
    
    • 查询和李军同性别的所有同学的sname
    select sname from student where ssex = (select ssex from student where sname = '李军');
    
    
    • 查询和李军同性别并同班 同学sname
    select sname from student where ssex = (select ssex from student where sname = "李军") and class = (select class from student where sname = '李军');
    
    
    • 查询所有选修"计算机导论"课程的"男"的成绩表
    select * from score where cno = (select cno from course where cname = '计算机导论') and sno in(select sno from student where ssex = '男');
    
    
    SQL的四种连接查询
    分析用例的数据准备:
    mysql> select * from person;
    +----+--------+--------+
    | id | name   | cardId |
    +----+--------+--------+
    |  1 | 张三   |      1 |
    |  2 | 李四   |      3 |
    |  3 | 王五   |      6 |
    +----+--------+--------+
    3 rows in set (0.00 sec)
    mysql> select * from card;
    +------+-----------+
    | id   | name      |
    +------+-----------+
    |    1 | 饭卡      |
    |    2 | 建行卡    |
    |    3 | 农行卡    |
    |    4 | 工商卡    |
    |    5 | 邮政卡    |
    +------+-----------+
    5 rows in set (0.00 sec)
    
    • 内连接
      inner join 或者 join, 后面通常跟对一个on表示条件
      ---- 内联查询: 就是两张表中的数据, 通过某个字段相等,查询出相关记录数据.
      <当前表中的cardid与id相同.>
    select * from person inner join card on person.cardId = card.id;
    +----+--------+--------+------+-----------+
    | id | name   | cardId | id   | name      |
    +----+--------+--------+------+-----------+
    |  1 | 张三   |      1 |    1 | 饭卡      |
    |  2 | 李四   |      3 |    3 | 农行卡    |
    +----+--------+--------+------+-----------+
    2 rows in set (0.00 sec)
    
    
    • 外连接
      左外连接:左连接 left join 或者 left outer join
      ---- 左外连接, 会把左边表里面的所有数据取出来, 而右边表中的数据,如果有相等的,就显示出来, 如果没有, 则会补NULL.
    select * from person left join card on person.cardId = card.id;
    
    +----+--------+--------+------+-----------+
    | id | name   | cardId | id   | name      |
    +----+--------+--------+------+-----------+
    |  1 | 张三   |      1 |    1 | 饭卡      |
    |  2 | 李四   |      3 |    3 | 农行卡    |
    |  3 | 王五   |      6 | NULL | NULL      |
    +----+--------+--------+------+-----------+
    3 rows in set (0.00 sec)
    
    

    右外连接:右连接 right join 或者right outer join
    ----右外连接, 会把右边表里面的所有数据取出来, 而左边表中的数据,如果有相等的,就显示出来, 如果没有, 则会补NULL.

    select * from person right join card on person.cardId = card.id;
    
    +------+--------+--------+------+-----------+
    | id   | name   | cardId | id   | name      |
    +------+--------+--------+------+-----------+
    |    1 | 张三   |      1 |    1 | 饭卡      |
    |    2 | 李四   |      3 |    3 | 农行卡    |
    | NULL | NULL   |   NULL |    2 | 建行卡    |
    | NULL | NULL   |   NULL |    4 | 工商卡    |
    | NULL | NULL   |   NULL |    5 | 邮政卡    |
    +------+--------+--------+------+-----------+
    5 rows in set (0.01 sec)
    
    

    全外连接:完全外连接 full join 或者full outer join<mysql不支持full join>

    mysql> select * from person full join card on person.cardId= card.id;
    ERROR 1054 (42S22): Unknown column 'person.cardId' in 'on clause'
    **** 解决mysql不支持full join的方法****
     <左连接 + 右链接> , 即通过union来连接左右连接. <左连接 union 右链接>.
    eg:
    
    select * from person left join card on person.cardId = card.id union select * from person right join card on person.cardId = card.id;
    
    +------+--------+--------+------+-----------+
    | id   | name   | cardId | id   | name      |
    +------+--------+--------+------+-----------+
    |    1 | 张三   |      1 |    1 | 饭卡      |
    |    2 | 李四   |      3 |    3 | 农行卡    |
    |    3 | 王五   |      6 | NULL | NULL      |
    | NULL | NULL   |   NULL |    2 | 建行卡    |
    | NULL | NULL   |   NULL |    4 | 工商卡    |
    | NULL | NULL   |   NULL |    5 | 邮政卡    |
    +------+--------+--------+------+-----------+
    6 rows in set (0.01 sec)
    
    
    要点梳理
    • where 和 having 的区别?
      (1) having通常用在聚合函数前面,对聚合函数进行过滤,(MAX、MIN、COUNT、SUM).having通常和group by 一起连用,因为where不能加在group by的后面.
      (2) where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
    MYSQL执行语句顺序,严格遵循次顺序,不能改变
    select
    from
    where
    group by
    having
    order by
    
    mysql的事务
    • 关于事务
      mysql中, 事务其实是一个最小的不可分割的工作单元. 事务能够保证一个业务的完整性.
      分析:
    例如:
    a --> -100
    update user set money = money - 100 where name = 'a';
    b --> +100
    update user set money = money + 100 where name = 'b';
    -- 实际程序中, 如果只有一条sql语句执行成功了,而另外一条没有执行成功?则会出现前后数据不一致的情况.
    update user set money = money - 100 where name = 'a';
    update user set money = money + 100 where name = 'b';
    在多条sql语句,可能会有同时成功的要求,要么就同时失败.
    
    
    • 事务控制
      (1)事务主要包含自动提交@@autocommit=1;,手动提交commit;和事务回滚rollback;.
      (2) mysql默认是开启事务的(自动提交).
      ----当我们去执行一个sql语句的时候,效果会立即提现出来,且不能回滚.
      set autocommit = 0;设置mysql是否自动提交,<0为否, 1为是.>
      select @@autocommit;查看mysql的自动提交方式.
      commit; 手动提交.
      具体事务控制相关参照下面代码分析:
    mysql> select @@autocommit;
    +--------------+
    | @@autocommit |
    +--------------+
    |            1 |
    +--------------+
    1 row in set (0.00 sec)
    // 建表
    create database bank;
    create table user (
    	id int primary key,
        name varchar(20),
        money int
        );
    // 首先在表中插入一条用户数据a.
    insert into user values (1,'a',1000);
    Query OK, 1 row affected (0.00 sec)
    // 进行回滚操作.
    mysql> rollback;
    Query OK, 0 rows affected (0.00 sec)
    // 执行回滚后,查看数据表信息,发现即使调用了rollback,但插入的数据依然存在.说明当前不能回滚.
    mysql> select * from user;
    +----+------+-------+
    | id | name | money |
    +----+------+-------+
    |  1 | a    |  1000 |
    +----+------+-------+
    1 row in set (0.00 sec)
    // 可以通过设置msql的回滚自动提交为false.
    set autocommit = 0;
    Query OK, 0 rows affected (0.00 sec)
    mysql> select @@autocommit;
    +--------------+
    | @@autocommit |
    +--------------+
    |            0 |
    +--------------+
    1 row in set (0.00 sec)
    // 也就说, 通过上面的set autocommit = 0;操作关闭了mysql的自动提交(commit).
    *******再次插入数据:*******
    insert into user values (2,'b',1000);
    Query OK, 1 row affected (0.00 sec)
    // 插入数据后查看表,用户2数据添加成功.
    mysql> select * from user;
    +----+------+-------+
    | id | name | money |
    +----+------+-------+
    |  1 | a    |  1000 |
    |  2 | b    |  1000 |
    +----+------+-------+
    2 rows in set (0.00 sec)
    // 执行回滚操作.
    mysql> rollback;
    Query OK, 0 rows affected (0.00 sec)
    // 回滚后再次查看表,发现刚才插入的数据已经被干掉了.
    mysql> select * from user;
    +----+------+-------+
    | id | name | money |
    +----+------+-------+
    |  1 | a    |  1000 |
    +----+------+-------+
    1 row in set (0.01 sec)
    **** 对于这种场景,如果想让用户b数据成功提交, 可以通过commit;命令执行手动提交操作.手动提交后,如果想再次通过rollback来撤销,则是不可以的.也就是说,事务一旦提交,执行的sql语句就不可以再撤销,也就是说事务一旦提交数据就会持久的产生效果.
    
    
    
    

    (3)手动开启事务
    beginstart transaction都可以手动开启一个事务. 也就是说,当我们当前的mysql如果默认的是自动提交模式,则执行rollback进行事务回滚则是无效的. 但是可以通过beginstart transaction手动开启事务.

    即:
      当前默认为自动提交模式,此时执行rollback无效.执行下面sql语句:
      start transaction;(或者begin;)
      update user set money = money - 100 where name = 'a';
      update user set money = money + 100 where name = 'b';
      执行完插入a,b用户数据后,再执行rollback,发现可以成功回滚事务.可以成功切换成手动开启事务的模式.若想使得插入的数据生效,也需要手动执行commit进行提交操作.
      事务开启之后,一旦commit提交,就不可以回滚,也就说,当前的这个事务在提交的时候就已经结束了.
      
    
    • 事务的四大特征
      A 原子性: 事务是最小的单元, 不可以在分割.
      C 一致性: 事务要求, 同一事务中的sql语句必须保证同时成功,同时失败.
      I 隔离性: 事务1 和事务2之间shi具有隔离性的.
      D 持久性: 事务一旦结束(commit,rollback),就不可以返回.
    • 事务的隔离性
      多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题.
      存在问题:
      (1) 脏读:一个事务,读取到另一个事务中没有提交的数据.
      (2)不可重复读(虚读):在同一个事务中,两次读取到的数据不一样.
      (3)幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改.
      read uncommitted; 读未提交的–>产生的问题:脏读、不可重复读、幻读.
      read committed; 读已经提交的–>产生的问题:不可重复读、幻读repeatable read; 可以重复读–>产生的问题:幻读
      serializable; 串行化<性能特差>
      通常是隔离级别越高,性能越差.
      (1)查看数据库的隔离级别
      mysql默认的隔离级别: REPEATABLE-READ
      mysql8.0:
      系统级别的:select @@global.transaction_isolation;
      会话级别的:select @@transaction_isolation;
      mysql5.x:
      系统级别的:select @@global.tx_isolation;
      会话级别的:select @@tx_isolation;
    mysql> select @@global.transaction_isolation;
    +--------------------------------+
    | @@global.transaction_isolation |
    +--------------------------------+
    | REPEATABLE-READ                |
    +--------------------------------+
    1 row in set (0.00 sec)
    

    (2)修改隔离级别
    set global tansaction isolation level read uncomitted;

    数据库的三大范式
    • 第一范式
    • 数据表中的所有字段都是不可分割的原子项.初步可以理解为:字段值还可以继续拆分的,就不满足第一范式.
      比如某表中有一个address的字段,插入值为"中国陕西省西安市碑林区柏树林11号".该字段值是可以继续拆分的,原则上就不满足第一范式.可以依次拆分为:国家/省/市/区/街道等等.
      当然,范式设计的越详细,对某些实际操作可能会更好.但不一定都是好处.<比如对address字段来说,可能拆分开来永远都用不到这么详细的信息,可能就没有拆分的必要.>
    • 第二范式
      必须是满足第一范式的前提下,第二范式要求,除主键外的每一列都必须完全依赖主键.如果要出现不完全依赖,只可能发生在联合主键的情况下.
    例如:
    create table myorder(
    		product_id int,
    		customer_id int,
    		product_name varchar(20),
    		customer_name varchar(20),
    		primary key(product_id, customer_id
    	);
    	当前表中, 除主键以外的其他列, 只依赖于主键的部分字段.则不满足第二范式,通常需要拆表.
    create table myorder(
    		order_id int primary key,
    		product_id int,
    		customer_id int
    	);
    create  table product (
    		id int primary key,
    		name varchar(20)
    	);
    create table customer(
    		id int primary key,
    		name varchar(20)
    		);
    拆分成三个表后,满足第二范式.
    
    • 第三范式
      必须先满足第二范式.除开主键列的其他列之间不能有传递依赖关系.
    附件

    查询语句所涉及的sql语句

    create table student(
    	sno varchar(20) primary key,
    	sname varchar(20) not null,
    	ssex varchar(20) not null,
    	sbrithday datetime,
    	class varchar(20)
    	);
    
    create table student(
    	sno varchar(20) primary key,
    	sname varchar(20) not null,
    	ssex varchar(10) not null,
    	sbirthday datetime,
    	class varchar(20)
    )
    
    create table teacher(
    	tno varchar(20) primary key,
    	tname varchar(20) not null,
    	tsex varchar(20) not null,
    	tbirthday datetime,
    	prof varchar(20) not null,
    	depart varchar(20) not null
    	);
    
    create table course(
    	cno varchar(20) primary key,
    	cname varchar(20) not null,
    	tno varchar(20) not null,
    	foreign key(tno) references teacher(tno)
    	);
    
    create table score(
    	sno varchar(20) not null,
    	degree decimal,
    	primary key (sno, cno),
    	foreign key (sno) references student(sno),
    	foreign key (cno) references course(cno)
    	);
    
    insert into student values ('101','曾华','男','1977-09-01','95033');
    insert into student values ('102','匡明','男','1975-10-02','95031');
    insert into student values ('103','王丽','女','1976-01-23','95033');
    insert into student values ('104','李军','男','1976-02-20','95033');
    insert into student values ('105','王芳','女','1975-02-10','95031');
    insert into student values ('106','陆君','男','1974-06-03','95031');
    insert into student values ('107','王尼玛','男','1976-02-20','95033');
    insert into student values ('108','张全蛋','男','1975-02-10','95031');
    insert into student values ('109','赵铁柱','男','1974-06-03','95031');
    
    insert into teacher values ('804','李成','男','1958-12-02','副教授','计算机系');
    insert into teacher values ('856','张旭','男','1969-03-12','讲师','电子工程系');
    insert into teacher values ('825','王萍','女','1972-05-05','助教','计算机系');
    insert into teacher values ('831','刘冰','女','1977-08-14','助教','电子工程系');
    
    insert into course values ('3-105','计算机导论', '825');
    insert into course values ('3-245','操作系统', '804');
    insert into course values ('6-166','数字电路', '856');
    insert into course values ('9-888','高等数学', '831');
      
    insert into score values('103','3-245','86');
    insert into score values('105','3-245','75');
    insert into score values('109','3-245','68');
    insert into score values('103','3-105','92');
    insert into score values('105','3-105','88');
    insert into score values('109','3-105','76');
    insert into score values('103','3-105','64');
    insert into score values('105','6-166','79');
    insert into score values('109','6-166','81');
    
    
    create table person(
    	id int primary key auto_increment,
    	name varchar(20),
    	cardId int
    );
    
    create table card (
    	id int,
    	name varchar(20)
    );
    
    insert into card values (1,'饭卡');
    insert into card values (2,'建行卡');
    insert into card values (3,'农行卡');
    insert into card values (4,'工商卡');
    insert into card values (5,'邮政卡');
    
    insert into person values (1,'张三',1);
    insert into person values (2,'李四',3);
    insert into person values (3,'王五',6);
    
    
    
    
    展开全文
  • head里面的内容到body里怎么办?

    千次阅读 2017-02-16 11:13:14
    吓我一跳,赶紧按F12查看,好家伙,head中的内容全到body里面去了。咋办呢? 。。。。。 好吧!我承认开始我也不知道咋办!因为我改的公共的jsp根本和样式无关,只是引入的一些标签而已,内容如下: <%@ ...

             今天我把工程上的一个公共的jsp改了下,然后打包到服务器上测试。发现页面乱了。吓我一跳,赶紧按F12查看,好家伙,head中的内容全跑到body里面去了。咋办呢?

     

          。。。。。   好吧!我承认开始我也不知道咋办!因为我改的公共的jsp根本和样式无关,只是引入的一些标签而已,内容如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
    <c:set var="ctx" value="${pageContext.request.contextPath}"/>
    <c:set var="title" value="测试服务器"/>

    其他就没啥!!

     

    我那个急呀!!不过作为程序员的我,很快就冷静下来了。咱伟大的程序猿最不缺的就是耐心。我仔细想了想,改了这个jsp就乱了。然后我试着把这个jsp去掉了,嗯!没错,head中的内容有跑回来了,不过由于没有ctx,所以还是没有成功。不过问题还是找到了,就是这个jsp的问题。不过话又说回来了,咋搞呢???

    我想不出来,不过咱还是强大的谷歌和度娘呢!

    我找,我找,我找找!

    各种办法,各种失望!!!

    在我最绝望,最无助的时候,终于看到了一个可行的办法了。

    解决方法如下:

    我把这个jsp拿出了,然后用Notepad++软件打开,找到上面菜单中“格式”,点击后你会看到以各种格式编码,我们点击“以UTF-8无DOM格式编码”,然后保存,重新扔进服务器,再次查看。是的,我没有看错,样式有好了;

    好了解决办法已经说了,可能有些人试过,说行不通。那有个可能,就是你没有找个对应的文件,所以就行不通了。

    好了,这是我的解决办法,希望对大家有帮助!如果再有其他的解决办法,欢迎留言!!!!

    展开全文
  • 港科大开源的vins mono在程序集的时候,在rviz里面,仅显示原始图片与特征点跟踪的图片,飞行轨迹图片无法显示。请问各位大神可能是什么原因,谢谢!
  • Linux木马(Trojan)跑出来

    千次阅读 热门讨论 2010-06-15 07:09:00
    ...Linux是源代码公开的操作系统,里面怎么会出一只木马?简直是荒唐透顶之事!这是怎么搞的?    6月12日,UnrealLIRC.com网站管理员垂头丧气地出来承认,他们的Unix/Linux源代
  • 这个demo是我工作项目里面提取出来的手势密码,主要包括:自定义View以及手势密码设置界面与手势验证界面。手势密码通过SharedPreferences存储在本地.rar,太多无法一一验证是否可用,程序如果不起来需要自调,...
  • @Restcontroller登场spring4.0开始引入了@Restcontroller,这是对REST的支持,他可以帮我们去掉@ResponseBody这个 所以原本这样的代码,@Controller public class SpitteController{ @RequestMapping(value="/{id}",...
  • 吓人!半夜,这个程序虚拟机里跑出来了!

    千次阅读 多人点赞 2021-05-22 11:56:53
    ” “废话,刚才咱就里面跑出来的啊” “不对,你快过来看看” 老大闻讯赶了过去,仔细查看后,再一次环顾四周,倒吸了一口凉气。 “二弟,完了,这里好像还是一个虚拟机···” 故事灵感 这个故事的灵感来自于...
  • 报出下面这个错:09-09 03:38:49.075: E/System(300): java.lang.RuntimeException: Unable to get provider ...修改SettingsProvider里面的文件DatabaseHelper.java 将DATABASE_VERSION值改为95
  • 如何将数据库中的图片导出到excel里面,并以图片的形式显示出来 主要代码如下:这里面是main方法,可以拷到开发工具里一下。具体开发可以具体参照一下。 package com.fh.util; import java.awt.image....
  • 如题,我svn上面检出web项目,依赖的包、Tomcat jar包和jdk都加载了。项目也部署到了Tomcat上了,Tomcat能运行,也就是http://localhost:8080/能运行处Tomcat的欢迎界面,可是无论如何项目就是不起来。  最后...
  • 一共有30个,排列情况来看,应该就是正常情况下datepicker展开之后的日历表格,但怎么现在还没点击它就跑出来了? 根据以往的经验,应该是引用新的js文件之后,它在对UI做设置的时候,和原有的UI元素发生了冲突...
  • 步道乐 位置模拟刷步数

    万次阅读 多人点赞 2019-03-30 16:41:35
    前言 因为学校突然来了个需要跑步打卡,每学期要60多次,宅男心塞,所以就想着弄个位置模拟器来代劳了 需要工具 Fake Location root的安卓手机一部 ...出来后你可以看到一个“+”号,点击找到步道乐,...
  • 1. 使用maven 打包 src/test/java 下的文件,生成jar包 2. 使用 java -jar 生成的jar包
  • 删库到路,就是这么迅速!程序员为了报复同事删了公司数据库 一只有头发的程序猿 2019-08-23 09:38 做过互联网行业的都知道,数据库对公司是至关重要的,存储了大量的数据在里面,要是没有这些数据,公司损失...
  • 跑步穿过中关村

    千次阅读 2019-08-14 13:23:00
    他把嘴里的沙土吐出来,旋风已经远了。他歪着脑袋看天,迷迷蒙蒙一片黄尘,太阳在尘土后面,温润平和,只是有点糙,像一块打磨过的毛玻璃。阳光一点都不刺眼,敦煌还是流了泪,怎么说也是阳光。又有股旋风倾斜着向...
  • 总算编出来了一个可以的chrome了

    千次阅读 2009-08-28 19:40:00
    3个错误是一些多语言测试程序(里面一些utf-8的字符,我用的是英文版的vs2008),没什么要紧的。 下面是截图(跟发表版的颜色好像有点不一样,特别是chrome的图标) 里面的interactive_ui_tests.exe是...
  • MySQL删库到路(6):子查询

    千次阅读 热门讨论 2020-05-24 22:08:21
    SELECT * FROM human_active_record WHERE feature LIKE '%淡黄色的长裙%蓬松的头发%' &emsp:一共查询出两个人,查询结果来看,似乎并不能分辩两个人里面谁是李有为遇见的那个。这个时候,就需要子查询排上...
  • javascript入门到路-----小文的js学习笔记(1)---------script、alert、document。write() 和 console.log 标签 javascript入门到路-----小文的js学习笔记(2)--------- 语法构成、关键字和保留字、变量 ...
  • 胡子

    千次阅读 2007-11-14 22:34:00
    这张照片是我在flickr上找到的,保存有一段时间了。...首先,牌戏的名字叫做“胡子”,起源不详,三人即可开打,不过一般是四人玩,这样大家可以轮流休息。因为牵涉到金钱,而且每盘之间输赢颇大,所以很消
  • javascript入门到路-----小文的js学习笔记(1)---------script、alert、document。write() 和 console.log 标签 javascript入门到路-----小文的js学习笔记(2)--------- 语法构成、关键字和保留字、变量 ...
  • 我为什么喜欢跑步

    千次阅读 2017-11-03 19:58:17
    而我跑步是去年的七月份开始的。了三个多月后面因为肩膀疼,医生让多休息别运动,就休息了两个月没有。后面肩膀好了一些,又了起来,基本都是一个星期三次的样子。回想过去,好像做过很多的事,好多都是...
  • 在月光里

    千次阅读 2009-02-11 16:49:00
    我们家附近有个很大的运动场,里面有打篮球的,踢足球的,还有全民健身器材。白天足球场收费,晚上没人管。 塑胶跑道和水泥地板完全不一样啊,好像有弹性似的,N年没运动过的我都了3圈——当然中间有休息,慢走了...
  • JavaWeb项目没有main怎么

    千次阅读 2020-06-17 16:57:58
    main()具体在Tomcat的BootStrap类里面,web应用启动是不会执行类中的main方法的,因为只会调用Tomcat的main,然后通过web.xml的配置去加载其它类,我们平时写的main(),只是用来测试用的 Tomcat也是个Java程序 Java...
  • 一个能将网页上图片里面的英文识别出来并翻译为中文的浏览器源代码。本来是为了看英文漫画而制作的可是这识别引擎识别效果并不理想自制的翻译程序翻译效果也不理想。因此放出这个半成品的源代码给大家.rar,太多无法...
  • 2、DRC的结果都显示出来了,如何只显示错误的? 1、不能使用DRC工具的问题 点calibre的DRC选项时,弹出的load runset file,如下面第二张图所示(第一次DRC时里面没路径的,这是我跑通后存在的路径);点击...
  • 你还在用自己的电脑python程序?大佬都这么玩

    万次阅读 多人点赞 2020-05-06 23:11:21
    最近我在使用python库做一些跟视频有关系的内容时,发现有些内容会特别占电脑内存和cpu,而且等完程序可能需要好几个小时,这时候我就想能不能把我的10月一个月的阿里云云服务器拿出来跑python?不用开电脑还能...
  • 前两天项目中遇到个问题,用定时任务每隔30秒去下载图片到本地,定时任务十几次之后就停止了。用的是 spring内部自带的task任务调度, 一般来说定时任务突然停止有以下几方面的原因:一是定时任务的配置问题,只配...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 189,655
精华内容 75,862
关键字:

从里面跑出去了