GVKun编程网logo

oracle ,mysql,sqlserver 字段设置默认值是否为空测试(sql语句设置字段默认值为0)

1

最近很多小伙伴都在问oracle,mysql,sqlserver字段设置默认值是否为空测试和sql语句设置字段默认值为0这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展case..

最近很多小伙伴都在问oracle ,mysql,sqlserver 字段设置默认值是否为空测试sql语句设置字段默认值为0这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展case...when... 和 MySql、Oracle、SqlServer 处理空值、db2,oracle,mysql ,sqlserver 限制返回的行数、java的web应用系统,想支持多种数据库(oracle,sqlserver,mysql)、JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)等相关知识,下面开始了哦!

本文目录一览:

oracle ,mysql,sqlserver 字段设置默认值是否为空测试(sql语句设置字段默认值为0)

oracle ,mysql,sqlserver 字段设置默认值是否为空测试(sql语句设置字段默认值为0)

------------------------------------------------------------------------------------------
--MSsql
------------------------------------------------------------------------------------------
--  drop table testtab
create table testtab(id int,name varchar(10));
go
insert into testtab(id,name)values(1,'aa'),(2,'bb');
go
select * from testtab;
go
--方法一
alter table testtab add addtime datetime default(getdate()) --字段历史数据为null
go
--方法二
alter table testtab add addtime2 datetime not null default(getdate()) --字段历史数据自动填充
go
--方法三
alter table testtab add addtime3 datetime;
alter table testtab add constraint df_testtab_addtime3 default(getdate()) for addtime3; --字段历史数据为null
go
/*
id  name	  addtime	addtime2			    addtime3
--  ----	  -------	----------------------- --------
1   aa	  NULL	2017-02-14 11:32:45.960 NULL
2   bb	  NULL	2017-02-14 11:32:45.960 NULL
*/
insert into testtab(id,name)values(3,'cc'),(4,'dd');
go
select * from testtab;
go
/*
id  name	  addtime				 addtime2			    addtime3
--  ----	  ----------------------	 ----------------------- --------------------
1   aa	  NULL				 2017-02-14 11:32:45.960 NULL
2   bb	  NULL				 2017-02-14 11:32:45.960 NULL
3   cc	  2017-02-14 11:33:57.193 2017-02-14 11:33:57.193	2017-02-14 11:33:57.193
4   dd	  2017-02-14 11:33:57.193 2017-02-14 11:33:57.193	2017-02-14 11:33:57.193
*/

------------------------------------------------------------------------------------------
--MysqL
------------------------------------------------------------------------------------------
--  drop table testtab;
create table testtab(id int,name varchar(10));
insert into testtab(id,'bb');
select * from testtab;

--方法一
alter table testtab add addtime datetime default current_timestamp; --字段历史数据自动填充
--方法二
alter table testtab add addtime2 datetime;
alter table testtab modify column addtime2 datetime default current_timestamp; --字段历史数据为null
--另
alter table testtab add addtime3 datetime not null; --字段历史数据为 "0000-00-00 00:00:00"

+----+------+---------------------+----------+---------------------+
| id | name | addtime             | addtime2 | addtime3            |
+----+------+---------------------+----------+---------------------+
|  1 | aa   | 2017-02-14 11:37:37 | NULL     | 0000-00-00 00:00:00 |
|  2 | bb   | 2017-02-14 11:37:37 | NULL     | 0000-00-00 00:00:00 |
+----+------+---------------------+----------+---------------------+

insert into testtab(id,name,addtime3)values(3,'cc',Now()),'dd',Now());
select * from testtab;
+----+------+---------------------+---------------------+---------------------+
| id | name | addtime             | addtime2            | addtime3            |
+----+------+---------------------+---------------------+---------------------+
|  1 | aa   | 2017-02-14 11:37:37 | NULL                | 0000-00-00 00:00:00 |
|  2 | bb   | 2017-02-14 11:37:37 | NULL                | 0000-00-00 00:00:00 |
|  3 | cc   | 2017-02-14 11:38:58 | 2017-02-14 11:38:58 | 2017-02-14 11:38:58 |
|  4 | dd   | 2017-02-14 11:38:58 | 2017-02-14 11:38:58 | 2017-02-14 11:38:58 |
+----+------+---------------------+---------------------+---------------------+

