125 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			125 lines
		
	
	
		
			9.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: SQL Interview Questions | |||
|  | localeTitle: Вопросы по SQL-интервью | |||
|  | --- | |||
|  | ## Вопросы по SQL-интервью
 | |||
|  | 
 | |||
|  | ### Что такое внутреннее соединение в SQL?
 | |||
|  | 
 | |||
|  | Это тип соединения по умолчанию, если не указано соединение. Он возвращает все строки, в которых есть как минимум одно совпадение в обеих таблицах. | |||
|  | 
 | |||
|  | ```sql | |||
|  | SELECT * FROM A x JOIN B y ON y.aId = x.Id  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Что такое левое соединение в SQL?
 | |||
|  | 
 | |||
|  | Левое соединение возвращает все строки из левой таблицы и сопоставленные строки из правой таблицы. Строки в левой таблице будут возвращены, даже если в правой таблице не было соответствия. Строки из левой таблицы без соответствия в правой таблице будут иметь `null` для значений правой таблицы. | |||
|  | 
 | |||
|  | ```sql | |||
|  | SELECT * FROM A x LEFT JOIN B y ON y.aId = x.Id  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Что такое правильное соединение с SQL?
 | |||
|  | 
 | |||
|  | Правильное соединение возвращает все строки из правой таблицы и сопоставленные строки из левой таблицы. Напротив левого соединения это приведет к возврату всех строк из правой таблицы, даже если в левой таблице нет совпадений. Строки в правой таблице, не имеющие совпадений в левой таблице, будут иметь `null` значения для столбцов левой таблицы. | |||
|  | 
 | |||
|  | ```sql | |||
|  | SELECT * FROM A x RIGHT JOIN B y ON y.aId = x.Id  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Что такое полное присоединение к SQL?
 | |||
|  | 
 | |||
|  | Полное соединение возвращает все строки, для которых есть совпадение в любой из таблиц. Поэтому, если в левой таблице есть строки, которые не имеют совпадений в правой таблице, они будут включены. Также, если в правой таблице есть строки, которые не имеют совпадений в левой таблице, они будут включены. | |||
|  | 
 | |||
|  | ```sql | |||
|  | SELECT Customers.CustomerName, Orders.OrderID  | |||
|  |  FROM Customers  | |||
|  |  FULL OUTER JOIN Orders  | |||
|  |  ON Customers.CustomerID=Orders.CustomerID  | |||
|  |  ORDER BY Customers.CustomerName  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### Что является результатом следующей команды?
 | |||
|  | 
 | |||
