您的位置:首页 > 数据库 > MySQL

MySQL---数据类型和表的基本操作

2017-07-01 10:12 387 查看

数据类型

整型

TINYINT 1个字节

SMALLINT 2个字节

MEDIUMINT 3个字节

INT 4个字节

BIGINT 8个字节

可以用UNSIGNED表示无符号整形

浮点型

FLOAT[(M,D)] M总共位数,D小数位数,精度时小数点后7位

DOUBLE[(M,D)] M总共位数,D小数位数

类型
大小
范围(有符号)
范围(无符号)UNSIGNED
用途
TINYINT
1 字节
(-128,127)
(0,255)
小整数值
SMALLINT
2 字节
(-32 768,32 767)
(0,65 535)
大整数值
MEDIUMINT
3 字节
(-8 388 608,8 388 607)
(0,16 777 215)
大整数值
INT或INTEGER
4 字节
(-2 147 483 648,2 147 483 647)
(0,4 294 967 295)
大整数值
BIGINT
8 字节
(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)
(0,18 446 744 073 709 551 615)
极大整数值
FLOAT(M,D)
4 字节
(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)
0,(1.175 494 351 E-38,3.402 823 466 E+38)
单精度
浮点数值
M表示总位数,D表示小数位数
DOUBLE(M,D)
8 字节
(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
双精度
浮点数值
M表示总位数,D表示小数位数
DECIMAL
对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2
依赖于M和D的值
依赖于M和D的值
小数值

日期

类型大小(字节)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3‘-838:59:59’ ~ ‘838:59:59’HH: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:00 ~ 2037 年某时YYYYMMDD HHMMSS混合日期和时间值,时间戳

字符型

CHAR(M) : M个字节(0~255)定长

VARCHAR(M) : 变长(0~65535)

TINYTEXT : 1个字节(0~255)

TEXT : 2个字节

MEDIUMTEXT : 3个字节

LONGTEXT : 4个字节

ENUM(‘value1’,’value2’) : 枚举值(最多65535个)

SET(‘value1’,’value2’) : 集合,最多64个成员

创建表

USE 使用/打开数据库

SELECT DATABASE() 显示当前打开的数据库

*CREATE TABLE [IF NOT EXISTS] table_name(

column_name data_type,



)*

mysql> CREATE TABLE tb1(
-> username VARCHAR(20),
-> age TINYINT UNSIGNED,
-> salary FLOAT(8,2) UNSIGNED
-> );


查看表

SHOW TABLES [FROM db_name] [LIKE ‘pattern’ | WHERE expr]

可以查看其他数据库的表,当前数据库不会改变

查看表结构

SHOW COLUMNS FROM tbl_name

DESCRIBE

插入记录

INSERT [INTO] tbl_name [(col_name,…)]VALUES(val,…)

如果省略col_name则必须插入所有字段

mysql> INSERT INTO tb1 VALUES('TOM',20,5000.00);
Query OK, 1 row affected (0.34 sec)


mysql> INSERT tb1 (username,age) VALUES('jhon',25);
Query OK, 1 row affected (0.09 sec)


查询

SELECT expr,… FROM tbl_name

mysql> SELECT * FROM tb1;
+----------+------+---------+
| username | age  | salary  |
+----------+------+---------+
| TOM      |   20 | 5000.00 |
| jhon     |   25 |    NULL |
+----------+------+---------+
2 rows in set (0.00 sec)


约束

AUTO_INCREMENT 自增

[PRIMARY] KEY 主键 自动禁止为null

UNIQUE KEY 唯一性,可以存空值

DEFAULT 默认值

NULL/NOT NULL 是否允许空值

自动增加

AUTO_INCREMENT 起始值为1递增量为1 ,该字段必须是主键

可以自己指定自增主键的值,如果不指定,则在最大的序号上自增

mysql> CREATE TABLE tb2(
-> id INT(5) PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20)
-> );
Query OK, 0 rows affected (0.37 sec)


UNIQUE KEY

唯一性约束:

mysql> CREATE TABLE tb3(
-> id INT(5) KEY AUTO_INCREMENT,
-> username VARCHAR(20) UNIQUE KEY ,
-> age INT(5)
-> );

mysql> SHOW COLUMNS FROM tb3;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(5)      | NO   | PRI | NULL    | auto_increment |
| username | varchar(20) | YES  | UNI | NULL    |                |
| age      | int(5)      | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+


DEFAULT 默认

mysql> CREATE TABLE tb4(
-> id INT(5) PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20) UNIQUE KEY,
-> sex ENUM('MEN','WOMEN','NONE') DEFAULT 'MEN'
-> );
Query OK, 0 rows affected (0.26 sec)

mysql> DESCRIBE tb4;
+----------+----------------------------+------+-----+---------+----------------+
| Field    | Type                       | Null | Key | Default | Extra          |
+----------+----------------------------+------+-----+---------+----------------+
| id       | int(5)                     | NO   | PRI | NULL    | auto_increment |
| username | varchar(20)                | YES  | UNI | NULL    |                |
| sex      | enum('MEN','WOMEN','NONE') | YES  |     | MEN     |                |
+----------+----------------------------+------+-----+---------+----------------+

mysql> INSERT INTO tb4 (username) VALUES('TOM');
Query OK, 1 row affected (0.07 sec)

mysql> select * from tb4;
+----+----------+------+
| id | username | sex  |
+----+----------+------+
|  1 | TOM      | MEN  |
+----+----------+------+
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL 数据类型