mysql学习【第4篇】:数据库之数据类型

数据库之数据类型

首先补充点了解的小知识;

select * from mysql.user  #显示出来乱了
select * from mysql.user\G  #加了\G后一行一行显示了

一、数据类型:分不同种类去存不同类型的数据

存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的

1、数字(默认是有符号的)

数字又分为:

  整型:tinyint(小整型):一个字节

     int(整型):四个字节。注意:int的 宽度指的是显示的宽度,与存储无关

     bigint(大整形):八个字节

========================================
        tinyint[(m)] [unsigned] [zerofill]

            小整数,数据类型用于保存一些范围的整数数值范围:
            有符号: -128 ~ 127
            无符号:0~ 255

            PS: MySQL中无布尔值,使用tinyint(1)构造。
 [unsigned]参数和[zerofill]参数的应用
3.将有符号的修改为无符号的:alter table t1 modify unsigned;(注意,如果里面有值了,                                  得把里面的值清空了再修改)4.alter table t2 modify id int(10) zerofill; 如果显示不够,就用zerofill填充

========================================
        int[(m)][unsigned][zerofill]

            整数,数据类型用于保存一些范围的整数数值范围:
            有符号: -2147483648 ~ 2147483647
            无符号:0~ 4294967295

========================================
        bigint[(m)][unsigned][zerofill]
            大整数,数据类型用于保存一些范围的整数数值范围:
            有符号:-9223372036854775808 ~ 9223372036854775807
            无符号: 0~  18446744073709551615

  小数:

     float:在位数比较短的情况下不精准(**** 数值越大,越不准确 ****)

     double:在位数比较长的情况下不精准(**** 数值越大,越不准确 ****)

     decimal:如果是小数,则推荐使用decimal

           因为精准,内部原理是以字符串的形式去存

  

 1 先创建一个数据库:create datdabase test;
 2 -----------验证1:int,tinyint,bigint----
 3 create table t1(id tinyint);
 4 create table t1(id int);
 5 create table t1(id bigint);  #如果数字比较大的时候就用bigint
 6 1.如果没有指定符号。默认的是有符号的
 7 2.insert into t1(-129) #就会报错了,因为范围是-128~127
 8 3.将有符号的修改为无符号的:alter table t1 modify unsigned;(注意,如果里面有值了,得把里面的值清空了再修改)
 9 4.alter table t2 modify id int(10) zerofill; 如果显示不够,就用zerofill填充
10 5.宽度:跟存的没有关系,指的是显示的宽度
11
12
13 ----------验证2:float,double------
14 create table t3(salary float(5,2)) #5代表salary总共多宽,2代表小数点后保留2位,那么整数部分有3位
15 insert into t3 values(3.725454);
16 insert into t3 values(-3.725454);
17 insert into t3 values(1111.725454);  #像这个就会报错了
18 insert into t3 values(111.725454);
19
20 bit类型了解就好了
21 bit类型:代表二进制的类型
22 ----------验证3:bit--------
23 create table t3(x bit);
24 insert into t3 values(0),(1);
25 insert into t3 values(0),(2)); #只能存二进制的,这样的话就会报错
26 select * from t3;

  

最后:整形类型,其实没有必要指定显示宽度,使用默认的就ok

2、字符、

char:简单粗暴,不够就用空格凑够固定长度存放起来,浪费空间,但是存储速度快    (牺牲空间,提高速度)varchar(你有几个就存几个):精准,计算出待存放数据的长度,节省空间,存取速度慢        (牺牲速度,提高效率)

  1.-----------------

  create table t6(name char(4));
  insert into t6 values(‘alexsb‘);
  insert into t6 values(‘欧德博爱‘);
  insert into abc values(‘艾利克斯a‘);

2.------------- create table t7(x char(5),y varchar(5));
 insert into t7 values(‘sff‘,‘aaaaa‘);
 select char_length(x),char_length(y) from t7; 查看字符长度
 set sql_mode=‘pad_char_to_full_length‘;   #打回原形
 insert into t7 values(‘你好啊‘,‘好好好!‘);#utf-8里面一个汉字代表三个字节,那‘你好啊‘就代表九个,                          #加上两个空格就是11个字节
 select length(x),length(y) from t7; 查看字节长度

查看字符的长度

查看字节的长度

3、日期

作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等

有下面几种类型:

