无法解签名的解压缩浮点数。在解压缩的十进制中,每个十进制对应一个字节。需要定义显示长度(M)和小数位数(D)。NUMERIC是DECIMAL的同义词。
要定义一个具有十进制值的列作为数据类型,请遵循以下语法:
column_name DECIMAL(P,D);
哪里-
P是代表位数的精度(范围为1到65)
D是代表小数点后的位数的标度。
注意-在MySQL中D应该<=P。
您可以在MySQL中创建一个带有十进制值的表,如下所示-
CREATE TABLE Students( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, PERCENTAGE DECIMAL (18, 2), ADDRESS VARCHAR (25), PRIMARY KEY (ID) );
要使用JDBC API在数据库中创建一个类型为十进制值的表,您需要-
注册驱动程序-使用DriverManager类的registerDriver()方法注册驱动程序类。将驱动程序类名称作为参数传递给它。
建立连接-使用DriverManager类的getConnection()方法连接数据库。将URL(字符串),用户名(字符串),密码(字符串)作为参数传递给它。
创建语句-使用Connection接口的createStatement()方法创建一个Statement对象。
执行查询-使用execute()
Statement接口的方法执行CREATE查询。
下面的JDBC程序建立与MySQL的连接,并创建一个名为customer的表,该表的DECIMAL作为其列之一的数据类型-
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateTableExample { public static void main(String args[]) throws SQLException { //注册驱动程序 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //获得连接 String mysqlUrl = "jdbc:mysql://localhost/SampleDB"; Connection con = DriverManager.getConnection(mysqlUrl, "root", "password"); System.out.println("Connection established......"); //创建语句 Statement stmt = con.createStatement(); //查询创建表 String query = "CREATE TABLE Students(" + "ID INT NOT NULL, " + "NAME VARCHAR (20) NOT NULL, " + "AGE INT NOT NULL, " + "PERCENTAGE DECIMAL(18, 2), " + "ADDRESS VARCHAR (25) , " + "PRIMARY KEY (ID))"; stmt.execute(query); System.out.println("Table Created......"); } }
输出结果
Connection established...... Table Created......
您可以使用Describe命令验证创建的表数据类型为-
mysql> describe customers; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | ID | int(11) | NO | PRI | NULL | | | NAME | varchar(20) | NO | | NULL | | | AGE | int(11) | NO | | NULL | | | PERCENTAGE | decimal(18,2) | YES | | NULL | | | ADDRESS | varchar(25) | YES | | NULL | | +------------+---------------+------+-----+---------+-------+ 5 rows in set (0.06 sec)