MySQL基础(二:常用数据类型及MySQL创建过程实例)

举报
坠入极夜的夏 发表于 2024/04/27 23:29:39 2024/04/27
【摘要】 MySQL基础(二:常用数据类型及MySQL创建过程实例)

常用数据类型

整数型:

int:
    int 是常用的整数类型,占用4个字节(32位)的存储空间
	有符号的情况下,其范围是从-2^31 (-2147483648)2^31-1 (2147483647)
	无符号的情况下,其范围是从02^32-1 (4294967295)
-----------------------
列名称 int unsigned	# 加unsigned不带符号||不加默认带符号
tinyint:
    tinyint 是最小的整数类型,占用1个字节(8位)的存储空间
    有符号的情况下,其范围是从-128127
    无符号的情况下,其范围是从0255
-----------------------
列名称 tinyint unsigned	# 加unsigned不带符号||不加默认带符号
bigint:
	bigint 是最大的整数类型,占用8个字节(64位)的存储空间
	有符号的情况下,其范围是从-2^63 (-9223372036854775808)2^63-1 (9223372036854775807)
	无符号的情况下,其范围是从02^64-1 (18446744073709551615)
-----------------------
列名称 bigint unsigned	# 加unsigned不带符号||不加默认带符号

小数型:

float:
    float 是一种浮点数类型,它允许存储单精度浮点数.
	存储空间:
		通常占用4个字节(32位),其中1位用于符号位,8位用于指数,剩下的23位用于尾数(精度).
    精度范围:
    	大约能提供67位的有效数字,但不保证完全精确,因为浮点数在计算机内部是近似表示的.
double:
	double 也属于浮点数类型,但它是双精度浮点数.
	存储空间:
		通常占用8个字节(64位),结构类似于 float,只是指数和尾数的位数更多.
	精度范围:
		double 可以提供更高的精度,15位有效数字,同样不保证完全精确.
decimal:
	decimal 是一种定点数类型,用于存储精确的小数,特别适合货币、财务等对精度要求高的场景.
	存储空间:
		根据指定的精度(M)和小数位数(D)而变化,最多可以达到65位数字的精度,其中M代表总的位数(包括整数部分和小数部分),D表示小数部分的位数.
	精度范围:
		decimal 类型可以非常精确地表示数值,但要注意较大的MD值可能会消耗较多的空间.
例子-------------------------
	create table little(id int not null primary key auto_increment,first decimal(8,2))default charse
t=utf8;
-------------------------
	insert into little(first) values(1.2222);
-------------------------
	select * from little;
-------------------------

字符串:

char(消耗空间大,搜索速度快):定长字符串,固定用n(最大255)个字符串进行存储,即使没有n个字符,也会按照n来存储
    含义:
    	固定长度的字符串类型,指定长度n,存储的字符数最多为n个.
    作用:
    	适用于存储长度固定的短字符串,如身份证号码、邮政编码等.
    特点:
    	即使实际输入的字符少于n,MySQL也会在右侧补足空格使其达到n个字符长度.
        固定长度使得查询效率较高,因为MySQL知道每个记录中该字段的大小一致,利于内存和磁盘的优化.
        空间利用率不高,如果存储的数据往往小于定义长度,会造成空间浪费.
varchar(消耗空间小,搜索速度慢):变长字符串,真实数据有所长就按照多长存储,最大655字节
    含义:
    	变长字符串类型,指定长度n,存储的字符数最多为n个,存储空间随实际内容动态调整.
    作用:
    	适用于存储长度可变的字符串,如姓名、地址等.
    特点:
        存储时不填充空格,只会存储实际内容和必要的字符长度信息.
        查询效率相比CHAR略低,但节省空间,尤其适合大部分数据长度不一致的情况.
text:
    含义:
    	大文本类型,可以存储多达65,535(2^16-1)个字符的文本数据.
    作用:
    	适用于存储较长的文章、描述、产品说明等.
    特点:
        TEXT列的数据不在行内存储,而是单独存储在外部区域,因此不会影响主键索引的大小.
        不支持全文索引,默认情况下只能建立前缀索引.
        直接比较和排序TEXT类型的数据可能会影响性能.
mediumtext:
	含义:
		更大的文本类型,可以存储多达16,777,215(即2^24-1)个字符的文本数据.
	作用:
		适用于存储超长的文档、报告、日志记录等.
	特点:TEXT类型相似,但是存储容量更大,其他特性保持一致
longtext:
    含义:
    	最大的文本类型,可以存储多达4,294,967,295(即2^32-1)个字符的文本数据.
    作用:
    	用于存储极其庞大的文本数据,如大型数据库的备份、大数据分析结果等.
    特点:TEXTMEDIUMTEXT类似,但存储容量进一步增大,适用于存储极度庞大的文本内容.

