Переменные
USE TestDatabase -- Объявление переменных DECLARE @EmpID INT, @EmpName VARCHAR(40) -- Задание значения переменной @EmpID SET @EmpID = 1 -- Задание значения переменной @EmpName SELECT @EmpName = UserName FROM Users WHERE UserID = @EmpID -- Вывод переменной @EmpName в результат запроса SELECT @EmpName AS [Employee Name] GO -- Примечание. В этом примере используется группировка слов в переменную — конструкция [Employee Name] -- воспринимается как одна переменная, так как слова заключены в квадратные скобки
Системные функции
USE TestDatabase -- Использование агрегативной функции для подсчета средней зарплаты SELECT AVG(BaseSalary) AS [Average salary] FROM Positions GO -- Использование скалярной функции для получения имени базы данных SELECT DB_NAME() AS [DATABASE name] GO -- Использование скалярной функции для получения имени текущего пользователя DECLARE @MyUser CHAR(30) SET @MyUser = USER_NAME() SELECT 'The current user''s database username is: '+ @MyUser GO -- Использование функции-указателя для получения данных с другого сервера SELECT * FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM owner.titles') GO
Выражения
USE TestDatabase -- Использование DDL CREATE TABLE TempUsers (UserID INT, UserName NVARCHAR(40), DepartmentID INT) GO -- Использование DCL GRANT SELECT ON Users TO PUBLIC GO -- Использование DML SELECT UserID, UserName + ' ' + UserSurname AS [USER FULL Name] FROM Users GO -- Использование DDL DROP TABLE TempUsers GO
Динамическое конструирование выражений
USE master -- Задание динамических данных DECLARE @dbname varchar(30), @tablename varchar(30) SET @dbname = 'TestDatabase' SET @tablename = 'Positions' SET @column = 'BaseSalary' -- Использование динамических данных EXECUTE ('USE ' + @dbname + ' SELECT AVG(' + @column + ') AS [Average salary] FROM @tablename ' + @tablename) GO
Выборка
В строке сравнения разрешается использовать подстановочные символы:
% - любое количество символов;
_ - один символ;
[] – любой символ, указанный в скобках;
[^] – любой символ, не указанный в скобках.
-- Выбрать все записи из таблицы Users, у кого в имени вторая буква не V SELECT * FROM Users WHERE UserName LIKE '_[^v]%' -- Выбрать записи колонок UserName и UserSurname из таблицы Users, у кого -- PositionID между 2 и 3, результирующую колонку назвать Full name. SELECT [UserName] + ' ' + [UserSurname] AS 'Full name' FROM Users WHERE PositionID BETWEEN 2 AND 3 -- Сосчитать суммарную зарплату отдела с идентификатором 1 DECLARE @DepID int SET @DepID = 1 SELECT DepartmentName AS 'Department name', (SELECT SUM(Positions.BaseSalary) FROM Positions INNER JOIN Users ON Users.PositionID = Positions.PositionID WHERE Users.DepartmentID = @DepID ) AS 'Summary salary' FROM Departments WHERE DepartmentID = @DepID
Аналог LIMIT в MySQL
SELECT TOP 10 * FROM MY_TABLE -- аналогично SELECT * FROM MY_TABLE LIMIT 10
Комментариев нет:
Отправить комментарий