接前面数据库Mysq学习(03)
什么是DDL:
数据定义语言(DDL:Data Definition Language):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE);为表加入索引等。DDL 只操作数据库、表、视图、索引,但是不操作表中的数据
创建表:
语法:
create table 表名(
字段名1 字段类型 [约束1 约束2 ....],
字段名2 字段类型 [约束1 约束2 ....]
)
CREATE TABLE `course` (
`c_id` varchar(20) NOT NULL DEFAULT '',
`c_name` varchar(20) NOT NULL DEFAULT '',
`t_id` varchar(20) NOT NULL,
PRIMARY KEY (`c_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
字段类型
1:数字类型
1:区分有符号和无符号,如果有符号高位表示正数(0)和负数(1),如果无符号,那么高位是数字的一部分
2:正数型len(长度)无意义的,决定整数只有它的字节大小
3:可以用float和double去表示浮点数,但是float和double存在精度丢失
4:如果不能容忍精度丢失,强烈建议使用decimal数据类型
CREATE TABLE t_user (
id INT , age TINYINT , balance DECIMAL(4,2)
)
DECIMAL(m,n) m = 正数部分+小数部分 n:小数部分,如果小数部分超过n会自动四舍五入
2:字符类型
char:定长,例如char(5),如果数据没有超过5,会使用空格补,定长的缺点占用磁盘空间,优点是读取效率比较高
varchar:变长,例如varchar(5) ,如果数据只占用1个字符,不会使用空格补,变长的缺点读取效率比较低,优点是节省磁盘空间
text:大本文存储
1: TINYTEXT(255字符)
2:TEXT(65535字符)
3:MEDIUMTEXT(16M)
4:LONGTEXT(long最大值4G)
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件(文件、视频、音频、图片)等
1.TinyBlob 最大 255字节
2.Blob 最大 65K
3.MediumBlob 最大 16M
4.LongBlob 最大 4G
日期类型
datetime 与timestamp的区别
1:时间范围的区别
2:datetime 不会随着时区变化,但是timestamp随着时区自动变化
约束
1:主键约束
主键(primary key):唯一标记数据表中一行数据
主键约束:一旦一个字段被设置为主键,那么这个字段的值必须唯一而且不能为null
主键自增长 :当主键的字段类型为int类型时,可以设置主键自增
注意点:一张表中只能有一个主键,不允许多个主键 但是可以联合主键
2:唯一约束
唯一约束:一旦一个字段设置了唯一约束,那么这个字段的值必须唯一,可以为null
一张表可以给多个字段设置唯一约束
3:非空约束
非空约束,一旦表字段设置了非空约束,那么这个字段的值必须不能为null
4:默认值约束
默认值约束:一旦表字段设置了默认值,如果在插入的时候没有给值,那么会使用默认值
5:外键约束
外键(foreign key) 简称FK ,外键的值包含在另外一张表的主键中,设计外键的目的就是为了连表查询
外键约束:一旦一个外键设置了外键约束,那么
1:外键的值必须来源于另外一张表的主键,不能无中生有
2:删除主键表中的数据是,如果有外键引用了这条数据,那么这条数据不允许被删除
alter和drop了解即可 谨慎使用