MySQL中常用SQL语句的编写(3)

创建tag表:

CREATE TABLE IF NOT EXISTS `tag`( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '标签ID', `name` VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签名称', PRIMARY KEY ( `id` ) ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=DYNAMIC ;

查看tag表结构:

mysql> desc tag; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(100) | YES | | NULL | | +-------+--------------+------+-----+---------+----------------+

创建article_tag表:

CREATE TABLE IF NOT EXISTS `article_tag`( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '文章标签关联表ID', `article_id` INT(11) NOT NULL COMMENT '文章ID', `tag_id` INT(11) NOT NULL COMMENT '标签ID', PRIMARY KEY ( `id` ), FOREIGN KEY (`article_id`) REFERENCES `article` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (`tag_id`) REFERENCES `tag` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, UNIQUE INDEX `article_tag_unique` (`article_id`, `tag_id`) USING BTREE , INDEX `article_id` (`article_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci ROW_FORMAT=DYNAMIC ;

查看article_tag表结构:

mysql> desc article_tag; +------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | article_id | int(11) | NO | MUL | NULL | | | tag_id | int(11) | NO | MUL | NULL | | +------------+---------+------+-----+---------+----------------+

语句解析:
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎, CHARACTER SET设置编码。
INDEX设置该字段为索引,UNIQUE INDEX设置字段值唯一,并且设置该字段为索引。
COMMENT给该字段添加注释。

ROW_FORMAT=DYNAMIC,设置表为动态表(在mysql中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。 若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是说每条记录所占用的字节是动态的。其优点节省空间,缺点增加读取的时间开销。所以,做搜索查询量大的表一般都以空间来换取时间,设计成静态表)。

数据表解析:
author是作者表,有4个字段:id, name, qq, phone
article是文章表,文章和作者是多对一的关系,这里使用外键方式关联。字段author_id关联的是author的id字段。
tag是标签表,有2个字段:id, name
文章和标签是多对多的关系(ManyToMany),这里使用第三张表article_tag把它们关联起来。字段article_id外键关联的是article的id字段,字段tag_id外键关联的是tag的id字段。

2. 删除数据表

DROP TABLE IF EXISTS article_tag;

3. 插入数据
MySQL 表中使用 INSERT INTO SQL语句来插入数据。
你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。

语法
以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );

如果数据是字符型,必须使用单引号或者双引号,如:"value"。

author表插入几条数据:

INSERT INTO author(name, qq, phone) VALUES('君惜', 123456, 18500178899), ('糖糖', 234567, 13256987582), ('琳琳', 345678, 15636589521);

查看author表:

mysql> SELECT * FROM author; +----+------+--------+-------------+ | id | name | qq | phone | +----+------+--------+-------------+ | 1 | 君惜 | 123456 | 18500178899 | | 2 | 糖糖 | 234567 | 13256987582 | | 3 | 琳琳 | 345678 | 15636589521 | +----+------+--------+-------------+

article表插入几条数据:

INSERT INTO article(title, content, author_id) VALUES('流畅的Python', 'Python各种拽', 1), ('嘻哈', '中国有嘻哈', 2), ('严肃', '你这辈子就是吃了太严肃的亏', 3);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ceab30ba7232b5b1286383285c58cd83.html