发表于: 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存的形式如下图
新练习内容:
建立索引:
插入十条数据,有么有建索引效率相差不大,应该是数据量太小,体现不出来。
没建索引执行时间:
建索引使用时间:
我觉得除了姓名还行在学号上建立索引。
对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了,本周一定可以完成了,加油!
评论