datatime:2017-09-06 10:30:22
data:2017-09-06
time:10:30:22
year:2017
timeatamp:和datatime是一样的,就是支持的范围datatime的大

---------------验证4:日期类型-------
create table stu(
id int,
name char(5),
born_data date,
born_year year,
reg_time datetime,
class_time time
);

insert into stu values(1,‘ao‘,now(),now(),now(),now());
insert into stu values(1,‘xiao‘,‘2017-09-06‘,‘2017‘,‘2017-09-06 10:39:00‘,‘08:30:00‘);

#了解
insert into stu values(1,‘alex‘,‘2017-09-06‘,2017,‘2017-09-06 10:39:00‘,‘08:30:00‘);
insert into stu values(1,‘alex‘,‘2017/09/06‘,2017,‘2017-09-06 10:39:00‘,‘08:30:00‘); 没有-的可以不用加引号
insert into stu values(1,‘alex‘,‘20170906‘,2017,‘20170906103900‘,‘083000‘); 也可以吧符号取了连写
============注意啦,注意啦,注意啦===========
1. 单独插入时间时,需要以字符串的形式,按照对应的格式插入
2. 插入年份时,尽量使用4位值
3. 插入两位年份时,<=69,以20开头,比如50,  结果2050
                >=70,以19开头,比如71,结果1971
MariaDB [db1]> create table t12(y year);
MariaDB [db1]> insert into t12 values
    -> (50),
    -> (71);
MariaDB [db1]> select * from t12;
+------+
| y    |
+------+
| 2050 |
| 1971 |
+------+

1 在实际应用的很多场景中,MySQL的这两种日期类型都能够满足我们的需要,存储精度都为秒,但在某些情况下,会展现出他们各自的优劣。下面就来总结一下两种日期类型的区别。
2
3 1.DATETIME的日期范围是1001——9999年,TIMESTAMP的时间范围是1970——2038年。
4
5 2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也依赖于时区。在mysql服务器,操作系统以及客户端连接都有时区的设置。
6
7 3.DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。
8
9 4.DATETIME的默认值为null;TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。

4、枚举与集合

字段的值只能在给定范围中选择,如单选框,多选框

enum枚举:规定一个范围:这个范围可以有多个,但是为该字段传值时,只能取规定范围内的其中一个
set集合:规定一个范围:这个范围可以有多个,但是为该字段传值时,可以取规定范围内的一个或多个
enum如果你不传值,默认是第一个值,或者为NUll

----------枚举和集合-----------
create table stu1(
id int primary key auto_increment,
name char(5),
sex enum(‘male‘,‘female‘), #enum 代表枚举类型
hobbies set(‘eat‘,‘play‘,‘study‘,‘coding‘) #set 代表集合类型
);
insert into stu1(name,sex,hobbies) values(‘haiyan‘,‘none‘,‘dsfdg‘);
select * from stu1;  #如果设置了sex是枚举类型,就的从设定的里面选其中的一个存
insert into stu1(name,sex,hobbies) values(‘haiyan‘,‘female‘,‘play,study‘);
select * from stu1;  #如果设置了hobbies是集合类型,就得从设定的里面选其中一个或者多个值来存

没有按照枚举或集合规定的传值的结果

按照枚举或集合的规定传值的结果

原文地址:https://www.cnblogs.com/kcwxx/p/10145464.html

时间: 2024-10-13 16:14:23

mysql学习【第4篇】:数据库之数据类型的相关文章

MySQL学习笔记一打开数据库操作

打开数据库 1.cmd窗口中输入mysql -uroot -p 2.接着提示输入密码 3.如果MySQL服务器没有打开会报错,这时可以使用以下命令来打开服务器 服务器没有开启错误提示:ERROR 2003 (HY000): Can't connect to mysql server on' localhost' (10061) net start mysql57  启动服务 net stop mysql57  停止服务 在服务设置里面手动打开 4.配置字符格式,在my.ini文本中找到下面两行,

mysql学习之通过文件创建数据库以及添加数据

转自:http://blog.163.com/[email protected]/blog/static/170171558201411311547655/ 1.# 创建数据库语句 create database mydb default character set utf8;# 运用数据库语句 use mydb;# 创建表格,这里只简单的创建一张表格# 设置InnoDB主要是为了事务操作的需要 create table mytable(   id int primary key auto_in