时间型:

time(仅包含时间):
	含义:
		time 数据类型用于存储时间值,不包含日期部分。它能够存储一天中的时间,即小时、分钟和秒,有的数据库系统还支持存储微秒或毫秒级别的精度,'-838:59:59''838:59:59' 的时间范围,表示从-838小时59分钟59秒到838小时59分钟59秒的时间跨度。
	格式:
		通常表示为 HH:MM:SS,其中 HH 表示小时(0023),MM 表示分钟(0059),SS 表示秒(0059)。有些情况下,还可以包括毫秒或微秒,如 HH:MM:SS.mmm。
date(仅包含日期):
	含义:
		DATE类型仅用于存储日期信息,不包含时间部分。它的范围是从 '1000-01-01''9999-12-31'。
	格式:
		存储和显示格式为 'YYYY-MM-DD',仅关注年、月、日。
datetime(不仅包含时间还包含日期):
	含义:
		datatime 数据类型用于存储同时包含日期和时间的信息。它能够存储一个具体的日期加上具体的时间点,覆盖的范围广泛,'1000-01-01 00:00:00''9999-12-31 23:59:59' 的日期时间范围。
	格式:
		一般格式为 YYYY-MM-DD HH:MM:SS,其中 YYYY 表示年份,MM 表示月份,DD 表示日期,后面跟着时间的小时、分钟和秒。同样,某些数据库系统也支持到毫秒或微秒级别的精度。

实例(从头开始进行演示)

	mysql -uroot -p	# 登录mysql,命令输入完成后输入密码
	#	(若环境变量设置完成可直接cmd运行此命令,反之则设置环境变量,或者在mysql.exe的文件中运行cmd后在执行此命令)
	mysql -hlocalhost/*登陆地址*/ -uroot/*用户名*/ -p	# 登录mysql,命令输入完成后输入密码
	show databases;	# 查看现有数据库
    +--------------------+
    | Database           |
    +--------------------+
    | lizi               |
    | users              |
    +--------------------+
	create database lizi default charset utf8 collate utf8_general_ci;	# 建立名为lizi的数据库,设置默认字符集为utf8,默认校对规则为utf8_general_ci
	use lizi; # 使用lizi数据库
	create table  tablelizi /*创建名为tablelizi的数据表*/ (`liziID`/*设置第一个列表名为liziID*/ int/*数据类型为整数型*/ auto_increment/*内容从1开始自增*/ primary key/*设置为主链*/,`liziname`/*设置第二个列表名为liziname*/ varchar(16)/*设置数据最大为16个字符*/ default 'morenshujv'/*如果不输入liziname的数据,将自动默认输入为morenshujv*/,`lizipaword`/*设置第三个列表名为lizipaword*/ varchar(20)/*设置数据最大为16个字符*/ not null/*数据输入不允许为空*/)engine=innodb/*指定使用innodb储存引擎*/ default charset=utf8/*默认字符集为utf8*/;
	show tables;	# 查看lizi中的数据表
    +----------------+
    | Tables_in_lizi |
    +----------------+
    | tablelizi      |
    +----------------+
	insert into `tablelizi`(`lizipaword`) values('lizi123');	# 使用默认liziname,插入lizipaword为'lizi123'的数据
	insert into `tablelizi`(`liziname`,`lizipaword`) values('admin','admin');	# 插入liziname为'admin',lizipaword为'admin'的数据
	select * from `tablelizi`;	# 查询tablelizi中的所有数据
    +--------+------------+------------+
    | liziID | liziname   | lizipaword |
    +--------+------------+------------+
    |      1 | morenshujv | lizi123    |
    |      2 | admin      | admin      |
    +--------+------------+------------+
	select * from `tablelizi` where`liziID`='1';#查询tablelizi中liziID等于1的一行的所有数据(此处可以SQL注入)
    +--------+------------+------------+
    | liziID | liziname   | lizipaword |
    +--------+------------+------------+
    |      1 | morenshujv | lizi123    |
    +--------+------------+------------+
	select `liziID` from `tablelizi`;	# 查询tablelizi中liziID这一列的数据
    +--------+
    | liziID |
    +--------+
    |      1 |
    |      2 |
    +--------+
	select `liziname` from `tablelizi` where `lizipaword`='lizi123';	# 查询tablelizi中lizipaword等于lizi123一行的liizname的数据
    +------------+
    | liziname   |
    +------------+
    | morenshujv |
    +------------+
    drop table tablelizi;	# 删除名为tablelizi的数据表
    show tables;	# 查看数据表
    drop database lizi;	# 删除名为lizi的数据库
    show databases;	# 查看数据库
    +--------------------+
    | Database           |
    +--------------------+
    | users              |
    +--------------------+
    exit	# 退出数据库
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。