码迷,mamicode.com
首页 > 数据库 > 详细

数据库之二数据类型、约束、表操作

时间:2015-09-28 16:03:23      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

——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‘
> );
 
 
 
 
 

数据库之二数据类型、约束、表操作

标签:

原文地址:http://www.cnblogs.com/shiddong/p/4844084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!