建表 相关

来源:互联网 发布:重载 java 编辑:程序博客网 时间:2024/06/08 04:56

下面列举一些和建表相关的一些内容:

1、建表的基本结构,使用。

2、临时表的使用。

3、关于临时表作用的案例。



具体内容:

1、建表的基本结构,使用。

CREATE TABLE `method_info_wang` (# 设置列,列相关的约束 `apkVersion` varchar(50) NOT NULL,  `apkName` varchar(100) NOT NULL,  `packageName` varchar(150) NOT NULL,  `className` varchar(150) NOT NULL,  `methodName` varchar(150) NOT NULL,  `methodType` varchar(50) NOT NULL,  `parameter` varchar(255) NOT NULL,  `returnType` varchar(100) NOT NULL, #设置多个主键 PRIMARY KEY  (`apkVersion`,`apkName`,`packageName`,`className`,`methodName`,`methodType`,`parameter`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;# 建立一个对应关系表(反应两个表之间的对应关系)CREATE table  apk_package(apk_id BIGINT NOT NULL ,package_id BIGINT NOT NULL,PRIMARY KEY (apk_id,package_id),# 设置外键FOREIGN KEY(apk_id) REFERENCES apk_info_wang(apk_id),FOREIGN KEY(package_id) REFERENCES package_info_wang(package_id)); 

2、关于临时表的使用。

临时表的作用:

(1)抽取出用户关心的属性,形成新的临时表。

(2)可缩小原来的集合,从而降低了搜索的空间。

(3)及时消除,不对后续表造成影响。

    (注意其存活周期:临时表只在数据库连接时可见,当连接断开时,自动drop掉。)

#1、创建 apk _ package 临时表#注意:temporary CREATE TEMPORARY TABLE tmp_apk_package(apk_version VARCHAR(50) NOT NULL,apk_name VARCHAR(150) NOT NULL,package_name VARCHAR(100) NOT NULL);
3、临时表的使用案例。

图不是很对应,但思路相同:


###### package,class关系对应表的生成 #####CREATE TEMPORARY TABLE tmp_package_class (package_name VARCHAR(100) not NULL,class_name VARCHAR(100) NOT NULL);# 向临时表中插入数据# 通过 distinct去重,降低集合空间。 INSERT INTO tmp_package_class(package_name,class_name) (SELECT DISTINCT callerPackageName,callerClassName FROM call_info_wang);# package_class.package_id,package_class.class_id 为联合主键 --》故使用ignore.# 从三个表中获取数据,(因为有相互关联),使用 左外连接 LEFT JOIN .# 多表外连接 ---》 拼接LEFT JOIN . INSERT IGNORE INTO package_class(package_class.package_id,package_class.class_id)(SELECT package_id,class_id FROM tmp_package_class LEFT JOIN package_info_wang ON tmp_package_class.package_name = package_info_wang.packageName # 注意 :(1)LEFT JOIN 需要建立表关系外, (2)还需要设定连接条件LEFT JOIN class_info_wang ON tmp_package_class.class_name = class_info_wang.className);




0 0
原创粉丝点击