好像MySQL不支持窗口函数。
例如简单的:COUNT(*) OVER() AS cnt不起作用。
我不确定这是否也适用于商业版本(我认为社区版本是有限的子集)。
如果没有,如何解决这一缺失的功能?
当我们使用数字数据类型的参数长度时,据我所知,这指定了显示宽度。
我尝试了以下方法:
mysql> create table boolean_test (var1 boolean, var2 tinyint);
Query OK, 0 rows affected (0.10 sec)
mysql> show create table boolean_test;
+--------------+-------------------------
| Table | Create Table
+--------------+-------------------------
| boolean_test | CREATE TABLE `boolean_test` (
`var1` tinyint(1) DEFAULT NULL,
`var2` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+--------------+---------------------------
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
首先 tinyint 是一个 1 字节的值。那么是什么意思tinyint(4)呢?不能有 4 位数字。
mysql> insert into boolean_test values(101,112);
Query OK, 1 row affected (0.03 sec)
mysql> select * …Run Code Online (Sandbox Code Playgroud) 我运行一个EXPLAIN:
mysql> explain select last_name from employees order by last_name;
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+
| 1 | SIMPLE | employees | ALL | NULL | NULL | NULL | NULL | 10031 | Using filesort |
+----+-------------+-----------+------+---------------+------+---------+------+-------+----------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
我表中的索引:
mysql> show index from employees;
+-----------+------------+---------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | …Run Code Online (Sandbox Code Playgroud) 我知道关于NULL数据库中的值有很多意见/方面。
我不明白什么是最好的做法。
即,如果我有一个带有可选属性的关系表,即它可以NULL取值 - 所以我们最终可以得到一个NULLs在该列上有很多的表 -最好使该属性成为一个新的关系表吗?
什么是最好的方法?
我正在尝试在测试环境中对 MySQL 的隔离级别进行一些试验。
我执行以下操作:
mysql> set @@session.tx_isolation='READ-UNCOMMITED';
ERROR 1231 (42000): Variable 'tx_isolation' can't be set to the value of 'READ-UNCOMMITED'
Run Code Online (Sandbox Code Playgroud)
这也失败了:
mysql> update information_schema.session_variables set variable_value='READ-UNCOMMITED' where variable_name='TX_ISOLATION';
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'information_schema'
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我是根。所以它不应该是一个权利问题。
当使用数据库服务器存储货币/金融数据时,我只能假设使用交易是强制性的。
但我不确定通常的隔离级别是哪个?是READ-REPEATABLE二手的吗?还是只有序列化级别?
mysql ×5
transaction ×2
datatypes ×1
explain ×1
index ×1
innodb ×1
mysql-5.5 ×1
null ×1
optimization ×1