Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --ЕДНОРЕДОВ КОМЕНТАР
- /*
- МНОГОРЕДОВ
- КОМЕНТАР
- */
- ---------------------ЗАДАЧА 1: -------------------------
- ----------------------------------------------
- ---------------1 DDL--------------------------
- ----------------------------------------------
- --1.1 СЪЗДАВАНЕ НА БАЗА ДАННИ
- CREATE DATABASE MY_FISRT_DB
- ---------------------------------
- --1.2 ИЗПОЛЗВАНЕ НА КОНКРЕТНА БАЗА ДАННИ
- USE MY_FISRT_DB
- ---------------------------------
- --1.3 СЪЗДАВАНЕ НА ТАБЛИЦА
- CREATE TABLE STUDENTS
- (
- F_NUM VARCHAR(15) NOT NULL,
- NAME VARCHAR(50) NOT NULL,
- PHONE VARCHAR(15) NULL
- )
- ---------------------------------
- --1.4 ДОБАВЯНЕ НА КОЛОНА
- ALTER TABLE STUDENTS
- ADD ADDRESS VARCHAR(50) --DEFAULT IS NULL
- ---------------------------------
- --1.5 ПРОМЯНА НА ТИПА НА КОЛОНА
- ALTER TABLE STUDENTS
- ALTER COLUMN ADDRESS TEXT
- ---------------------------------
- ---1.6 ИЗТРИВАНЕ НА КОЛОНА
- ALTER TABLE STUDENTS
- DROP COLUMN PHONE
- ---------------------------------
- --1.7 ИЗТРИВАНЕ НА ТАБЛИЦА
- DROP TABLE STUDENTS
- ---------------------------------
- --1.8 ИЗТРИВАНЕ НА БАЗА ДАННИ
- DROP DATABASE MY_FISRT_DB
- --------------------------------------------------
- --------------------------------------------------
- --------------------------------------------------
- --1.9 СЪЗДАВАНЕ НА БАЗА ДАННИ
- CREATE DATABASE MY_FISRT_DB
- ---------------------------------
- --1.10 ИЗПОЛЗВАНЕ НА БАЗА ДАННИ
- USE MY_FISRT_DB
- ---------------------------------
- --1.11 СЪЗДАВАНЕ НА ТАБЛИЦА
- CREATE TABLE STUDENTS
- (
- F_NUM VARCHAR(15) NOT NULL,
- NAME VARCHAR(50) NOT NULL,
- PHONE VARCHAR(15),
- GENDER CHAR(1) NULL DEFAULT 'M' CHECK(GENDER IN ('M','F'))
- )
- ----------------------------------------------
- ---------------2 DML--------------------------
- ----------------------------------------------
- --2.1 ДОБАВЯНЕ НА ЗАПИСИ:
- --2.1.1.NULLABLE COLUMNS МОЖЕ ДА СЕ ПРОПУСКАТ ПРИ
- -- ВЪВЕЖДАНЕ НА СТОЙНОСТИ:
- INSERT INTO STUDENTS(F_NUM, NAME, PHONE)
- VALUES('100', 'IVAN IVANOV', '0324567')
- ---------------------------------
- --2.1.2 КОГАТО НЕ СПОМЕНАВАМЕ В КОИ КОЛОНИ ВЪВЕЖДАМЕ
- -- СЕ ПОДРАЗБИРАТ ВСИЧКИ:
- INSERT INTO STUDENTS
- VALUES('101', 'IVAN ILIEV', '0324567', NULL)
- ---------------------------------
- --2.1.3 ВЪВЕЖДАНЕ НА ПОВЕЧЕ ОТ 1 РЕДА НАВЕДНЪЖ
- INSERT INTO STUDENTS(F_NUM, NAME, PHONE, GENDER)
- VALUES('102', 'IVA MARINOVA', '032/ 456 767', 'F'),
- ('103', 'GEORGI APOSTOLOV', '0892 456 768', DEFAULT),
- ('104', 'MIRA STOEVA', '+359 596 668', 'F'),
- ('105', 'MARIYA ILIEVA', '0895667678', NULL),
- ('105', 'MARIYA ILIEVA', '0894566768', NULL),
- ('106', 'PETAR PETROV', NULL, 'M')
- ---------------------------------
- --2.2.1 ПРОМЕНИ ИМЕТО НА СТУДЕНТ С F_NUM ='104'
- UPDATE STUDENTS
- SET NAME = 'MIRA STOEVA-PETKOVA'
- WHERE F_NUM = '104'
- ---------------------------------
- --2.2.2 ПРОМЕНИ ТЕЛ. НА СТУДЕНТ С F_NUM ='102'
- UPDATE STUDENTS
- SET PHONE = '032 455 675'
- WHERE F_NUM = '102'
- --PK МОЖЕ ДА СЕ ДОБАВИ ВПОСЛЕДСТВИЕ СТИГА КОЛОНАТА ДА Е NOT NULL
- --И ЗАПИСИТЕ В НЕЯ ДА НЕ СЕ ДУБЛИРАТ
- ALTER TABLE STUDENTS
- ADD CONSTRAINT PK_STUDENTS PRIMARY KEY (F_NUM)
- --> виж грешката ->
- ---поради дублирането на едниквите стойности в колоната, която
- ---целим в бъдеще да е уникална, не можем да дефинираме PK -->
- ---затова изтриваме дублиращите се клетки в атрибут/колона "F_NUM"
- ---------------------------------
- --2.3.1 ИЗТРИЙ СТУДЕНТ С F_NUM = '105'
- DELETE FROM STUDENTS
- WHERE F_NUM = '105'
- --вече може да бъде създаден primary key:
- ALTER TABLE STUDENTS
- ADD CONSTRAINT PK_STUDENTS PRIMARY KEY (F_NUM)
- ---------------------------------
- --2.4.1 ИЗВЛИЧАНЕ НА ВСИЧКИ КОЛОНИ
- SELECT * FROM STUDENTS
- ---------------------------------
- --2.4.2 ИЗВЛИЧАНЕ НА ИМЕ И ТЕЛЕФОН, ПРИ СТУДЕНТИ С ПОЛ МЪЖ,
- --ИМАЩИ СТОЙНОСТ В КОЛОНАТА ЗА ТЕЛЕФОН
- SELECT NAME, PHONE
- FROM STUDENTS
- WHERE GENDER = 'M' AND PHONE IS NOT NULL
- ----------------------------------------------------------------------
- --1. Функции за преобразуване на типове
- ----------------------------------------------------------------------
- --Пояснение към примерите:
- -- expression – валиден израз, резултатът от който да бъде преобразуван;
- -- string_value - nvarchar(4000) стойност, представяща форматираната стойност, която
- --да бъде преобразувана;
- -- data_type – тип, към който се прави преобразуване;
- -- length – опционен параметър за символните типове данни (низове);
- -- style – стил, използван при преобразуване на дати в низове;
- -- culture – опционен низ, който идентифицира как стойността на string_value да бъде форматирана.
- ----------CAST (expression AS data_type [ ( length ) ]) ;
- -- преобразува стойност (от който и да е тип) в специфициран тип
- SELECT CAST(10.3496847 AS money)
- ----------CONVERT (data_type [ ( length ) ] , expression [ , style])
- -- преобразува стойност (от който и да е тип) в специфициран тип
- SELECT CONVERT(varchar, GETDATE(), 103)
- SELECT CONVERT(datetime, '2019-08-25', 105) -- out-of-range value.
- SELECT CONVERT(datetime, '2019-25-08', 105)
- ----------PARSE (string_value AS data_type [ USING culture ])
- -- връща резултата от израз, преведен в искания тип данни
- SELECT PARSE('08/17/2019' AS datetime2) AS Result;
- SELECT PARSE('Saturday, 17 August 2019' AS date USING 'en-US') AS Result;
- SELECT PARSE('Sat, 17 August 2019' AS date USING 'en-US') AS Result;
- ------------TRY_CAST (expression AS data_type [ ( length ) ])
- --връща стойност, подадена към посочения тип данни, ако промяната успее; в противен случай връща null
- SELECT TRY_CAST('08/17/2019' AS date);
- SELECT TRY_CAST('08/17/2019 09:54:45' AS date) AS Result;
- SELECT TRY_CAST('08/17/2019 09:54:45' AS datetime) AS Result;
- SELECT TRY_CAST('08/17/2019 09:54:45' AS datetime2) AS Result;
- ------------TRY_CONVERT (data_type [ ( length ) ], expression [, style ])
- --връща стойност, подадена към посочения тип данни, ако промяната успеe; в противен случай връща null.
- SELECT TRY_CONVERT(VARCHAR(15),'08/17/2019',101);
- SELECT TRY_CONVERT(date, '08/17/2019') AS Result;
- SELECT TRY_CONVERT(date, '08/17/2019 10:05:20') AS Result;
- SELECT TRY_CONVERT(datetime, '08/17/2019 10:05:20') AS Result;
- SELECT TRY_CONVERT(datetime2, '08/17/2019 10:05:20') AS Result;
- ------------TRY_PARSE (string_value AS data_type [ USING culture ])
- --преобразува израз от string към date/time и number types
- SELECT TRY_PARSE('08/17/2019' AS date USING 'en-us');
- SELECT TRY_PARSE('08/17/2019 10:18:10 AM' AS date USING 'en-us');
- SELECT TRY_PARSE('08/17/2019 10:18:10 AM' AS datetime USING 'en-us');
- SELECT TRY_PARSE('08/17/2019 10:18:10 AM' AS datetime2 USING 'en-us');
- ----------------------------------------------------------------------
- --2. Функции за дата
- ----------------------------------------------------------------------
- ------------CURRENT_TIMESTAMP – връща системната дата на сървъра в тип DATETIME;
- SELECT CURRENT_TIMESTAMP AS current_date_time;
- SELECT CONVERT(char(25), CURRENT_TIMESTAMP) as System_date;
- ------------GETUTCDATE() – връща текущото UTC време, изчислява се от
- --операционната система, на която работи сървъра, в тип DATETIME;
- select getutcdate() as System_date;
- ------------GETDATE() – връща системната дата на сървъра в тип DATETIME;
- select getdate()
- ------------SYSDATETIME() – връща системната дата на сървъра в тип DATETIME2;
- SELECT CONVERT (date, SYSDATETIME()) as Date,
- CONVERT (time, SYSDATETIME()) as Time,
- SYSDATETIME() as SysDateTime;
- ------------SYSUTCDATETIME() – връща текущото UTC време на сървъра в тип DATETIME2;
- SELECT CONVERT (date, SYSUTCDATETIME()) as Date,
- CONVERT (time, SYSUTCDATETIME()) as Time,
- SYSDATETIME() as SysDateTime,
- SYSUTCDATETIME() as SysUtcDateTime
- ------------SYSDATETIMEOFFSET() – връща системната дата и часовия пояс на сървъра в тип DATETIMEOFFSET;
- SELECT CONVERT (date, SYSDATETIMEOFFSET()) as Date,
- CONVERT (time, SYSDATETIMEOFFSET()) as Time,
- SYSDATETIMEOFFSET() as SysDateTimeOffSet;
- ------------DATEADD (datepart, number, date) – връща дата, образувана чрез добавяне към
- --датата date, number на брой части datepart;
- SELECT DATEADD(year, 1, '2020/08/25') AS DateAdd
- --DATEDIFF (datepart , startdate , enddate) – връща число, разликата в части от вид
- --datepart, между две дати;
- SELECT DATEDIFF(MONTH, '2019/08/25', '2018/08/25') AS DateDiff
- --DATEDIFF_BIG (datepart, startdate, enddate) – връща число, разликата в части от вид
- --datepart, между две дати, като върнатото число е от тип BIGINT;
- SELECT DATEDIFF_BIG(year, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(quarter, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(month, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(dayofyear, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(day, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(week, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(hour, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(minute, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(second, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- SELECT DATEDIFF_BIG(millisecond, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
- /*DATENAME (datepart, date) – връща като низ съдържанието на конкретна част от
- дата. Напр. February, ако месеца в date е февруари и datepart е mm;*/
- SELECT DATENAME(month, '2017/08/25') AS DatePartString
- /*DATEPART (datepart, date) – връща като число съдържанието на конкретна част от
- дата. Напр. 2, ако месеца в date е февруари и datepart е mm;*/
- SELECT DATEPART(year, '2017/08/25') AS DatePartInt
- --DAY (date) – връща като число ден от определена дата;
- SELECT DAY('2014-02-22') as Day_1,
- DAY('2014-02-22 08:23:49.1234567 +07:10') as Day_2,
- DAY(SYSDATETIME()) as Day_3;
- --MONTH (date) – връща като число месец от определена дата;
- SELECT MONTH('2014-03-01') as Month_1,
- MONTH('2014-03-01 08:38:49.1234567 +07:10') as Month_2,
- MONTH(SYSDATETIME()) as Month_3;
- --YEAR (date) – връща като число година от определена дата.
- SELECT YEAR('2014-03-01') as Result_1,
- YEAR('2014-03-01 17:01:25.1234567 +07:10') as Result_2,
- YEAR(SYSDATETIME()) as Result_3;
- ----------------------------------------------------------------------------------------------------
- --3. Математически функции
- ----------------------------------------------------------------------------------------------------
- --ABS (numeric_expression) – връща абсолютна стойност, променя отрицателните
- --стойности в положителни стойности;
- SELECT Abs(-243.5) AS AbsNum;
- --DEGREES (numeric_expression) – връща съответния ъгъл в градуси, по зададени
- --радиани;
- SELECT DEGREES(1.5);
- --RAND ([seed]) – генератор на случайни числа между 0 и 1 или цяло ако е указано
- --цялото число seed;
- SELECT RAND()
- --ROUND (numeric_expression, length [, function]) – връща числова стойност,
- --закръглена до определена дължина или точност;
- SELECT ROUND(235.415, 2) AS RoundValue;
- --SQRT (float_expression) – връща корен квадратен на зададеното число;
- SELECT SQRT(121);
- --PI() – връща стойността на числото Пи.
- SELECT pi() as [Pi number]
- --SQUARE (float_expression) – връща квадрат на посочената стойност;
- SELECT SQUARE(11);
- --POWER (float_expression , y) – връща стойността на посоченото число на посочената
- --степен;
- SELECT POWER(4, 2)
- ----------------------------------------------------------------------------------------------------
- --4. Функции за работа с низове
- ----------------------------------------------------------------------------------------------------
- --CONCAT (string_value1, string_value2 [, string_valueN])
- -- – връща низ, който е резултат от конкатенацията
- -- или сливането на два или повече низа;
- SELECT CONCAT ('Ivan', ' ','Asenov') AS FullName;
- --LEN (string_expression) – връща броя символи в низа;
- --LTRIM (character_expression) – премахва интервалите в началото на низа;
- SELECT LTRIM(' Four spaces are after the period in this sentence. ') + 'Next string.'
- --RTRIM (character_expression) – премахва интервалите в края на низа;
- SELECT RTRIM(' Four spaces are after the period in this sentence. ') + 'Next string.'
- --TRIM(character_expression) – премахва интервалите в началото и края на низа;
- SELECT TRIM(' Four spaces are after the period in this sentence. ') + 'Next string.'
- --REPLACE (string_expression, string_pattern , string_replacement) – заменя всички
- --съвпадения на определен низ с друг низ;
- SELECT REPLACE('abcD','abc','3');
- --REVERSE (character_expression) – обръща низа;
- SELECT REVERSE('SQL Tutorial')
- --SUBSTRING (expression, start, length) – връща част от символен или бинарен израз;
- SELECT SUBSTRING('SQL Tutorial', 2, 3) AS ExtractString
- --LOWER (character_expression) – връща низа, като преобразува главните букви в малки;
- SELECT LOWER('SQL Tutorial is FUN!')
- --UPPER (character_expression) – връща низа, като преобразува малките букви в главни;
- SELECT UPPER('SQL Tutorial is FUN!')
- ----------------------------------------------------------------------------------------------------
- --5. Системни функции
- ----------------------------------------------------------------------------------------------------
- --ISNULL (expression, replacement) – ако параметърът expression бъде изчислен до
- --NULL, той се заменя от израза replacement;
- SELECT ISNULL(NULL, 'W3Schools.com');
- --ISNUMERIC (expression) – връща 1, ако изразът се изчислява до числов тип, и 0 - в противен случай;
- SELECT ISNUMERIC(4567);
- --IIF (boolean_expression, true_value, false_value) – изчислява първия аргумент и връща
- --втория аргумент, ако първият аргумент е true, в противен случай връща втория аргумент;
- SELECT IIF(500<1000, 'YES', 'NO');
- --HOST_NAME() – връща името на работната станция;
- --select HOST_NAME() as Host_name;
- --HOST_ID() – връща идентификатора на работната станция. Идентификационният
- --номер на работната станция е идентификационният номер на процеса (PID) на
- --приложението на клиентския компютър, който се свързва към SQL Server.
- --select HOST_ID() as Host_number;
- ----любознателните могат да намерят още примери тук: tsql.info; w3schools.com
- ---------------------ЗАДАЧА 2: -------------------------
- --Задача 2-1. Да се създаде база от данни с име TESTDB.
- CREATE DATABASE TESTDB
- USE TESTDB
- --Задача 2-2. Да се създаде таблица в тази база данни с име COUNTRIES и следните колони:
- --country_code – с тип char(3);
- --name – тип varchar(40);
- --population – тип int.
- CREATE TABLE COUNTRIES
- (
- country_code char(3) not null,
- name varchar(40) not null,
- population int,
- constraint pk_COUNTRIES PRIMARY KEY (country_code)
- )
- --Задача 2-3.
- --Да се добави нов атрибут в таблицата COUNTRIES
- --с име phone_code, което да съдържа цели числа до 3 цифри.
- ALTER TABLE COUNTRIES
- ADD phone_code char(3)
- --Задача 2-4. Да се добави ред в таблицата COUNTRIES със следните данни:
- --country_code: BGR;
- --name: Bulgaria;
- --population: 7500000;
- --phone_code: 359.
- insert into COUNTRIES(country_code, name, population, phone_code)
- values('BGR', 'Bulgaria', 7500000, '359')
- --Задача 2-5. Да се промени населението на България на 6 милиона.
- UPDATE COUNTRIES
- SET population = 6000000
- WHERE country_code ='BGR'
- --Задача 2-6. Да се изтрият всички редове в таблицата COUNTRIES.
- DELETE FROM COUNTRIES
- --Задача 2-7. Да се изтрие таблицата COUNTRIES от базата данни.
- DROP TABLE COUNTRIES
- --Задача 2-8. Да се изтрие базата данни TESTDB.
- DROP DATABASE TESTDB
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement