数据库的数据类型和库操作

在MySQL数据库管理系统中,可以通过存储引擎来决定表的类型。同时,MySQL数据库管理系统也提供了数据类型决定表存储数据的类型。

数据类型

常见的数据类型

数值类型:

 整数类型 TINYINT SMALLINT MEDIUMINT INT BIGINT

浮点数类型 FLOAT DOUBLE

定点数类型 DEC 位类型 BIT

字符串类型:

CHAR系列 CHAR VARCHAR

TEXT系列 TINYTEXT TEXT MEDIUMTEXT LONGTEXT

BLOB 系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB

BINARY系列 BINARY VARBINARY

枚举类型: ENUM

集合类型: SET

时间和日期类型: DATE TIME DATETIME TIMESTAMP YEAR

数值类型

整型

作用:用于存储用户的年龄、游戏的Level、经验值等。 两种类型分类:

分类1:tinyint smallint mediumint int bigint

存储数据大小范围:
tinyint         smallint  mediumint   int          bigint
1个字节Byte      2个字节    3个字节       4个字节        8个字节
8bit            16bit     24bit       32bit      64bit 

分类2:有符号 无符号

有符号 : 有正负数 范围运算公式 -2^(n-1)到2^(n-1)-1

比如:

tinyint:-128到127

无符号 :

范围运算公式 0到2^n-1

比如:

tinyint:0到255

bigint: 0到2^64-1

没有负数 类型后面使用unsigned和zerofill修饰符

定义无符号整型有两种方法unsigned和zerofill:

unsigned:
    mysql> create table t6(id bigint unsigned);
    
zerofill:  
    mysql> create table t2 (
        -> id1 int zerofill,
        -> id2 int(6) zerofill
        -> );
    Query OK, 0 rows affected (0.05 sec)mysql> desc t2;
        +-------+---------------------------+------+-----+---------+-------+
        | Field | Type                      | Null | Key | Default | Extra |
        +-------+---------------------------+------+-----+---------+-------+
        | id1   | int(10) unsigned zerofill | YES  |     | NULL    |       |
        | id2   | int(6) unsigned zerofill  | YES  |     | NULL    |       |
        +-------+---------------------------+------+-----+---------+-------+
        2 rows in set (0.00 sec)
    mysql> insert into t2 values(2,2);
        Query OK, 1 row affected (0.01 sec)
    mysql> select * from t2;
        +------------+--------+
        | id1        | id2    |
        +------------+--------+
        | 0000000002 | 000002 |
        +------------+--------+
        1 row in set (0.00 sec)      

浮点型

作用:用于存储用户的身高、体重、薪水等 float(5,3) 5宽度 3精度

 mysql> create table t12(id float(6,2));  

double(5,3)

定点型

定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。 decimal(5,3)

位类型

 BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位 对于位字段可以使用函数读取:

bin()   显示为二进制
hex()   显示为十六进制
mysql> create table test_bit (id bit(4));    //4bit能存储的最大值为15
mysql> desc test_bit;
+-------+--------+------+-----+---------+-------+
| Field | Type   | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| id    | bit(4) | YES  |     | NULL    |       |
+-------+--------+------+-----+---------+-------+
​
mysql> insert into test_bit values(4);
​
mysql> select * from test_bit;
+------+
| id   |
+------+
|      |
+------+
​
mysql> select bin(id),hex(id) from test_bit;
+---------+----------+
| bin(id) | hex(id)  |
+----------+---------+ 
| 100      | 4       |
+----------+---------+
1 row in set (0.00 sec)    

字符串类型

作用:用于存储用户的姓名、爱好、发布的文章等

经验:

  • 1.经常变化的字段用varchar

  • 2.知道固定长度的用char

  • 3.尽量用varchar

  • 4.超过255字符的只能用varchar或者text

  • 5.能用varchar的地方不用text

字符类型 char varchar

char(10)        根据设置值10,占10个.
                    列的长度固定为创建表时声明的长度: 0 ~ 255
varchar(10)     根据实际字符串长度占空间,最多10个
                    列中的值为可变长字符串,长度: 0 ~ 65535

在检索的时候,CHAR列删除了尾部的空格,而VARCHAR则保留这些空格

    mysql> create table vc (
        -> v varchar(4),
        -> c char(4)
        -> );

    mysql> desc vc;
    +-------+------------+------+-----+---------+-------+
    | Field | Type       | Null | Key | Default | Extra |
    +-------+------------+------+-----+---------+-------+
    | v     | varchar(4) | YES  |     | NULL    |       |
    | c     | char(4)    | YES  |     | NULL    |       |
    +-------+------------+------+-----+---------+-------+

    mysql> insert into vc values('ab   ','ab   ');

    mysql> select * from vc;
    +------+------+
    | v    | c    |
    +------+------+
    | ab   | ab   |
    +------+------+

    mysql> select length(v),length(c) from vc;
    +-----------+-----------+
    | length(v) | length(c) |
    +-----------+-----------+
    |         4 |         2 |
    +-----------+-----------+

    mysql> select concat(v,'='), concat(c,'=') from vc;    //在后面加字符'=',看的更清楚
    +---------------+---------------+
    | concat(v,'=') | concat(c,'=') |
    +---------------+---------------+
    | ab  =         | ab=           |
    +---------------+---------------+

枚举类型 enum

mysql> create table t101(name enum('wing','jim'));
只能从wing,jim两个里面2选其1

注: enumerate 英[ɪˈ nju:məreɪt]  美[ɪ ˈnu:məreɪt]

集合 set

mysql> create table t204(name set('wing','jim'));
mysql> insert into t204 set name="jim,wing";
跟enum一样被限定范围,但是可以同插入多个数据

时间和日期类型

时间和日期类型:DATE TIME DATETIME TIMESTAMP YEAR

作用:用于存储用户的注册时间,文章的发布时间,文章的更新时间,员工的入职时间等

image-20220920132630856

mysql> create table t8 (
  id1 timestamp NOT NULL default CURRENT_TIMESTAMP,
  id2  datetime default NULL
);
​
        timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。
                
mysql> insert into t8(id1) values('20180109000000');        
mysql> select * from t8;
+---------------------+------+
| id1                 | d2   |
+---------------------+------+
| 2018-01-09 00:00:00 | NULL |
+---------------------+------+
1 row in set (0.00 sec)
​
扩展: 
select now();查看当前时间

库操作

系统数据库 information_schema:

虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等

performance_schema:

主要存储数据库服务器的性能参数

mysql:

授权库,主要存储系统用户的权限信息

sys:

主要存储数据库服务器的性能参数

创建数据库3种方法

1. # mysqladmin   -u root -p1  create  db1
2. 直接去创建数据库目录并且修改权限       # 不建议使用
3. mysql>  create database  wing;    #wing是数据库名称

数据库命名规则 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字

sql语句结尾

每条sql语句都要以;结尾,但是如果列比较多,想看的清楚一点,可以以\G结尾

查看数据库

mysql> show databases;
mysql> show create database wing;

查看当前所在库

mysql> select database();

切换数据库

mysql> use wing;
mysql> show tables;

删除数据库

mysql> drop database 数据库名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值