S2_第三章.第四章数据库

本文介绍了数据库设计中的三范式原则,确保数据表结构合理并避免数据冗余。此外,还详细讲解了SQL语言的基本操作,包括创建、查询、更新、删除等常见指令。

保证直接只属于一个主键

三范式:

保证原子性


消除部分依赖


消除传递依赖


主键和外键在多表中出现不算冗余



CREATE    DATABASE  数据库名    //创建数据库

DROP      DATABASE  数据库名   //删除数据库

可以改




停止服务和启动服务






连接到mysql服务器





CHARSET = "latin1";//不支持中文

COMMENT"xxxx" //注释

DESCRIBE myschool//显示表

show TABLE//表是否存在

DROP TABLE [表名 iF EXISTS] ;删除前if判断是否存在

PRIMARY KEY(字段,字段);//联合主键

DESCRIBE 表名 //查看表怎样定义

DESC 表名     //查看表怎样定义

use 表名  选中这个表

表增加删除修改  存储引擎用lnnoDB,查询用MylSAM

SHOW VARIABLES LIKE 'storage_engine%';//查看默认引擎

DEFAULT"XXXX"//默认值

DEFAULT-STORAGE-ENGINE=INNODB; //修改默认引擎

HELP //查询内容

HELP conntents 查看帮助文档目录列表

HELP Data Types;//可以选择一项查询 查看所支持的类型


UNIQUE KEY//唯一的不能重复

auto_increment//自动自增

.frm 表结构

EXISTS :

SELECT * FROM 表名 WHERE EXISTS(子查询)//查询效率更快

EXISTS//存在这个条件才执行

NOT EXISTS  //不存在这个条件才执行

SELECT * FROM IF EXISTS ____  //是否存在表


ALTER TABLE 旧表名 RENAME [TO] 新表名;//修改表名

ALTER TABLE 表名 ADD 字段名 数据类型 [属性];//添加字段   

ALTER TABLE 表名 ADD CONSTRAINT    ......添加约束

添加主键

例子: ALTER TABLE 表名 ADD CONSTRAINT  '主键名'  PRIMARY KEY 表名(studentNo,examDate,studentResult) 
 添加外键:

ALTER TABLE 表名 ADD CONSTRAINT  '外键名'  FOREIGN KEY (外键字段) REFERENCES 关联表名(关联字段)

ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];//修改字段

ALTER TABLE 表名 DROP 字段名 //删除字段

TRUNCATE TABLE 表名;//清空表    重置自增列表结构字段索引不变比DELETE

DELETE   TABLE 表名   //清空表

一次性插入多条数据:

INSERT INTO 表名 (name,password)
 VALUES
("王五","123456"),

("王五","123456");

把查询的结果插入新表:

CREATE TABLE 新表名 (SELECT name,password from 表名);

更新数据:

UPDATE 表名 SET 字段1=值1,字段2=值2...字段n=值n[WHERE 条件];

删除:

DELETE FROM 表名 [WHERE 条件];


指定行数记录:LIMIT分页的关键字

[LIMIT [起始行数,]显示条数]


SELECT  NOW();//获取当前系统时间


SELECT * FROM (SELECT * FROM 表名) 别名   //不写别名会报错


CREATE TEMPORARY TABLE 表名(
 
)
//建立一个临时表  只在当前查询有效

TIMESTAMP//需要设置某时间字段默认值为系统时间 当字段为插入数据默认为系统时间




SELECT * FROM xxx  WHERE (

SELECT * FROM sss WHERE(

//内查询可以写外查询的字段

)

)

查询索引:

SHOW INDEX FROM 表名