------------------------------------------------------------------------------------------
--ORACLE
------------------------------------------------------------------------------------------
--  drop table testtab;
create table testtab(id int,'aa');
insert into testtab(id,name)values(2,'bb');
select * from testtab;
--方法一
alter table testtab add (addtime date default sysdate null);--字段历史数据自动填充
--方法二
alter table testtab add (addtime2 date null);
alter table testtab modify (addtime2 date default sysdate); --字段历史数据为null
/*
   	ID	  NAME	ADDTIME			ADDTIME2
   	--	  ----	------------------	--------
1	1	  aa		2017/2/14 11:35:34	
2	2	  bb		2017/2/14 11:35:34	
*/
insert into testtab(id,'cc');
select * from testtab;
/*
   	ID	  NAME	ADDTIME			ADDTIME2
   	--	  ----	------------------	--------
1	1	  aa		2017/2/14 11:35:34	
2	2	  bb		2017/2/14 11:35:34	
3	3	  cc		2017/2/14 11:36:44	2017/2/14 11:36:44
*/

case...when... 和 MySql、Oracle、SqlServer 处理空值

case...when... 和 MySql、Oracle、SqlServer 处理空值

1、Case 具有两种格式,简单 Case 函数和 Case 搜索函数。

--简单Case函数
CASE sex
     WHEN ''1'' THEN ''男''
     WHEN ''2'' THEN ''女''
ELSE ''其他'' END
--Case搜索函数
CASE WHEN sex = ''1'' THEN ''男''
     WHEN sex = ''2'' THEN ''女''
ELSE ''其他'' END

2、判断某字段是否为 null,和判断是否为字符或数字时的写法不一样,如果不注意,很容易搞错

--错误方法:
CASE columnName WHEN null THEN 0 ELSE columnName END

--正确方法:
CASE WHEN columnName is null THEN 0 ELSE columnName END

3、MYSQL IFNULL(expr1,expr2)          
如果 expr1 不是 NULL,IFNULL () 返回 expr1,否则它返回 expr2。IFNULL () 返回一个数字或字符串值,取决于它被使用的上下文环境。 

mysql> select IFNULL(1,0);      
                     -> 1      
mysql> select IFNULL(0,10);      
                     -> 0      
mysql> select IFNULL(1/0,10);      
                     -> 10      
mysql> select IFNULL(1/0,yes);      
                     -> yes     

    IF(expr1,expr2,expr3)          
如果 expr1 是 TRUE (expr1<>0 且 expr1<>NULL),那么 IF () 返回 expr2,否则它返回 expr3。IF () 返回一个数字或字符串值,取决于它被使用的上下文。

mysql> select IF(1>2,2,3);      
                     -> 3      
mysql> select IF(1<2,yes,no);      
                     -> yes   

expr1 作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。

mysql> select IF(0.1,1,0);      
                     -> 0      
mysql> select IF(0.1<>0,1,0);      
                     -> 1  

在上面的第一种情况中,IF (0.1) 返回 0,因为 0.1 被变换到整数值,导致测试 IF (0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。 

4、用于处理 NULL 值的函数

      MySQL  -  IFNULL () 函数

      Oracle   -  NVL () 函数

      SqlServer  -  ISNULL () 函数

5、Oracle 中函数 NVL,NVL2,NULLIF,COALESCE    

     NVL 函数的格式如下:NVL (expr1,expr2)

含义是:如果 oracle 第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

     NVL2 函数的格式如下:NVL2 (expr1,expr2, expr3)

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

    NULLIF 函数的格式如下:NULLIF (exp1,expr2)

含义是:如果 exp1 和 exp2 相等则返回空 (NULL),否则返回第一个值。 

    Coalesce 函数格式如下:Coalesce (expr1, expr2, expr3….. exprn)

含义是:指定多个表达式的占位符,所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
返回表达式中第一个非空表达式,如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。

6、SqlServer 函数 ISNULL ()

    ISNULL ( check_expression , replacement_value )

含义是:如果 check_expression 不为 NULL,则返回它的值;否则,在将 replacement_value 隐式转换为 check_expression 的类型(如果这两个类型不同)后,则返回前者。

db2,oracle,mysql ,sqlserver 限制返回的行数

db2,oracle,mysql ,sqlserver 限制返回的行数

不同数据库限制返回的行数的关键字如下:

①db2

select * from table fetch first 10 rows only;

 

②oracle

select * from table where rownum<=10;

 

③mysql

select * from table limit 10;

 

④sqlServer

select top 10 * from table;

java的web应用系统,想支持多种数据库(oracle,sqlserver,mysql)

java的web应用系统,想支持多种数据库(oracle,sqlserver,mysql)

java的web应用系统,以前是只支持sqlserver 现在想支持多种数据库(oracle,sqlserver,mysql),应该怎么改

JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)

JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)

* 感谢DT课堂颜群老师的视频讲解(讲的十分仔细,文末有视频链接)

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/*
    1、JDBC访问数据库的具体步骤:
    a、导入驱动,加载具体的驱动类
    b、与数据库建立连接
    c、发送Sql,执行
    d、处理结果集 
    
    2、API(接口、方法、类) 主要功能:
    a、与数据库建立连接
    b、发送Sql语句1
    c、返回处理结果  
    
    3、API的几个操作:
    a、DriverManager: 管理JDBC驱动
    b、Connection   : 连接 
    c、Statement    : 运行 Sql 语句(增删改查)
    d、CallableStatement : 调用数据库中的存储过程 / 存储函数
    e、Result       : 返回结果集
 */
public class JDBPMySqlDemo {
	/*  这些值一般都是不轻易改变的,所以设置为常量
	   
	        不同的数据库对应的连接字符串不同,(形式不同,内容类似-------哪种类型的数据库、IP地址、端口号、数据库名)
	    Oracle : jdbc:oracle:thin:@localhost:1521:数据库实例名 (你创建的数据库的名字)
	    MySql  : jdbc:mysql://localhost:3306/数据库实例名
	    SQLServer : jdbc:microsoft:sqlserver:localhost:1433;databasename = 数据库实例名
	 
	 
	  
     */
	private static final String URL = "jdbc:mysql://localhost:3306/testdate";
	private static final String USER = "root";
	private static final String PWD = "root";

	public static void update() { // 静态方法要求其内部用到的变量也应该是静态的(所以上述变量也应该设置为静态变量)
		// 因为要进行两次异常处理,所以需要将变量设置成相对于 try..catch..语句的外部变量
		Statement stam = null;         // 会抛出SQLException异常
		Connection connection = null;  // 会抛出ClassNotFoundException异常
		try {
			/* 
			       驱动在每个数据库各自对应的 jar包中,所以需要先把各个数据库对应的包进行导入
			       
			       驱 动jar:(可以在这个链接中进行查找:https://mvnrepository.com/)
			   		Oracle:ojdbc-x.jar
			   		MySql:mysql-connector-java-x.jar
			   		SqlServer:sqljdbc-x.jar   
			   		
			       导入驱动(不同的数据库对应的驱动不同)
			   		Oracle : oracle.jdbc.OracleDriver
			   		MySql  : com.mysql.jdbc.Driver
			   		SqlServer : com.mircrosoft.sqlserver.jdbc.SQLServerDriver
			*/
			
		    // 导入驱动(加载具体的驱动类)
			Class.forName("com.mysql.jdbc.Driver");
			// 连接(通过DriverManager.getConnection(连接字符串,用户名,密码))方法进行连接
			connection = DriverManager.getConnection(URL, USER, PWD);
			// 运行SQL语句(想要运行SQL语句要先创建一个Statement对象,用这个实例对象进行操作)
			stam = connection.createStatement();
			
			// 将sql语句作为字符串进行执行
//			String sql = "delete from student where stuno = 2";
			String sql = "insert into student values(2,''zs'',12,''s3'')";
            // 通过stam的方法进行执行SQL语句进行更新数据库(返回值是影响的行数 (int) )
			int count = stam.executeUpdate(sql);
			if (count > 0) {
				System.out.println("操作成功!");
			}
		} catch (ClassNotFoundException e) {   // 出现异常时最好一个一个处理(更加安全)
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {     // 无论操作成功与否,我们都要进行关闭操作(放在Finally必定对执行)
			try {
				// 如果还没有执行到给 stam 变量赋值就已经异常处理了,那么stam还是 null,就会null.close(),从而出现空指针的问题
				if(stam != null) stam.close();   // 避免出现空指针
				if(connection != null)connection.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		// 将update() 设置为静态方法,便于调用
		update();
	}

}

如果写的不太清晰,或者有问题,可以留言,本人会认真回答。

颜大佬的视频链接:https://www.bilibili.com/video/av29086718?p=13

关于oracle ,mysql,sqlserver 字段设置默认值是否为空测试sql语句设置字段默认值为0的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于case...when... 和 MySql、Oracle、SqlServer 处理空值、db2,oracle,mysql ,sqlserver 限制返回的行数、java的web应用系统,想支持多种数据库(oracle,sqlserver,mysql)、JDBC访问数据库的具体步骤(MySql + Oracle + SQLServer)等相关内容,可以在本站寻找。

本文标签: