MariaDB中的数据类型详解
发布时间: 2023-12-17 11:03:02 阅读量: 35 订阅数: 42
## 1. 引言
在关系型数据库中,数据类型是一个非常重要的概念。不同的数据类型决定了数据在数据库中的存储方式、范围和精度,对于数据库的性能和数据完整性都有着重要的影响。本篇文章将介绍MariaDB中常用的数据类型,包括数值型、字符型、日期时间型、非标准数据类型和自定义数据类型等,以及数据类型选择的影响因素和优化数据库性能的数据类型选择方法。首先,让我们一起来了解一下MariaDB数据库和数据类型在数据库中的重要性。
## 2. 数值型数据类型
数字是数据库中经常使用的一种数据类型,它可以表示整数、小数以及带有精度的数字。在MariaDB中,有多种数值型数据类型可供选择,以满足不同的应用需求。
### 整型数据类型
整型数据类型用于存储没有小数部分的整数值。在MariaDB中,有多种整型数据类型可供选择,如下所示:
- `TINYINT`:范围为-128到127的整数。
- `SMALLINT`:范围为-32768到32767的整数。
- `MEDIUMINT`:范围为-8388608到8388607的整数。
- `INT`:范围为-2147483648到2147483647的整数。
- `BIGINT`:范围为-9223372036854775808到9223372036854775807的整数。
下面是使用整型数据类型的示例代码(使用Python语言):
```python
import pymysql
# 连接到数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', db='test_db')
cursor = conn.cursor()
# 创建表
cursor.execute("CREATE TABLE IF NOT EXISTS employees (id INT, name VARCHAR(20), age INT)")
# 插入数据
cursor.execute("INSERT INTO employees (id, name, age) VALUES (%s, %s, %s)", (1, "John", 25))
cursor.execute("INSERT INTO employees (id, name, age) VALUES (%s, %s, %s)", (2, "Jane", 30))
conn.commit()
# 查询数据
cursor.execute("SELECT * FROM employees")
rows = cursor.fetchall()
for row in rows:
print(row)
# 关闭连接
cursor.close()
conn.close()
```
上述代码创建了名为`employees`的表,该表包含`id`、`name`和`age`三列,其中`id`和`age`是整型。插入了两条数据,并查询输出所有数据。
### 浮点型数据类型
浮点型数据类型用于存储带有小数部分的数值。在MariaDB中,有两种浮点型数据类型可供选择,分别是`FLOAT`和`DOUBLE`,可以指定存储的精度。
下面是使用浮点型数据类型的示例代码(使用Java语言):
```java
import java.sql.*;
public class Main {
public static void main(String[] args) {
try {
// 连接到数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_db", "root", "123456");
Statement stmt = conn.createStatement();
// 创建表
stmt.execute("CREATE TABLE IF NOT EXISTS products (id INT, name VARCHAR(20), price FLOAT)");
// 插入数据
stmt.execute("INSERT INTO products (id, name, price) VALUES (1, 'Product 1', 9.99)");
stmt.execute("INSERT INTO products (id, name, price) VALUES (2, 'Product 2', 14.99)");
// 查询数据
ResultSet rs = stmt.executeQuery("SELECT * FROM products");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
float price = rs.getFloat("price");
System.out.println("ID: " + id + ", Name: " + name + ", Price: " + price);
}
// 关闭连接
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
上述代码创建了名为`products`的表,该表包含`id`、`name`和`price`三列,其中`price`是浮点型。插入了两条数据,并查询输出所有数据。
### 定点型数据类型
定点型数据类型用于存储精确的数值,包括固定的小数位数。在MariaDB中,有两种定点型数据类型可供选择,分别是`DECIMAL`和`NUMERIC`,可以指定存储的精度和小数位数。
下面是使用定点型数据类型的示例代码(使用Go语言):
```go
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/test_db")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 创建表
_, err = db.Exec("CREATE TABLE IF NOT EXISTS orders (id INT, total_price DECIMAL(1
```
0
0