SELECT count(0) FROM ((SELECT t.data_name, t.waybill_type, t.count FROM (SELECT DATE_FORMAT(s1.ordercreate_time, '%Y-%m-%d') AS data_name, IFNULL(s2.waybill_type, 1) AS waybill_type, COUNT(DATE_FORMAT(s1.ordercreate_time, '%Y-%m-%d')) AS count FROM tb_ordercreate s1 LEFT JOIN tb_querywaybillinfo s2 ON s1.waybill_no = s2.waybill_no WHERE 1 = 1 AND s2.waybill_type IS NULL AND s1.project_id IN (464) AND s1.waybill_no IN (?, ?, ?, ?) GROUP BY DATE_FORMAT(s1.ordercreate_time, '%Y-%m-%d'), IFNULL(s2.waybill_type, 1)) t WHERE t.data_name IS NOT NULL) UNION ALL (SELECT DATE_FORMAT(biz_occur_time, '%Y-%m-%d') AS data_name, waybill_type, COUNT(DATE_FORMAT(biz_occur_time, '%Y-%m-%d')) AS count FROM (SELECT s2.biz_occur_time, s2.waybill_type, s2.waybill_no FROM tb_ordercreate s1 LEFT JOIN tb_querywaybillinfo s2 ON s1.waybill_no = s2.waybill_no WHERE 1 = 1 AND s2.waybill_type IS NOT NULL AND s2.waybill_no IS NOT NULL AND s2.biz_occur_time IS NOT NULL AND s1.project_id IN (464) AND waybill_no IN (?, ?, ?, ?) UNION SELECT s1.biz_occur_time, s1.waybill_type, s1.waybill_no FROM tb_ordercreate s2 RIGHT JOIN tb_querywaybillinfo s1 ON s1.waybill_no = s2.waybill_no WHERE 1 = 1 AND s1.waybill_type IS NOT NULL AND s1.waybill_no IS NOT NULL AND s1.biz_occur_time IS NOT NULL AND s1.project_id IN (464) AND waybill_no IN (?, ?, ?, ?)) s3 GROUP BY DATE_FORMAT(biz_occur_time, '%Y-%m-%d'), s3.waybill_type)) table_count ### Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'waybill_no' in where clause is ambiguous
最新发布
10-14
1. 更新呼叫中心数据 取呼叫中心系统数据 ip:192.168.3.1 端口:3306 id=lpsoft password=@Aa.1234 database=OrderManage 表为 T_Customer 以T_Customer的phone字段为索引,匹配SAP数据,匹配的数据都是192.168.0.229这个ip的SINO_SAP这个库里的表 SQL账号:SAPReader 密码:Sino2025zyq 匹配SAP数据为: SELECT CAST(111100000048210 + ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS bigint) AS Id, CAST(LOWER(NEWID()) AS varchar(50)) AS GUID , CAST('ipcc.org' AS varchar(50)) AS Domain, CAST( CASE WHEN ZY_TB_CustomerProfile.[客户类型] = 'VIP' THEN '703192237850693' ELSE '703192237846597' END AS varchar(20)) AS CustomerTypeCode, CAST('' AS text) AS Remark, CAST(ZY_TB_CustomerPhone.CardCode AS varchar(50)) AS S6, CAST(ZY_TB_CustomerPhone.Cardname AS varchar(100)) AS CompanyName, CAST(ZY_TB_CustomerPhone.Name AS varchar(50)) AS Name, CAST(LEFT(ZY_TB_CustomerPhone.Telephone, 15) AS varchar(15)) AS Phone, CAST(FORMAT(ZY_TB_CustomerProfile.近一年总毛利, '0.00') AS varchar(50)) AS S4, CAST(FORMAT(ZY_TB_CustomerProfile.预收款金额, '0.00') AS varchar(50)) AS S2, CAST(FORMAT(ZY_TB_CustomerProfile.应收款, '0.00') AS varchar(50)) AS S1, CAST(FORMAT(ZY_TB_CustomerProfile.全部库存金额, '0.00') AS varchar(50)) AS S3, CAST(ZY_TB_CustomerProfile.等级名称 AS varchar(50)) AS S5 FROM ZY_TB_CustomerPhone LEFT JOIN ZY_TB_CustomerProfile ON ZY_TB_CustomerPhone.CardCode = ZY_TB_CustomerProfile.[客户编号] WHERE ZY_TB_CustomerPhone.CardCode IS NOT NULL AND ZY_TB_CustomerPhone.Cardname IS NOT NULL and ZY_TB_CustomerPhone.Telephone not like '8441%'; 对T_Customer的字段更新: CompanyName、S6、CustomerTypeCode、S5、S1、S2、S3、S4 把SAP最新数据写入呼叫中心 2. 追加呼叫中心数据 对比T_Customer的phone和 SAP数据的phone, 将SAP有,T_Custome没有的数据整理出来,新增到T_Custome中,需要新增的字段就是: SELECT CAST(111100000048210 + ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS bigint) AS Id, CAST(LOWER(NEWID()) AS varchar(50)) AS GUID , CAST('ipcc.org' AS varchar(50)) AS Domain, CAST( CASE WHEN ZY_TB_CustomerProfile.[客户类型] = 'VIP' THEN '703192237850693' ELSE '703192237846597' END AS varchar(20)) AS CustomerTypeCode, CAST('' AS text) AS Remark, CAST(ZY_TB_CustomerPhone.CardCode AS varchar(50)) AS S6, CAST(ZY_TB_CustomerPhone.Cardname AS varchar(100)) AS CompanyName, CAST(ZY_TB_CustomerPhone.Name AS varchar(50)) AS Name, CAST(LEFT(ZY_TB_CustomerPhone.Telephone, 15) AS varchar(15)) AS Phone, CAST(FORMAT(ZY_TB_CustomerProfile.近一年总毛利, '0.00') AS varchar(50)) AS S4, CAST(FORMAT(ZY_TB_CustomerProfile.预收款金额, '0.00') AS varchar(50)) AS S2, CAST(FORMAT(ZY_TB_CustomerProfile.应收款, '0.00') AS varchar(50)) AS S1, CAST(FORMAT(ZY_TB_CustomerProfile.全部库存金额, '0.00') AS varchar(50)) AS S3, CAST(ZY_TB_CustomerProfile.等级名称 AS varchar(50)) AS S5 FROM ZY_TB_CustomerPhone LEFT JOIN ZY_TB_CustomerProfile ON ZY_TB_CustomerPhone.CardCode = ZY_TB_CustomerProfile.[客户编号] WHERE ZY_TB_CustomerPhone.CardCode IS NOT NULL AND ZY_TB_CustomerPhone.Cardname IS NOT NULL and ZY_TB_CustomerPhone.Telephone not like '8441%'; 这个的全部字段 但是要注意新增的id和GUID不能和T_Custome原先有的重复,如果重复了就换一个 这个可以通过python代码实现么?
08-09
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值