⑵串类型
串类型包括很多种,下面只列举几种(CHAR 、VARCHAR、ENUM、SET):
CHAR:可在后面用圆括号指定存储的长度,范围为0-255个字符。并且是定长类型,即当某一字符长度不满足其指定的长度时,会默认用空格补全。
VARCHAR:可在后面用圆括号指定存储的长度,范围为0-65535个字节,在不允许非空字段的时候,最大可以到65533,允许的时候只能到65532.
ENUM:后面跟圆括号指定ENUM集,例如ENUM(‘张三’,‘李四’,‘王五’)。ENUM是一个字符串对象。ENUM内可以NULL或者NOT NULL,当ENUM允许NULL时,NULL也作为该列的一个有效值,且为默认值。如果为NOT NULL,那么默认值为第一个元素(例如上例的张三)。
SET:这个举例说明,例如声明为SET('one','two')的列,其值可以为'','one','two','one,two'四个值中的任何一个。
⑶日期时间
这里等到具体使用的时候再补充。
二 数据库的相关操作
创建数据库:CREATE DATABASE 名字;
查看数据库:SHOW DATABASES;
删除数据库:DROP DATABASE 名字;
进入数据库:USE 名字;
查看数据库有关信息:SHOW DATABASE 名字 ;
修改编码:Alter database t2 CHARACTER SET=utf8;
进入数据库后查看当前数据库信息:SELECT DATABASE();
三 表的有关操作
查看数据库已有的表:SHOW TABLES;
建表:CREATE TABLE 名字(列名称 数据类型,列名称 数据类型,·····);
查看一张表的字段属性:SHOW COLUMNS FROM 表名;或者DESC 表名;
插入一条记录:INSERT INTO 表名 (列名称,列名称,·····)VALUES(属性值,属性值,····);
删除一条记录:DROP FROM 表名//以后再补充。
更新一条记录:以后再补充。
四 五种约束
⑴主键约束
主键约束用来唯一标识每一行,主键可以用来查询、修改、删除数据等,不能为NULL,每一条记录的主键必须唯一。每个表只能有一个主键。
创建主键约束:CREATE TABLE 表名(列名称 数据类型 PRIMARY KEY,列名称 数据类型);这样,该表的第一个属性就被指定为主键,须满足主键约束条件。
⑵唯一约束
唯一约束用于保证该列的所有值都不相同,可以为NULL,每个表可以有多个列为UNIQUE,唯一约束是用来保证记录的唯一性。
创建唯一约束:CREATE TABLE 表名 (列名称 数据类型 UNIQUE KEY,列名称 数据类型 UNIQUE KEY,····);
⑶默认约束
默认约束用于在插入一条记录时,如果不指定该属性的值,会采用默认约束的值来给这条记录的这个属性赋值。
创建默认约束:CREATE TABLE 表名(username VARCHAR(20) DEFAULT '张三',·····);这样,当插入一条记录而又没有指定名字的时候,会默认会将其名字赋值为张三进行存储。
⑷外键约束
外键是用来实现数据关系完整性的KEY,
当表Super的主键是表sub的一个字段时,这个字段就成为Subr的一个外键,其中,Super成为父表,即有外键的表称为子表。即一个表的外键是另一个表的主键。
一些规则:
①插入非空值时,如果主键表中没有这个值,那么不能插入。
②更新外键时,不能更新为主键表中不存在的值。
③删除或更改主键时,可以选择在建立外键时级联删除/更改还是拒绝删除/更改。
创建的语法:CREATE TABLE 表名(列名 数据类型,id TINYINT ,····,FOREIGN KEY REFERENCE 表名(表的主键));注意:我们要在构建好我们各字段之后,再在最后指定外键。
⑸检查约束
检查约束是约束能够插入的数据需要满足一定的条件,如数值需要满足在一定的范围内等等。不过目前就我掌握以及搜索的情况来看,mysql中不存在检查约束,如果需要检查约束,需要在添加数据时用正则表达式进行匹配检查。
关于约束的几个操作以及注意事项:
①根据操作列数的多少,约束分为表级约束和列级约束。当主键约束由多个字段构成的时候,此时主键约束就属于表级约束。表级约束一般有主键约束、外键约束、唯一约束。
列级约束一般有非空约束和默认约束等。
②在创建约束的时候,我们可以在指定列字段的同时给该列指定约束,也可以在所有字段创建完成之后再在最后指定约束。见下列语句:
DROP TABLE IF EXISTS `team`;
CREATE TABLE `team` (
`team_id` int(11) NOT NULL AUTO_INCREMENT,
`course_id` int(11) NOT NULL,
`team_leader` int(11) DEFAULT NULL,
`c_teamid` int(11) NOT NULL,
`count` int(11) DEFAULT '0',
`total_time` int(11) DEFAULT '0',
`numcount` int(11) DEFAULT NULL,
PRIMARY KEY (`team_id`),
KEY `fk_course_id_te` (`course_id`),
KEY `fk_teamleader_te` (`team_leader`),
CONSTRAINT `fk_course_id_te` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`),
CONSTRAINT `fk_teamleader_te` FOREIGN KEY (`team_leader`) REFERENCES `user` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
上述语句就属于创建字段之后再指定约束的情况。注意指定语句如何书写。
③对表的操作:
添加一列或者多列:ALTER TABLE 表名 ADD 列名1 属性1,ADD 列名2 属性2,···;
删除一列或者多列同上:ALTER TABLE 表名 DROP 列名1,DROP 列名2,···;
添加主键约束:ALTER TABLE 表名 ADD CONSTANT 约束名字 PRIMARY KEY(列名1);其中约束名字可自定义,列名1为表内的满足主键约束的一个字段。
添加默认约束:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 值;
例如:ALTER TABLE provinces ALTER leader SET DEFAULT '诸葛';
上述语句添加了默认值为‘诸葛’;
添加外键约束:ALTER TABLE 表名 ADD CONSTANT 约束名字 FOREIGN KEY(列名1) REFERENCES 主表名(主表的主键的列名);
例如:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
在添加外键约束的时候,我们可以在后面追加 ON DELETE CASCADE 来达到删除主表的一条记录时,其在子表中对应的记录也级联删除。
也可以追加SET NULL 等命令,详情见mysql文档。
更改列的属性:
mysql> ALTER TABLE 表名
-> MODIFY 列名 BIGINT NOT NULL DEFAULT 100;
我们可以使用上述语句更改我们已有列的属性。例如非空约束的修改。
以上是第一阶段的总结。