发表于: 2018-03-09 00:04:28

2 628



首先自我解答下上次日报中的两个疑问

1、每个表我都把主键ID设置成了bitint(不知道是不是等同于long),自增,还设置了默认值,但是insert数据的时候不写就插不进去,这一点和MS SQL不一样。

答:把主键ID设置成bigint这个本身就是有问题的,java中的long对应mysql中的int。insert不进去是因为我mysql的语法和ms sql还是有一些差异的。MySQL中向自增列插入数据时必须使用null来表示插入的是自增列,除非显式指定插入列表中不包含自增列,而SQL Server向自增列插入数据时可以且必须无视该列,除非设置显示插入模式。

-- SQL Server直接使用identity,但必须有非自增列之外的列才能插入,除非显式开启手动插入自增列

create table emp1(id int not null identity(1,2),name CHAR(20));

insert into emp1 VALUES('malongshuai');

-- MySQL中自增列必须为索引列,并且只能设置种子值而不能直接设置步长

create table emp1(id int not null primary key AUTO_INCREMENT);

insert into emp1 values(null);

2、时间我开始写成了timestamp类型,但是插入时间戳类型的数据插不进去,无奈改为bigint。

答:mysql中存时间一般有三种方式:原生的 Datetime 和 Timestamp类型或者使用 INT 字段把日期和时间保存为一个纯数字。时间戳是一个纯数字,应该使用int存。Timestamp存的形式如下图




新练习内容:

建立索引:

alter table xz_enrollmenstaff add index index_show_name (show_name) ;

插入十条数据,有么有建索引效率相差不大,应该是数据量太小,体现不出来。

没建索引执行时间:

建索引使用时间:

我觉得除了姓名还行在学号上建立索引。


对MySQL的思考:

对SQL Server比较熟,对比着看吧。

1. 和SQL Server语法主要不同的地方

1.1 大小写敏感性

MySQL和SQL Server一样,对大小写不敏感。但不同的是,在MySQL中对部分对象的引用是大小写敏感的,如数据库名、表名,但对字段、索引、函数、存储过程等的引用不敏感。

1.2 自增列

正好解释了上次日志中疑问。MySQL中设置自增列(auto_increment)的列必须是有索引的列,且创建表时要显式指定的种子值需要在建表语句之后。另外MySQL一张表只能有一个自增列。而SQL Server中可以有多个自增列。且MySQL中向自增列插入数据时必须使用null来表示插入的是自增列,除非显式指定插入列表中不包含自增列,而SQL Server向自增列插入数据时可以且必须无视该列,除非设置显示插入模式。

-- SQL Server直接使用identity,但必须有非自增列之外的列才能插入,除非显式开启手动插入自增列

create table emp1(id int not null identity(1,2),name CHAR(20));

insert into emp1 VALUES('malongshuai');

insert into emp1 values('gaoxiaofang');

select * from emp1; 

-- MySQL中自增列必须为索引列,并且只能设置种子值而不能直接设置步长

create table emp1(id int not null primary key AUTO_INCREMENT);

create table emp2(id int not null primary key AUTO_INCREMENT) auto_increment=100;

insert into emp1 values(null);

insert into emp2 values(null);

1.3 删除表

在删除表方面,MySQL比SQL Server要方便很多,判断起来也方便很多。

-- SQL Server删除表,每次只能删除一张表

if object_id('table_name') is not null drop table table_name;

if exists(select object_id('table_name')) drop table table_name;

-- MySQL可以直接判断,且一次可以删除多表

drop table if exists table_name1,table_name2...

 

2. 数据类型

 

3、语法不同

例如:例1,取出前十条

在MySQL中:    SELECT * FROM table LIMIT 10

在SQLServer中: SELECT TOP 10 * FROM table

例2,每页十条,取出第三页

在MySQL中:   SELECT * FROM table LIMIT 20,10

在SQLServer中:SELECT TOP 10 * FROM table WHERE ID NOT IN

(SELECTTOP 20 ID FROM table ORDER BY ID DESC) ORDER BY ID DESC


JDK和JRE的区别

JRE: Java Runtime Environment

JDK:Java Development Kit 

JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。

JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。

如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。JRE根据不同操作系统(如:windows,linux等)和不同JRE提供商(IBM,ORACLE等)有很多版本,最常用的是Oracle公司收购SUN公司的JRE版本。


环境变量


新建的Maven项目和生成的war包


小结:今天的内容没什么难度,剩下的就需要coding了,本周一定可以完成了,加油!





返回列表 返回列表
评论

    分享到