|  | \`\` \` DROP VIEW view\_name | |||
|  | ``` | |||
|  | Here it'll be an error because we can't perform a DML operation on a view.  | |||
|  |   | |||
|  |  ### Can we perform a rollback after using ALTER command?  | |||
|  |  No, because ALTER is a DDL command and Oracle server performs an automatic COMMIT when the DDL statements are executed.  | |||
|  |   | |||
|  |   | |||
|  |  ### Which is the only constraint that enforces rules at column level?  | |||
|  |  NOT NULL is the only constraint that works at the column level.  | |||
|  |   | |||
|  |   | |||
|  |  ### What are the pseudocolumns in SQL? Give some examples?  | |||
|  |  A pseudocolumn is a function which returns a system generated value. The reason it is known as so because a pseudocolumn is an Oracle assigned value used in the same context as an Oracle database column but not stored on disk.  | |||
|  | ``` | |||
|  | 
 | |||
|  | Вот некоторые примеры: ROWNUM, ROWID, USER, CURRVAL, NEXTVAL и т. Д. \`\` \` | |||
|  | 
 | |||
|  | ### Создайте пользователя my723acct с паролем kmd26pt. Используйте пользовательские _данные и временные табличные пространства данных, предоставляемые PO8, и предоставите этому пользователю 10M пространства для хранения в пользовательских_ данных и 5M пространства для хранения во временных\_данных.
 | |||
|  | 
 | |||
|  | `sql CREATE USER my723acct IDENTIFIED BY kmd26pt DEFAULT TABLESPACE user_data TEMPORARY TABLESPACE temporary_data QUOTA 10M on user_data QUOTA 5M on temporary_data` | |||
|  | 
 | |||
|  | ### Создайте _таблицы_ роли ролей and\_views.
 | |||
|  | 
 | |||
|  | `sql CREATE ROLE role_tables_and_views` | |||
|  | 
 | |||
|  | ### Предоставьте роли предыдущего вопроса привилегии для подключения к базе данных и привилегии для создания таблиц и представлений.
 | |||
|  | 
 | |||
|  | Привилегия подключения к базе данных - CREATE SESSION Привилегия создания таблицы - CREATE TABLE Привилегия создания представления - CREATE VIEW `sql GRANT Create session, create table, create view TO role_tables_and_views` | |||
|  | 
 | |||
|  | ### Предоставьте предыдущую роль в вопросе пользователям anny и rita
 | |||
|  | 
 | |||
|  | `sql GRANT role_tables_and_views TO anny, rita` | |||
|  | 
 | |||
|  | ### Создайте пользователя my723acct с паролем kmd26pt. Используйте пользовательские _данные и временные табличные пространства данных, предоставляемые PO8, и предоставите этому пользователю 10M пространства для хранения в пользовательских_ данных и 5M пространства для хранения во временных\_данных.
 | |||
|  | 
 | |||
|  | `sql CREATE USER my723acct IDENTIFIED BY kmd26pt DEFAULT TABLESPACE user_data TEMPORARY TABLESPACE temporary_data QUOTA 10M on user_data QUOTA 5M on temporary_data` | |||
|  | 
 | |||
|  | ### Создайте _таблицы_ роли ролей and\_views.
 | |||
|  | 
 | |||
|  | `sql CREATE ROLE role_tables_and_views` | |||
|  | 
 | |||
|  | ### Предоставьте роли предыдущего вопроса привилегии для подключения к базе данных и привилегии для создания таблиц и представлений.
 | |||
|  | 
 | |||
|  | Привилегия подключения к базе данных - CREATE SESSION Привилегия создания таблицы - CREATE TABLE Привилегия создания представления - CREATE VIEW `sql GRANT Create session, create table, create view TO role_tables_and_views` | |||
|  | 
 | |||
|  | ### Предоставьте предыдущую роль в вопросе пользователям anny и rita
 | |||
|  | 
 | |||
|  | `sql GRANT role_tables_and_views TO anny, rita` | |||
|  | 
 | |||
|  | ### Напишите команду для изменения пароля пользователя rita от abcd до dfgh
 | |||
|  | 
 | |||
|  | `sql ALTER USER rita IDENTIFIED BY dfgh` | |||
|  | 
 | |||
|  | ### Пользователи rita и anny не имеют привилегий SELECT в таблице INVENTORY, созданной SCOTT. Напишите команду, чтобы позволить SCOTT предоставлять пользователям SELECT priviliges в этих таблицах.
 | |||
|  | 
 | |||
|  | `sql GRANT select ON inventory TO rita, anny` | |||
|  | 
 | |||
|  | ### Пользователь rita был передан и больше не нуждается в привилегии, предоставленной ей через _таблицы_ ролевой роли and\_views. Напишите команду, чтобы удалить ее из ее предыдущих заданий, за исключением того, что она все еще могла подключиться к базе данных.
 | |||
|  | 
 | |||
|  | `sql REVOKE select ON scott.inventory FROM rita REVOKE create table, create view FROM rita` | |||
|  | 
 | |||
|  | ### Пользователь rita, который был переведен, теперь переезжает в другую компанию. Поскольку созданные ею объекты больше не используются, напишите комманд, чтобы удалить этого пользователя и все ее объекты.
 | |||
|  | 
 | |||
|  | Здесь параметр CASCADE необходим для удаления всех объектов пользователя в базе данных. \`\` \`sql   | |||
|  | DROP USER Рита КАСКАД | |||
|  | 
 | |||
|  | ### Пользователь rita был передан и больше не нуждается в привилегии, предоставленной ей через _таблицы_ ролевой роли and\_views. Напишите команду, чтобы удалить ее из ее предыдущих заданий, за исключением того, что она все еще могла подключиться к базе данных.
 | |||
|  | 
 | |||
|  | `sql REVOKE select ON scott.inventory FROM rita REVOKE create table, create view FROM rita` | |||
|  | 
 | |||
|  | ### Пользователь rita, который был переведен, теперь переезжает в другую компанию. Поскольку созданные ею объекты больше не используются, напишите комманд, чтобы удалить этого пользователя и все ее объекты.
 | |||
|  | 
 | |||
|  | Здесь параметр CASCADE необходим для удаления всех объектов пользователя в базе данных. \`\` \`sql   | |||
|  | DROP USER Рита КАСКАД | |||
|  | ``` | |||
|  | ### Write SQL query to find the nth highest salary from table. 
 | |||
|  | ``` | |||
|  | 
 | |||
|  | SQL   | |||
|  | ВЫБЕРИТЕ ТОП 1 Зарплата ОТ ( SELECT DISTINCT TOP N Зарплата ОТ сотрудника ЗАКАЗАТЬ Зарплата DESC ) ЗАКАЗАТЬ ЗАРУБЕЖЬЮ ASC \`\` \` |