MySQL学习笔记 数据类型与操作数据表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习笔记 数据类型与操作数据表相关的知识,希望对你有一定的参考价值。
1.数据类型
【1】整型:
数据类型 | 存储范围 | 字节 | |
TINYINT | 有符号型:-128~127(-2^7~2^7 -1),无符号型0~255(0~2^8 -1) | 1 | |
SMALLINT | 有符号型:-2^15~2^15 -1,无符号型0~2^16 -1 | 2 | |
MEDIUMINT | 有符号型:-2^23~2^23 -1,无符号型0~2^24 -1 | 3 | |
INT | 有符号型:-2^31~2^31 -1,无符号型0~2^32 -1 | 4 | |
BIGINT | 有符号型:-2^63~2^63 -1,无符号型0~2^64 -1 | 8 | |
【2】浮点型
数据类型 | 存储范围 | 字节 | |
FLOAT[(M,D)] | -3.402823466E+38~-1.175494351E-38、0和 1.175494351E-38 ~3.402823466E+38 | 4 | |
DOUBLE[(M,D)] | 2.2250738585072014E-308~ 1.7976931348623157E+308 | 8 | |
【注】M是数字总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保值。单精度浮点数值精确到大约7位小数位。E+38 表示10^38
【3】日期时间型
列类型 | 字节 | 存储范围 | |
YEAR | 1 | YEAR[(2|4)] 缺省为4位格式,4位格式取值范围为1901 - 2155, | |
TIME | 3 | -838:59:59~838:59:59 | |
DATE | 3 | 1000-1-1~9999-12-31 | |
DATETIME | 8 | 日期时间, 1000-1-1 00:00:00~9999-12-31 23:59:59 | |
TIMESTAMP | 4 | 时间戳,1970-1-1 00:00~2037年的某个时刻 | |
【注】实际开发中“日期时间型”用得比较少,因为考虑到跨时区的问题,一般会用数字类型取代
mysql本身Y2K安全的,但是呈交给MySQL的输入值可能不是。一个包含2位年份值的任何输入是由二义性的,因为世纪是未知的。这样的值必须被解释成4位形式,因为MySQL内部使用4位存储年份。
对于DATETIME, DATE, TIMESTAMP和YEAR类型,MySQL使用下列规则的解释二义性的年份值:
-在范围00-69的年值被变换到2000-2069。
-在范围70-99的年值被变换到1970-1999。
记得这些规则仅仅提供对于你数据的含义的合理猜测。如果MySQL使用的启发规则不产生正确的值,你应该提供无二义的包含4位年值的输入。
列类型 | 存储需求 | |
CHAR(M) | (定长,不足用空格自动补全)M个字节,0<=M<=255 | |
VARCHAR(M) | (变长,输入多少就是多少)L+1个字节,其中L<=M,0<=M<=65535 | |
TINYTEXT | L+1个字节,其中L<2^8 (1个字节表示最大存储范围,下同) | |
TEXT | L+2个字节,其中L<2^16 | |
MEDIUMTEXT | L+3个字节,其中L<2^24 | |
LONGTEXT | L+4个字节,其中L<2^32 | |
ENUM(‘value1‘,‘value2‘,…) | (最终选择其中的一个value)1或2个字节,取决于枚举值的个数(最多65535个) | |
SET (‘value1‘,‘value2‘,…) | (集合,可在其中做任意的排列组合)1、2、3、4或者8个字节,取决于set成员的 | |
CHAR(M) :定长类型,定义数据为5个字节,当需要存储abc3个字节的时候,会以2个空格的形式补满5个字节。
VARCHAR(M) :变长类型,输入abc3个字节就存储3个字节,不会存储多余的数据。
2.数据表操作
【1】概述
【2】命令
mysql> USE <数据库名称>;
mysql> SELETE DATABASES;
CREATE TABLE [IF NOT EXISTS] table_name (column_name列名称 data_type数据类型,....) 例:创建数据库表:列名称为username和age和salary mysql> USE t1; mysql> CREATE TABLE IF NOT EXISTS t1( -> username VARCHAR(20), -> age TINYINT UNSIGNED, -> salary FLOAT(8,2) UNSIGNED -> );
mysql> SHOW TABLES;
mysql> SHOW TABLES FROM mysql;
mysql> SHOW TABLES FROM mysql;
3.MySQL记录的插入与查找
记录插入:
INSERT [INTO] tbl_name [(col_name,...0] VALUES (val,...)
mysql> INSERT t1 VALUES(‘Tom‘,25,7863.25);
记录查找:
SELECT expr,... FROM tbl_name
例:
SELECT * FROM t1;
4.MySQL空值与非空
例:
mysql> USE t2; mysql> CREATE TABLE IF NOT EXISTS tb2( -> username VARCHAR(20) NOT NULL, -> age TINYINT UNSIGNED NULL, -> salary FLOAT(8,2) UNSIGNED -> );
5.MySQL主键约束
*** 主键约束
*** 每张数据表只能存在一个主键
*** 主键保证记录的唯一性
*** 主键自动为NOT NULL
6.MySQL自动编号 AUTO_INCREMENT
例,创建自动编号表:
mysql> CREATE TABLE tb3( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(30) NOT NULL -> ); mysql> SHOW COLUMNS FROM tb3; +----------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+----------------+ | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(30) | NO | | NULL | | +----------+----------------------+------+-----+---------+----------------+
例,插入记录,查看表:
mysql> INSERT tb3(username) VALUES(‘Tom‘) mysql> INSERT tb3(username) VALUES(‘John‘) mysql> INSERT tb3(username) VALUES(‘Rose‘) mysql> INSERT tb3(username) VALUES(‘Dimitar‘) mysql> SELECT * FROM tb3; +----+----------+ | id | username | +----+----------+ | 1 | Tom | | 2 | John | | 3 | Rose | | 4 | Dimitar | +----+----------+
7.MySQL唯一约束 UNIQUE KEY
例:
创建数据表tb4:
mysql> CREATE TABLE tb4( -> id SMALLINT AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(20) NOT NULL UNIQUE KEY, -> age TINYINT UNSIGNED -> ); mysql> SHOW COLUMNS FROM tb4; +----------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------------+------+-----+---------+----------------+ | id | smallint(6) | NO | PRI | NULL | auto_increment | | username | varchar(20) | NO | UNI | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | +----------+---------------------+------+-----+---------+----------------+
插入记录:
mysql> INSERT tb4(username,age) VALUES(‘Tom‘,25); Query OK, 1 row affected (0.00 sec)
mysql> INSERT tb4(username,age) VALUES(‘Tom‘,23); ERROR 1062 (23000): Duplicate entry ‘Tom‘ for key ‘username‘
8.MySQL默认约束
例:
mysql> CREATE TABLE tb6( -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, -> username VARCHAR(20) NOT NULL UNIQUE KEY, -> sex ENUM(‘1‘,‘2‘,‘3‘) DEFAULT ‘3‘ -> ); mysql> SHOW COLUMNS FROM tb6; +----------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+----------------+ | id | smallint(5) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(20) | NO | UNI | NULL | | | sex | enum(‘1‘,‘2‘,‘3‘) | YES | | 3 | | +----------+----------------------+------+-----+---------+----------------+
mysql> INSERT tb6(username) VALUES(‘Tom‘); mysql> INSERT tb6(username) VALUES(‘John‘); mysql> INSERT tb6(username) VALUES(‘Mimiter‘);
mysql> SELECT * FROM tb6; +----+----------+------+ | id | username | sex | +----+----------+------+ | 1 | Tom | 3 | | 2 | John | 3 | | 3 | Mimiter | 3 | +----+----------+------+
本文出自 “Kurol.Blog” 博客,请务必保留此出处http://kurol.blog.51cto.com/11433546/1876234
以上是关于MySQL学习笔记 数据类型与操作数据表的主要内容,如果未能解决你的问题,请参考以下文章