我有以下输入:
id | value
----+-------
1 | 136
2 | NULL
3 | 650
4 | NULL
5 | NULL
6 | NULL
7 | 954
8 | NULL
9 | 104
10 | NULL
Run Code Online (Sandbox Code Playgroud)
我希望得到以下结果:
id | value
----+-------
1 | 136
2 | 136
3 | 650
4 | 650
5 | 650
6 | 650
7 | 954
8 | 954
9 | 104
10 | 104
Run Code Online (Sandbox Code Playgroud)
简单的解决方案是用<
关系连接表,然后选择 a 中的MAX
值GROUP BY
: …
我目前正在尝试使用以下方法定义一个新用户:
mysql> GRANT ALL PRIVILEGES ON simple_cms_development.* TO 'br'@'localhost' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
但是,它不成功并输出:
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“IDENTIFIED BY 'password'”附近使用的正确语法
我正在运行 MySQL 8.0.11。
是的,我知道,可以引用表的名称,但有时不正确。
如果别无选择,我将这个表命名为“用户”,尽管这个语义上不需要的复数会使事情有点不一致。
存在哪些替代解决方案?
我在想什么mysqldump
或pg_dump
正在做什么。因此,他们将活动数据库转储到包含 SQL 查询的文本文件中,这些 SQL 查询可重现整个数据库。在 MySQL 和 PostgreSQL 中,这是正常的数据库转储格式。
它存在于 Oracle 上吗?怎么做到呢?
如果不是标准的 Oracle 东西,那绝对不是问题。我需要一个解决问题的方法。导出单个表是不足够的,我问了整整DB的转储。
它是一个大型项目(具有数百万行 DB)的简化开发人员环境,但仍有数百个表和非常复杂的结构。而且,我想快点玩。当我在玩它时,我还需要能够对其执行棘手的修改。在二进制转储上我不能这样做,在文本上我可以。
我对 SQL 完全陌生,我必须编写一个用户定义的函数 (UDF) 来计算给定时间范围内学生的 GPA。这些输入StudentId int
,ClassStartDateStart datetime
以及ClassStartDateEnd datetime
。其中输出应该是学生在ClassStartDateStar
t 和之间参加的所有课程的 GPA ClassStartDateEnd
。此外,提供调用此新函数的脚本,将您选择的参数值传递给它。我尝试创建一个代码,但不知道从哪里开始。这是我到目前为止所拥有的:
USE [Master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION GPAofStudents
(StudentID int,
ClassStartDateStart datetime,
ClassStartDateEnd datetime)
RETURNS decimal(3,2)
AS
BEGIN
DECLARE AvgGPA decimal(5,2);
SET AvgGPA = (SELECT AVG(Class_GPA)
FROM Students_Classes
WHERE Student_ID = StudentID
AND Start_Date > ClassStartDateStart
AND Start_Date <= ClassStartDateEnd
AND Class_GPA > 0;
RETURN AvgGPA;
END;
Run Code Online (Sandbox Code Playgroud)
我给学生的桌子是这样的:
CREATE TABLE [dbo].[Students_Classes](
[Student_Class_ID] [int] …
Run Code Online (Sandbox Code Playgroud) 我想从 Oracle 实例中删除所有实体。我想删除所有表、用户、索引等,就像它是一个新创建的实例一样。结果应该看起来,或者至少从客户端的角度来看非常接近,好像我已经完全删除了实例,然后使用相同的设置重新安装了实例。
通过完全擦除/重新安装来执行此操作很慢,并且不容易自动化。我正在寻找更好的选择,但如果没有,这是一个可能的解决方案。
删除模式是不够的,因为一些实体仍然保留在原地(例如,用户)。
有没有一种简单的方法可以放下所有东西,以更快的速度达到初始的干净和空状态?
我再次面临一个严重的问题,即 Oracle 根本没有布尔列类型。我需要使用char(1)
, 或smallint
, 或其他一些。
最佳实践是什么,如何在 Oracle 中模拟布尔值?
(空间消耗现在不重要 - 但与 java/hibernate 线的良好合作很重要)。
微软在这里提到我们应该使用 rowversion 数据类型而不是 Timestamps。现在在我的 SQL Server 2008 R2 中,我想创建一个具有 Rowversion 数据类型的列。但是在我的 SQL Server 2008 R2 Management Studio 中,我找不到这样的数据类型:
此外,当我尝试使用此语句更改名为时间戳的现有列时,该列的类型为时间戳:
ALTER TABLE [SkillManagement].[dbo].[Customer]
ALTER COLUMN timestamp rowversion
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Msg 4927, Level 16, State 1, Line 1
Cannot alter column 'timestamp' to be data type timestamp
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议吗?
编辑
我想转储一个表的全部内容,按主键排序。直觉上,我想做一个
SELECT * FROM %table_name% ORDER BY %primary_key_of(table_name)%;
Run Code Online (Sandbox Code Playgroud)
这将由外部工具运行,知道表的列表,但不知道它们的主键。
如果没有更好的选择,我们可以假设所有的主键都是单列的。
我使用的是 PostgreSQL-9.5,但可以升级。
我正在设计新 SQL Server 安装的要求。我一直在研究磁盘存储,一切似乎都指向使用 RAID。
但是,我发现了这篇文章,它表明 RAID 在今天不再适用。
任何人都可以指出我可以在哪里了解 SQL Server 的最新磁盘存储的方向。
首先,如果这不一定是发布此类问题的最佳地点,我深表歉意。
我目前正在准备我的 70-764 考试。我购买了以下书:
我有几个关于这本书及其资源的问题:
以前,我购买了其他 Microsoft 认证书籍,并且通常会随印刷书籍一起获得 PDF 版本。现在不是这样了吗?我是否缺少磁盘或其他东西?
这本书有许多支持资源的 URL,但是,这些 URL 似乎不再有效。例如,在本书的早期,有一个 URL 给出了随书附送的有用链接列表,我在网上根本找不到这些链接。
实践测试也曾经与本书一起提供,但现在似乎不再如此。这是故意的吗?或者我只是在这里遗漏了什么?
非常感谢您提供任何帮助。
我在可以创建表和存储过程的数据库中有一个用户帐户。
我想确认此用户帐户是否可以创建模式 -无需先尝试。(我是金融的一部分,而不是 IT。)
如果我可以创建模式,那么我会请求 IT 许可继续这样做。
如果我不能,那么我将继续等待 IT 在我前段时间提出的服务台请求上执行此操作(叹气)。
有没有我可以在 SSMS 中运行的命令,它可以在不实际创建新模式的情况下告诉我这一点?
我还截取了该用户权限的几个屏幕截图 - 也许他们会有答案?
编辑:
运行下面 SQLServing 建议的 SQL 后,我得到了这个结果:
UserName is_disabled principal_type_desc class_desc object_name permission_name permission_state_desc
DWReports 0 SQL_USER DATABASE NULL CONNECT GRANT
DWReports 0 SQL_USER OBJECT_OR_COLUMN GetSystemSQLAgentJobList EXECUTE GRANT
Run Code Online (Sandbox Code Playgroud) sql-server ×5
oracle ×3
t-sql ×2
datatypes ×1
dump ×1
export ×1
functions ×1
learning ×1
mysql ×1
null ×1
permissions ×1
postgresql ×1
primary-key ×1
ssms ×1
storage ×1
terminology ×1