日期和时间类型
类型名称 日期格式 日期范围 存储需求YEAR YYYY 1901 ~ 2155 1 个字节
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3 个字节
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3 个字节
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8 个字节
TIMESTAMP YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 个字节
字符串类型
类型名称 说明 存储需求CHAR(M) 固定长度非二进制字符串 M 字节,1<=M<=255
VARCHAR(M) 变长非二进制字符串 L+1字节,在此,L< = M和 1<=M<=255
TINYTEXT 非常小的非二进制字符串 L+1字节,在此,L<2^8
TEXT 小的非二进制字符串 L+2字节,在此,L<2^16
MEDIUMTEXT 中等大小的非二进制字符串 L+3字节,在此,L<2^24
LONGTEXT 大的非二进制字符串 L+4字节,在此,L<2^32
ENUM 枚举类型,只能有一个枚举字符串值 1或2个字节,取决于枚举值的数目 (最大值为65535)
SET 一个设置,字符串对象可以有零个或 多个SET成员 1、2、3、4或8个字节,取决于集合 成员的数量(最多64个成员)
二进制类型
类型名称 说明 存储需求BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32
CREATE TABLE `customers` ( `cust_id` int(11) NOT NULL AUTO_INCREMENT, `cust_name` char(50) NOT NULL, `cust_address` char(50) DEFAULT NULL, `cust_city` char(50) DEFAULT NULL, `cust_state` char(5) DEFAULT NULL, `cust_zip` char(10) DEFAULT NULL, `cust_country` char(50) DEFAULT NULL, `cust_contact` char(50) DEFAULT NULL, `cust_email` char(255) DEFAULT NULL, PRIMARY KEY (`cust_id`) ) ENGINE=InnoDB AUTO_INCREMENT=10011 DEFAULT CHARSET=utf8 17.2引擎类型 表级锁 : 只要有一个线程执行修改表中的相关操作,就会上锁,其他线程默认等待; 行级锁 : 针对于当前表中的这条记录,这一行进行上锁,其他数据仍然可以被其他线程修改,实现高并发,高可用; 事务处理: 执行sql语句时,必须所有的操作全部成功,才最终提交数据,有一条失败,直接回滚,恢复到先前状态 begin : 开启事务 commit : 提交数据 rollback : 回滚数据 MyISAM: 表级锁,全文索引 InnoDB: 事务处理,行级锁,外键 MEMORY: 同MyISAM,唯一不同的是把数据放在内存中,临时缓存; BLACKHOLE: anything you write to it disappears 一般用于同步主从数据库;(放在主数据库和从数据库之间的一台服务器;) 17.3操纵表 -- modify 只能改变数据类型 alter table 表名 modify 列名 新数据类型; -- change 改变列名+数据类型 alter table 表名 change 列名 新列名 数据类型; -- add 添加列 alter table 表名 add 列名 数据类型; -- drop 删除字段 alter table 表名 drop 列名; -- rename 更改表明 alter table 表名 rename 新表名; -- 删表 drop table 表名; 18.0使用视图
视图用create view语句来创建
CREATE VIEW productcustomers AS SELECT cust_name, cust_contact, prod_id FROM customers, orders, orderitems WHERE customers.cust_id = orders.cust_id AND orderitems.order_num = orders.order_num; select cust_name, cust_contact from productcustomers where prod_id = 'TNT2';使用 show create view 视图名称; 来查看创建视图的语句
show create view productcustomers\G;用drop view 视图名称; 来删除视图
drop view productcustomers\G;