版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/74027710
数据类型
整型
- 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的值 | 小数值 |
日期
类型 | 大小(字节) | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59’ ~ ‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901 ~ 2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-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 |
+----+----------+------+