MySQL-基础(一)

SQL数据类型

MySQL中有很多种数据类型,它们各自有不同的用途和特性。以下是一些主要的MySQL数据类型及其区别:

  1. 数值型

    *INT, INT UNSIGNED, BIGINT: 这些数据类型可以存储整数。INT 可以存储从-2147483648到2147483647的整数,INT UNSIGNED 可以存储从0到4294967295的整数,BIGINT 可以存储从-9223372036854775808到9223372036854775807的整数。

    • DECIMAL(p,s): 用于存储精确的小数。p是总的位数,s是小数点后的位数。
    • FLOAT: 用于存储浮点数(单精度)。
    • DOUBLE: 用于存储双精度浮点数。
  2. 字符型

    • CHAR(n): 用于存储固定长度的字符串。如果实际字符串长度小于n,MySQL会用空格填充到n的长度。
    • VARCHAR(n): 用于存储可变长度的字符串。实际存储的长度是字符串的实际长度,不会用空格填充。
    • TEXT: 用于存储大文本。
    • BLOB: 用于存储二进制大对象。
  3. 日期和时间型

    • DATE: 用于存储日期。格式为 ‘YYYY-MM-DD’。
    • TIME: 用于存储时间。格式为 ‘HH:MM:SS’。
    • DATETIME: 用于存储日期和时间。格式为 ‘YYYY-MM-DD HH:MM:SS’。
    • TIMESTAMP: 用于存储时间戳。格式与DATETIME相同,但范围从1000到9999。默认值为’0000-00-00 00:00:00’。
    • YEAR(4): 用于存储四位年份,范围为1000到9999。
  4. 枚举型(ENUM):ENUM是一个预定义的主数据类型,它允许你在列中指定一组特定的值,然后为该列限制只能使用这些值中的一个。语法为 enum('value1', 'value2', ...)

  5. 集合型(SET):SET是一个预定义的主数据类型,它允许你在列中指定一组值,但与ENUM不同,你可以使用任意数量的值(包括零个或多个)。语法为 set('value1', 'value2', ...)

  6. 二进制型

    • BINARY(n)CHAR(n) BINARY: 用于存储二进制字符串。这些数据类型的排序和比较是二进制级的,而不是字符级的。
  7. 逻辑型(BOOL):在MySQL中,BOOL类型用以下三种方式表示:如果字段的值被设置为NULL,则为UNKNOWN;如果字段的值为数字0(不管在何处、如何存储或解释),则为FALSE;否则为TRUE。注意,MySQL没有严格意义上的布尔类型,而是通过数值类型(如整数)来表示布尔值。

  8. 其他特殊类型:如主键(PRIMARY KEY)、唯一键(UNIQUE KEY)、外键(FOREIGN KEY)等,这些不是基本的数据类型,但它们在数据库设计中扮演着重要的角色。

SQL 语句

## 建库
CREATE DATABASE study;

## 建表
CREATE TABLE `mzt`(  
id INT COMMENT '编号',  
mname VARCHAR(20) COMMENT '姓名',  
hiredate DATE COMMENT '入职时间',  
sal FLOAT COMMENT '工资',  
bonus DOUBLE COMMENT '奖金'  
);

## 修改列类型
ALTER TABLE mzt MODIFY sal DOUBLE;
ALTER TABLE mzt MODIFY bonus FLOAT;

SHOW CREATE TABLE mzt;

## 展示表结构
DESC mzt;

## 修改表名
ALTER TABLE mzt RENAME mx;
## 修改列名
ALTER TABLE mzt CHANGE mname tname 
##修改名和类型
ALTER TABLE table_name CHANGE COLUMN old_name new_name 列的新类型;
ALTER TABLE mx CHANGE bonus prize DOUBLE;
VARCHAR(15);
## 展示表结构
DESC mzt;

image-20231031204511240

## 修改用户密码
ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';

如图:

image-20231031210012134

FLOAT和DOUBLE的区别

相同点:用于存储浮点数的数据类型

  1. 存储空间:FLOAT占用4个字节,而DOUBLE占用8个字节。因此,DOUBLE可以存储更大范围和更精确的浮点数值。

  2. 精度:由于存储空间的不同,FLOATDOUBLE在精度方面也存在差异。FLOAT支持7位有效数字,而DOUBLE支持16位有效数字。这意味着DOUBLE可以提供更高的精度和更小的误差。

  3. 范围:FLOAT的范围是-3.4E+38到3.4E+38,而DOUBLE的范围是-1.7E+308到1.7E+308。这意味着DOUBLE可以表示更大范围的浮点数值。

varchar和char的区别

  1. 存储方式:varchar是变长类型,而char是定长类型。这意味着varchar类型的字段可以根据实际存储的数据长度来分配空间,而char类型的字段无论存储的数据长度如何,都会占用固定长度的空间。
  2. 存储容量:varchar类型的字段最大长度为65535个字符,而char类型的字段最大长度为255个字符。因此,varchar可以存储更大的数据,而char只能存储较小的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值