数据库(MySQL)—— 数据类型

我们今天来看MySQL中的数据类型:

MySQL中的数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

数值类型

类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
TINYINT1 byte(-128, 127)(0, 255)小整数值
SMALLINT2 bytes(-32768, 32767)(0, 65535)大整数值
MEDIUMINT3 bytes(-8388608, 8388607)(0, 16777215)大整数值
INT/INTEGER4 bytes(-2147483648, 2147483647)(0, 4294967295)大整数值
BIGINT8 bytes(-2^63, 2^63-1)(0, 2^64-1)极大整数值
FLOAT4 bytes(-3.402823466 E+38, 3.402823466351 E+38)0和(1.175494351 E-38, 3.402823466 E+38)单精度浮点数值
DOUBLE8 bytes(-1.7976931348623157 E+308, 1.7976931348623157 E+308)0和(2.2250738585072014 E-308, 1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度的值小数值(精确定点数),M为精度,D为标度

这里简单介绍一下精度和标度:

小数的精度(Precision)和标度(Scale)是描述数字数据存储和表示时两个重要的概念,尤其是在数据库和一些编程环境中。

  • 精度(Precision) 指的是一个数字中所有数字的总数,包括整数部分和小数部分的所有位数。换句话说,它是数字能够表示的总的位数,不区分小数点前后。例如,数字 123.456 的精度是 6(包括三位整数和三位小数)。
  • 标度(Scale) 特别指定了小数点后面数字的位数。它代表小数部分的有效位数。在上述例子中,123.456 的标度是 3,因为有三位小数。

我们可以根据上面的信息在创建表时选择适合的数据类型:

比如我们可以看看之前创建的staff表:
在这里插入图片描述一个人的年龄不可能是小数,而且一个人最大的年龄也不过一百来岁,也不会为负数,所以我们使用 无符号的TINYINT是最合适的:

-- 修改 staff的age数据类型
ALTER TABLE staff MODIFY COLUMN age TINYINT UNSIGNED;

在这里插入图片描述

字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

字符串的数据类型分为两类,带BLOB和不带BLOB的,带BLOB是储存二进制的,但一般不常用。

我们再来看看char和varchar:

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和
字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性能会更高些。

如:
1). 用户名 username ------> 长度不定, 最长不会超过50
		username varchar(50)
2). 性别 gender ---------> 存储值, 不是男,就是女
		gender char(1)
3). 手机号 phone --------> 固定长度为11
		phone char(11)

时间戳类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
如:
1). 生日字段 birthday
		birthday date
2). 创建时间 createtime
		createtime datetime

一个实例

设计一张员工信息表,要求如下:

  1. 编号(纯数字)
  2. 员工工号 (字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)
CREATE TABLE staff(
    -- 编号
    id INT  COMMENT '编号',
    work_id VARCHAR(10) COMMENT '员工工号',
    worker_name VARCHAR(10) COMMENT '员工姓名',
    worker_genger CHAR(1) COMMENT '姓名',
    age TINYINT UNSIGNED COMMENT '年龄',
    identity CHAR(18) COMMENT '身份证号',
    entry_date DATE COMMENT '入职时间'
) COMMENT '员工表';

在这里插入图片描述

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PHP和MySQL是一对常见的Web开发工具,用于构建动态网站。博客系统是Web开发中的一个常见项目,可以用来展示个人或组织的文章和信息。下面是一个简单的PHP+MySQL博客系统的实现步骤: 1. 数据库设计 首先,需要设计数据库结构。这个博客系统需要保存文章、用户和评论信息,可以设计三个表:articles、users和comments。 articles表: | 字段名 | 数据类型 | 说明 | | ------ | -------- | ---- | | id | int | 主键 | | title | varchar | 标题 | | content| text | 内容 | | author | int | 作者id | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | users表: | 字段名 | 数据类型 | 说明 | | ------ | -------- | ---- | | id | int | 主键 | | username | varchar | 用户名 | | password | varchar | 密码 | | email | varchar | 电子邮件 | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | comments表: | 字段名 | 数据类型 | 说明 | | ------ | -------- | ---- | | id | int | 主键 | | content| text | 内容 | | article_id | int | 文章id | | user_id | int | 用户id | | created_at | datetime | 创建时间 | | updated_at | datetime | 更新时间 | 2. 创建数据库连接 使用PHP代码创建与MySQL数据库的连接。 ```php $host = 'localhost'; $user = 'root'; $password = 'password'; $dbname = 'blog'; $conn = new mysqli($host, $user, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } ``` 3. 显示文章列表 使用SQL查询获取文章列表,并在网页上显示出来。 ```php $sql = "SELECT * FROM articles ORDER BY updated_at DESC"; $result = $conn->query($sql); if ($result->num_rows > 0) { // 输出数据 while($row = $result->fetch_assoc()) { echo "<a href='article.php?id=" . $row["id"] . "'>" . $row["title"] . "</a><br>"; } } else { echo "0 results"; } ``` 4. 显示文章内容 使用SQL查询获取指定文章的内容,并在网页上显示出来。 ```php $id = $_GET['id']; $sql = "SELECT * FROM articles WHERE id=" . $id; $result = $conn->query($sql); if ($result->num_rows > 0) { // 输出数据 while($row = $result->fetch_assoc()) { echo "<h1>" . $row["title"] . "</h1>"; echo "<p>" . $row["content"] . "</p>"; } } else { echo "0 results"; } ``` 5. 发布文章 在网页上提供表单,用户可以输入文章标题和内容,将数据保存到数据库中。 ```php if ($_SERVER["REQUEST_METHOD"] == "POST") { $title = $_POST['title']; $content = $_POST['content']; $author = $_SESSION['user_id']; $now = date('Y-m-d H:i:s'); $sql = "INSERT INTO articles (title, content, author, created_at, updated_at) VALUES ('$title', '$content', '$author', '$now', '$now')"; if ($conn->query($sql) === TRUE) { echo "New article created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } ``` 6. 用户认证 使用PHP代码实现用户登录和注册功能。 ```php session_start(); if ($_SERVER["REQUEST_METHOD"] == "POST") { // login $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = $conn->query($sql); if ($result->num_rows > 0) { // set session variable $_SESSION['user_id'] = $result->fetch_assoc()['id']; header('Location: index.php'); exit(); } else { echo "Invalid username or password"; } } if ($_SERVER["REQUEST_METHOD"] == "POST") { // register $username = $_POST['username']; $password = $_POST['password']; $email = $_POST['email']; $now = date('Y-m-d H:i:s'); $sql = "INSERT INTO users (username, password, email, created_at, updated_at) VALUES ('$username', '$password', '$email', '$now', '$now')"; if ($conn->query($sql) === TRUE) { echo "New user created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } ``` 7. 发表评论 在文章页面下方提供表单,用户可以输入评论内容,将数据保存到数据库中。 ```php if ($_SERVER["REQUEST_METHOD"] == "POST") { $content = $_POST['content']; $article_id = $_POST['article_id']; $user_id = $_SESSION['user_id']; $now = date('Y-m-d H:i:s'); $sql = "INSERT INTO comments (content, article_id, user_id, created_at, updated_at) VALUES ('$content', '$article_id', '$user_id', '$now', '$now')"; if ($conn->query($sql) === TRUE) { echo "New comment created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } ``` 这是一个简单的PHP+MySQL博客系统的实现步骤,可以根据需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值