——Sept. 28th, 2015 Mon.15:30 PM
一、数据类型
(1) 整型
TINYINT 1字节 //TINYINT UNSIGNED
SMALLINT 2字节
MEDIUMINT 3字节
INT 4字节
BIGINT 8字节
(2)浮点型
FLOAT[(M, D)]
DOUBLE[(M, D)]
M是数字总位数,D是小数点后面的位数,如果M和D省略,根据硬件允许的限制来保存值,单精度浮点数精确到大约7位小数位。一般使用FLOAT就可以。
(3)日期时间型
YEAR 1 范围:70-69(1970-2069之间的日期)
TIME 3 838-5959
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:00-2037...
在开发过程,日期时间一般不用,因为要考虑到跨时区,而是采用数字类型。
(4)字符型
CHAR(M) M个字节,0<=M<=255,定长类型
VARCHAR(M) L+1个字节,L<=M且0<=M<=65535,变长类型
TINYTEXT L+1个字节,L<2的8次方(256)
TEXT L+2个字节,L<2的16次方
MEDIUMTEXT L+3个字节,L<2的24次方
LONGTEXT L+4个字节,L<2的32次方
ENUM(‘value1‘, ‘value2‘, ...) 1或2个字节,取决于枚举值的个数,最多65,535个值
SET(‘value1‘, ‘value2‘, ...) 1,2,3,4或8个字节,取决于set成员的数目(最多 64个成员)(集合)
二、数据表操作
数据表 即表是数据库最重要的组成部分之一,是其他对象的基础。
(1)打开数据库
USE database_name
(2)创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(
column _name data_type,
...
);
如:> CREATE TABLE t1(
> username VARCHAR(20),
> age TINYINT UNSIGNED,
> salary FLOAT(8, 2) UNSIGNED
> );
字段名 - 类型 - 约束
删除数据表:DROP TABLE table_name;
(3)查询数据表列表
SHOW TABLES [FROM db_name] [LIKE ‘pattern‘ | WHERE expr]
查询整个mysql的表:SHOW TABLES FROM mysql;当前数据库是不会变化的。
(4)查看数据表结构
SHOW COLUMNS FROM tbl_name 对表处理
(5)记录的插入与查找
行:记录
插入记录:INSERT [INTO] tbl_name [(col_name, ...)] VALUES(val, ...) //可以为指定的col_name字段赋值,也可以省略不写,但此时必须为所有的字段赋值
> INSERT tb1 VALUES(‘Tom‘, 25, 9998.78);
> INSERT tb1(username, salary) VALUES(‘John‘, 5000.00)
查找记录:SELECT expr, ... FROM tbl_name //expr表达式
如:SELECT * FROM tb1; //* 表示字段的过滤,而非记录的过滤
三、约束
约束保证数据的完整性和一致性。
分类:表级约束、列级约束
这是根据约束字段的数目来分类:如果只针对某一个字段约束,则称之为列级约束;
如果针对多个字段约束,则称之为表级约束。
列级约束既可以在列定义时声明,也可以在定义之后声明。表级约束只能在列定义之后声明。
NOT NULL、DEFAULT只能存在于列级约束,其他的可以都存在与两者。
类型: 非空约束 ( NOT NULL )
主键约束 ( PRIMARY KEY )
唯一约束 ( UNIQUE KEY )
默认约束 ( DEFAULT )
外键约束 ( FOREIGN KEY )
check约束
(1)非空与空值
NULL 字段值可以为空
NOT NULL 字段值禁止为空(比如在填表时有些项是必填的)
> CREATE TABLE tb2(
> username VARCHAR(20) NOT NULL,
> age TINYINT UNSIGNED NULL
> );
可以查看SHOW COLUMNS FROM tb2;
(2)自动编号
AUTO_INCREMENT 自动编号必须与主键结合使用。可以保证记录的唯一性。
默认情况下,起始值为1,每次的增量为1。
应该为整型,如果为浮点型,那么小数点后必须为0
如:
> CREATE TABLE tb3(
> id SMALLINT UNSIGNED AUTO_INCREMENT,
> username VARCHAR(30) NOT NULL
> );
ERROR 1075 (42000) : Incorrect table definition; there can be only one auto column and it must be defined as a key.
(3)主键约束
PRIMARY KEY 主键用来保证记录的唯一性,每张表只能存在一个主键,且自动为NOT NULL.
> CREATE TABLE tb4(
> id SMALLINT UNSIGNED AUTO_INCREMENTPRIMARY KEY,
> username VARCHAR(30) NOT NULL
> );
可以查看SHOW COLUMNS FROM tb4;
(4)唯一约束
UNIQUE KEY 唯一约束可以保证记录的唯一性,它的字段可以为空(NULL),每张数据表可以存在多个唯一约束。
如创建既有主键约束又有唯一约束的数据表:
> CREATE TABLE tb5(
> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
> username VARCHAR(20) NOT NULL UNIQUE KEY,
> age TINYINT UNSIGNED
> );
可以查看SHOW COLUMNS FROM tb5;
(5)默认约束
DEFAULT 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
> CREATE TABLE tb6(
> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
> username VARCHAR(20) NOT NULL UNIQUE KEY,
> sex ENUM(‘1‘, ‘2‘, ‘3‘) DEFAULT ‘3‘
> );