在MySQL 5.7中,添加了一种用于在MySQL表中存储JSON数据的新数据类型.这显然是MySQL的一个巨大变化.他们列出了一些好处
文档验证 - 只有有效的JSON文档可以存储在JSON列中,因此您可以自动验证数据.
高效访问 - 更重要的是,当您将JSON文档存储在JSON列中时,它不会存储为纯文本值.相反,它以优化的二进制格式存储,允许更快地访问对象成员和数组元素.
性能 - 通过在JSON列中的值上创建索引来提高查询性能.这可以通过虚拟列上的"功能索引"来实现.
方便性 - JSON列的附加内联语法使得在SQL中集成Document查询非常自然.例如(features.feature是JSON列):
SELECT feature->"$.properties.STREET" AS property_street FROM features WHERE id = 121254;
哇 !它们包括一些很棒的功能.现在,操作数据更容易.现在可以在列中存储更复杂的数据.所以MySQL现在用NoSQL来调味.
现在我可以想象一下JSON数据的查询
SELECT * FROM t1
WHERE JSON_EXTRACT(data,"$.series") IN
(
SELECT JSON_EXTRACT(data,"$.inverted")
FROM t1 | {"series": 3, "inverted": 8}
WHERE JSON_EXTRACT(data,"$.inverted")<4 );
Run Code Online (Sandbox Code Playgroud)
那么我可以在少数json colum中存储巨大的小关系吗?好吗?它是否会破坏正常化.如果这是可能的,那么我猜它会像MySQL列中的NoSQL一样.我真的想知道更多有关此功能的信息.MySQL JSON数据类型的优缺点.
从Angular 4.3开始,他们引入了HttpClient而不是Http.在HttpClient我不能URLSearchParams用于url查询参数.而不是URLSearchParams我正在使用HttpParams
这项工作
var params = new HttpParams().append('a', '1').append('b', '2');
Run Code Online (Sandbox Code Playgroud)
但为什么这不起作用
var params = new HttpParams();
params.append('a', '1');
params.append('b', '2');
Run Code Online (Sandbox Code Playgroud) 文档说
对于具有相同触发器操作时间和事件的给定表,不能有两个触发器.
我使用mysql 5.5.16.我创建了两个触发器.upd_check1和sale_tri.我确信我的两个触发器在INSERT事件上执行两个不同的表.但为什么我在两个触发器中都会出现此错误.当我尝试导出数据库(phpmyadmin没有显示错误但是mysql workbench,heidisql,查询浏览器显示错误).
SQL错误(1235):此版本的MySQL尚不支持"具有相同操作时间和事件的多个触发器"
这是我的upd_check1触发器
--
-- Triggers `product_purchases`
--
DROP TRIGGER IF EXISTS `upd_check1`;
DELIMITER //
CREATE TRIGGER `upd_check1` AFTER INSERT ON `product_purchases`
FOR EACH ROW BEGIN
DECLARE X INTEGER;
SET X = (SELECT product_id FROM product_stock where product_id = NEW.product_id );
IF NEW.product_id =X THEN
UPDATE
product_stock AS S,
product_purchase_item AS I,
product_purchases AS P
SET
S.product_total_quantity=S.product_total_quantity+I.quantity
WHERE
S.product_id=I.product_id
AND
I.product_purchase_item_id=P.product_purchase_item_id
AND
P.product_purchase_id=NEW.product_purchase_id;
ELSE
INSERT INTO …Run Code Online (Sandbox Code Playgroud) 这是我的主数组的示例:
[
{
'data': [{'value': 'Red'}, {'value': 'Small'}, {'value': 'Good'}]
},
{
'data': [{'value': 'Black'}, {'value': 'Medium'}, {'value': 'Bad'}]
},
{
'data': [{'value': 'White'}, {'value': 'Large'}, {'value': 'Best'}]
}
]
Run Code Online (Sandbox Code Playgroud)
我想要作为输出:
[
['Red', 'Black', 'White'], // all values from first index of data array
['Small', 'Medium', 'Large'], // all values from second index of data array
['Good', 'Bad', 'Best'] // all values from third index of data array
]
Run Code Online (Sandbox Code Playgroud)
我试图用forEach,for...in,filter等,但我没有成功拿到前面的输出。
我有两张表Product和buy。我on delete restrict在product.purchase_id列与purchase.purchase_id列中设置了 FK。然后,如果我尝试使用 FK 删除product.product_id,它会显示错误,就像
数据库发生错误 错误号:1451 无法删除或更新父行:外键约束失败(`another_bata`.`product_purchase_item`、CONSTRAINT `FK_product_purchase_item_1` FOREIGN KEY (`product_id`) REFERENCES `product` (`product_id`) ON UPDATE CASCADE) 从product_id='158'的产品中删除 文件名:C:\xampp\htdocs\rima_shoe\system\database\DB_driver.php 线路号码:330
但我需要一个用户友好的错误,假设您无法删除此产品列表,因为您已经库存了此产品
所以我需要在 php 中检查这个 FK ,我该怎么做?
on delete restrict我的第二个问题..在某些特殊情况下是否可以删除已经存在的 FK 'product.product_id' ?认为
DELETE p,q FROM product AS p INNER JOIN purchase AS q
WHERE p.purchase_id=q.purchase_id AND q.purchase_quan=0
Run Code Online (Sandbox Code Playgroud) 我读了一些问题并且我没有解决我的问题我使用的是array_column()但是我对这个愚蠢的问题很困惑
我有一个阵列 $product
$product = array(
0 => array(
'id' => '123',
'name' => 'Facebook status robot',
'description'=> 'Post your wall in your given time',
'quantity' => '1',
'unitPrice' => '120',
'taxable' => 'true'
),
1 => array(
'id' => '123',
'name' => 'Facebook status robot',
'description'=> 'Post your wall in your given time',
'quantity' => '1',
'unitPrice' => '120',
'taxable' => 'true'
),
2 => array(
'id' => '123',
'name' => 'Facebook status robot',
'description'=> 'Post your …Run Code Online (Sandbox Code Playgroud)