mysql学习笔记——workbench创建数据库

1.启动MySQL workbench, 到初始界面,点击‘+’号 2.建立新连接 3.双击新连接,填写密码 4.创建数据库,点击红圈中的图标 5. 6. 7. 8.数据库school出现在了左侧导航栏里,双击school,选中school 9.点开school的下拉菜单,右键Table,   create table创建表格 10. 11. 12. 13.添加记录,右键student,选择下拉菜单中的第一项 14.填写记录

MySQL学习【第一篇介绍】

1.首先数据库分为RDBMS(关系型数据库),和NOSQL(非关系型数据库),而我们的mysql则是RDBMS. 2.RDMS和NOSQL特点对比 RDBMS特点: (1)二维表的形式展示 (2)使用率非常大,例如传统企业上使用的orcale,以及最新互联网企业的mysql (3)数据库存取可以通过sql语句 (4)安全性十分的高 (5)产品多样,例如市面上常见的mysql,oracle,mariadb,mssql(sqlserver) NOSQL的特点: (1)不仅仅是sql,其是做RDBMS

JavaScript 学习之第一篇JavaScript的数据类型(2016/8/29 晚 23:12)

1. JavaScript的数据类型 JavaScript 里面有6中数据类型 Boolean String Number Undefined Null Object object(对象)类型包含了数组(arrays) 函数(functions) 以及其他一般对.  数字(Numbers) 类型可以是整型(intergers)或者浮点数(float point)类型以及特殊值NaN 和 Infinity  字符串(Strings)类型包含了空字符串 " ". 布尔值(Booleans)

MySQL学习笔记(4) - 创建数据库

1.建立一个简单的数据库 1 CREATE DATABASE t1: 图中如果未打:号,系统会等待直到用户输入结束符才会之行语句. 2.查看当前服务器下数据库列表 1 SHOW DATABASES; 必须是DATABASES,最后的S不可省去. 3.IF NOT EXISTS语句检查是否存在当前数据库,如果存在,产生警告信息,不会产生错误信息. 1 CREATE DATABASE IF NOT EXISTS t1; 4.查看上述警告信息 1 SHOW WARNINGS; s不可省去. 5.查看数

Mysql学习(2)数据库的创建与删除

创建数据库 { } 必选  | 从前后做选择   [ ] 可选 Create {database | schema} [if not exists] db_name [default] character set [=] charset_name 创建数据库t1 create database t1; 查看所有的数据库 show database; if not exists (如果不存在) 再次创建t1数据库时,系统提示t1已经存在, 但当加上if not exists 将进行覆盖,获得一个警

MySQL学习记录【02】常用数据类型

1.文本 CHAR(*):最多255个字节的定长字符串,它的长度必须在创建时指定 VARCHAR(*):最多255个字节的可变长度字符串,它的长度必须在创建时指定 TEXT:最大长度为64K字符的变长文本 TINYTEXT:最大长度为255字符的变长文本 MEDUIMTEXT:最大长度为16K字符的变长文本 LONGTEXT:最大长度为4GB字符的变长文本 2.整数(考虑数据取值后选择尽可能小的数据类型) tinyint:1字节.有符号值:-128 到127:无符号值:0到255 smallin

mysql学习之基础篇07

视图:view 在查询的时候我们经常把查询到的结果当成一张临时表来看,其实view就可以看成一张虚拟表,是表通过某种运算得到的投影 那么如何创建视图?创建视图需要指定视图的列名和列类型吗? 答:不用,它只是一种关系 既然视图只是表的某种查询得到的投影,所以主要步骤在于查询表上,查询到的结果命名为视图就行了. 创建视图的语法很简单: Create view 视图名 As Select 语句 举个栗子:我们想查询每个栏目下面商品的平均价格,然后取出平均价格前3高的栏目,应该怎么做? select c

mysql学习(一)

mysql学习,这篇博文是关于目前市面上火热的关系型数据库mysql的学习记录. 1,关于mysql的安装,自行百度. 2,sql:structure query language 结构化查询语言. sql分类:  1,DDL(数据定义语言):定义数据库,数据表它们的结构:create(创建),drop(删除),alter(修改)     2,DML(数据操纵语言):主要用来操作数据库:insert(插入),update(修改),delete(删除) 3,DCL(数据定制语言):定义访问权限,取