mysql
基础概念
1.一个表格一般包含一个主建
2.可有多个主见,叫组合主见
3.可以有foreign key 用于链接外部表格的主建
外键目的:
这个约束的目的是确保当前表中的外键列(JNO列)的值必须存在于另一个表('J’表)的主键列(JNO列)中。换句话说,它建立了两个表之间的关联关系,以维护数据的一致性和完整性。
建立外键:
1。先建立表格 完成数据搭建
2.关联数据
ALTER TABLE ‘employee’ #选表
ADD FOREIGN KEY (‘sup_id’) #添加外键到sup_id上
REFERENCES ‘branch’ (‘JNO’) #关联branch表内的JNO
ON DELETE SET NULL;
(3.在建立表格期间也可关联
FOREIGN KEY(‘manage_id’) REFERENCES ‘employee’(‘emp_id’) #吧manage_id对应到emp_id
ON DELETE SET NULL;#删除父表记录emp_id时将外键manage_id设置为 NULL:不然要是2个表互为外键,就谁都加不了了,如果这个外键还是自己的主见,就不能设置为NULL
ON DELETE SET CASCADE;#emp_id 删除后,将这一行删掉
#建立外键manage_id 关联employee表的emp_id
主键
CREATE TABLE test (
column1 INT,
column2 INT,
column3 VARCHAR(50),
PRIMARY KEY (column1, column2),#主键
FOREIGN KEY (column3) REFERENCES other_table(other_column)#外部
);
嵌套擦寻
SELECT JNO #选择需要返回的列
FROM SPJ
WHERE PNO = ‘P3’ #选择p3
GROUP BY JNO #查询INO
HAVING AVG(QTY) > ( #平均值
SELECT AVG(QTY) #选择平均值
FROM SPJ #在SPJ中
WHERE JNO = ‘J1’ AND PNO = ‘P3’ #平均值大于J1
);
举例 表SPJ
子查询
SELECT ‘NAME’
FROM ‘EMPLOYEE’
WHERE ‘EMP_ID’ = (SELECT ‘MANIG_ID’
FROM ‘BRANCH’
WHERE ‘BRANCH_NAME’=‘YANFA’😉;
SELECT ‘NAME’
FROM ‘EMPLOYEE’
WHERE ‘EMP_ID’ in (SELECT ‘MANIG_ID’
FROM ‘BRANCH’
WHERE ‘BRANCH_NAME’ != ‘YANFA’😉;
python对接
data = mysql_operate.db.select_db(table_name,dic = {})
#查询所有
由于key是关键字,在使用时要加``让其变成列名称
dic = {'`key`':recivedata['`key`']}
data = mysql_operate.db.select_db(table_name,dic)#查询
不知道为啥,时间读取后直接导入sql不太对,要按照下面修改
recivedata['时间']= datetime.strptime(recivedata['时间'], '%a, %d %b %Y %H:%M:%S %Z')#不知道为啥,时间读取后不太对
修改数据
mysql_operate.db.update_db(table_name, dic ,recivedata)