S_Madanska

students

Oct 1st, 2020 (edited)
493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 18.51 KB | None | 0 0
  1. --коментар на ред
  2. /*
  3. многоредов
  4. коментар
  5. */
  6.  
  7. ---създай база данни
  8. ---create database m_f_db
  9.  
  10. --команда за използване на база данни
  11. --use m_f_db
  12.  
  13. -----------------------------------------------------------------------------------------------------
  14.  
  15. --създай таблица
  16. CREATE TABLE STUDENTS
  17. (
  18.     FAC_NUM INT NOT NULL,
  19.     NAME VARCHAR(50) NOT NULL,
  20.     PHONE VARCHAR(20) NULL
  21. )
  22.  
  23. -----------------------------------------------------------------------------------------------------
  24.  
  25. --промени таблица като добавиш колона за адрес на студента
  26. ALTER TABLE STUDENTS
  27. ADD ADDRESS VARCHAR(50) NULL
  28.  
  29. --промени таблица като промениш типа данни на колоната за адрес на студента
  30. ALTER TABLE STUDENTS
  31. ALTER COLUMN ADDRESS TEXT NULL
  32.  
  33. --промени таблица като изтриеш колона от нея
  34. ALTER TABLE STUDENTS
  35. DROP COLUMN PHONE
  36.  
  37. -----------------------------------------------------------------------------------------------------
  38.  
  39. --изтрий таблица
  40. DROP TABLE Students
  41.  
  42. --изтрий база данни m_f_db
  43. --DROP DATABASE m_f_db
  44.  
  45. -----------------------------------------------------------------------------------------------------
  46.  
  47. --създаваме наново таблицата, за да изпълним следващите примери:
  48. CREATE TABLE STUDENTS
  49. (
  50.     FAC_NUM INT NOT NULL,
  51.     NAME VARCHAR(50) NOT NULL,
  52.     PHONE VARCHAR(20) NULL
  53. )
  54.  
  55. -----------------------------------------------------------------------------------------------------
  56.  
  57. -- въведи записи(студенти) в таблицата:
  58.  
  59. --а) един запис
  60. INSERT INTO STUDENTS(FAC_NUM, NAME, PHONE)
  61. VALUES (1234, 'ИВАН ГЕОРГИЕВ', '089567')
  62.  
  63. INSERT INTO STUDENTS(FAC_NUM, NAME)
  64. VALUES(1235, 'БОРОВИНКА ПЕТРОВА')
  65.  
  66.  
  67. --б)
  68. INSERT INTO STUDENTS
  69. VALUES (1236, 'ИВА ГЕОРГИЕВА', '+359 895 667 79')
  70.  
  71. INSERT INTO STUDENTS
  72. VALUES(1237, 'МИРА ТОДОРОВА', NULL)
  73.  
  74.  
  75. --в) няколко записа наведнъж
  76. INSERT INTO STUDENTS (FAC_NUM, NAME, PHONE)
  77. VALUES (1238, 'МАРИЯ ИЛИЕВА', '089566779'),
  78.        (1239, 'МАРИ КОСТОВА', '0895667079'),
  79.        (1240, 'ГЕОРГИ СТАМЕНОВ', '089566759')
  80.  
  81. -----------------------------------------------------------------------------------------------------
  82.  
  83. --промени данни за запис(ред) от таблицата            
  84. UPDATE STUDENTS
  85. SET NAME = 'ТАНЯ КОСТОВА'
  86. WHERE FAC_NUM = 1237
  87.  
  88. -----------------------------------------------------------------------------------------------------
  89.  
  90. -- изтрий студент
  91. DELETE FROM STUDENTS
  92. WHERE FAC_NUM = 1239
  93.  
  94. -----------------------------------------------------------------------------------------------------
  95.  
  96. -- извлечи всички студенти
  97. SELECT *
  98. FROM STUDENTS
  99.  
  100. --извлечи само колони име и факултетен номер от таблицата със студенти
  101. SELECT NAME, FAC_NUM
  102. FROM STUDENTS
  103.  
  104. --извлечи студенти, които имат телефон
  105. SELECT FAC_NUM, NAME , PHONE
  106. FROM STUDENTS
  107. WHERE PHONE IS NOT NULL
  108.  
  109. --извлечи студенти, които нямат телефон
  110. SELECT FAC_NUM, NAME , PHONE
  111. FROM STUDENTS
  112. WHERE PHONE IS NULL
  113.  
  114. --извлечи само колони име и факултетен номер от таблицата със студенти, но само за студент с ф.№1236
  115. SELECT NAME, FAC_NUM
  116. FROM STUDENTS
  117. WHERE FAC_NUM=1236
  118.  
  119. --извлечи студенти с ф.№ 1239, ф.№ 1235 и ф.№ 1237
  120. SELECT FAC_NUM, NAME , PHONE
  121. FROM STUDENTS
  122. WHERE FAC_NUM IN (1239,1235,1237)
  123.  
  124.  
  125. -----------------------------------------------------------------------------------------------------
  126.  
  127.  
  128. ----------------------------------------------------------------------
  129. --1. Функции за преобразуване на типове
  130. ----------------------------------------------------------------------
  131. --Пояснение към примерите:
  132.     -- expression – валиден израз, резултатът от който да бъде преобразуван;
  133.     -- string_value - nvarchar(4000) стойност, представяща форматираната стойност, която
  134.     --да бъде преобразувана;
  135.     -- data_type – тип, към който се прави преобразуване;
  136.     -- length – опционен параметър за символните типове данни (низове);
  137.     -- style – стил, използван при преобразуване на дати в низове;
  138.     -- culture – опционен низ, който идентифицира как стойността на string_value да бъде форматирана.
  139.  
  140. ----------CAST (expression AS data_type [ ( length ) ]) ;
  141. -- преобразува стойност (от който и да е тип) в специфициран тип
  142. SELECT CAST(10.3496847 AS money)
  143.  
  144. ----------CONVERT (data_type [ ( length ) ] , expression [ , style])
  145. -- преобразува стойност (от който и да е тип) в специфициран тип
  146. SELECT CONVERT(varchar, GETDATE(), 103)
  147. SELECT CONVERT(datetime, '2019-08-25', 105) -- out-of-range value.
  148. SELECT CONVERT(datetime, '2019-25-08', 105)
  149.  
  150. ----------PARSE (string_value AS data_type [ USING culture ])
  151. -- връща резултата от израз, преведен в искания тип данни          
  152. SELECT PARSE('08/17/2019' AS datetime2) AS Result;
  153. SELECT PARSE('Saturday, 17 August 2019' AS date USING 'en-US') AS Result;
  154. SELECT PARSE('Sat, 17 August 2019' AS date USING 'en-US') AS Result;
  155.  
  156. ------------TRY_CAST (expression AS data_type [ ( length ) ])
  157. --връща стойност, подадена към посочения тип данни, ако промяната успее; в противен случай връща null
  158. SELECT TRY_CAST('08/17/2019' AS date);
  159. SELECT TRY_CAST('08/17/2019 09:54:45' AS date) AS Result;
  160. SELECT TRY_CAST('08/17/2019 09:54:45' AS datetime) AS Result;
  161. SELECT TRY_CAST('08/17/2019 09:54:45' AS datetime2) AS Result;
  162.  
  163. ------------TRY_CONVERT (data_type [ ( length ) ], expression [, style ])
  164. --връща стойност, подадена към посочения тип данни, ако промяната успеe; в противен случай връща null.
  165. SELECT TRY_CONVERT(VARCHAR(15),'08/17/2019',101);
  166. SELECT TRY_CONVERT(date, '08/17/2019') AS Result;
  167. SELECT TRY_CONVERT(date, '08/17/2019 10:05:20') AS Result;
  168. SELECT TRY_CONVERT(datetime, '08/17/2019 10:05:20') AS Result;
  169. SELECT TRY_CONVERT(datetime2, '08/17/2019 10:05:20') AS Result;
  170.  
  171. ------------TRY_PARSE (string_value AS data_type [ USING culture ])
  172. --преобразува израз от string към date/time и number types
  173. SELECT TRY_PARSE('08/17/2019' AS date USING 'en-us');
  174. SELECT TRY_PARSE('08/17/2019 10:18:10 AM' AS date USING 'en-us');
  175.  
  176. SELECT TRY_PARSE('08/17/2019 10:18:10 AM' AS datetime USING 'en-us');
  177. SELECT TRY_PARSE('08/17/2019 10:18:10 AM' AS datetime2 USING 'en-us');
  178.  
  179. ----------------------------------------------------------------------
  180. --2. Функции за дата
  181. ----------------------------------------------------------------------
  182. ------------CURRENT_TIMESTAMP – връща системната дата на сървъра в тип DATETIME;
  183. SELECT CURRENT_TIMESTAMP AS current_date_time;
  184. SELECT CONVERT(char(25), CURRENT_TIMESTAMP) as System_date;
  185.  
  186. ------------GETUTCDATE() – връща текущото UTC време, изчислява се от
  187. --операционната система, на която работи сървъра, в тип DATETIME;
  188. select getutcdate() as System_date;
  189.  
  190. ------------GETDATE() – връща системната дата на сървъра в тип DATETIME;
  191. select getdate()
  192.  
  193. ------------SYSDATETIME() – връща системната дата на сървъра в тип DATETIME2;
  194. SELECT CONVERT (date, SYSDATETIME()) as Date,
  195.        CONVERT (time, SYSDATETIME()) as Time,
  196.        SYSDATETIME() as SysDateTime;
  197.  
  198. ------------SYSUTCDATETIME() – връща текущото UTC време на сървъра в тип DATETIME2;
  199. SELECT CONVERT (date, SYSUTCDATETIME()) as Date,
  200.         CONVERT (time, SYSUTCDATETIME()) as Time,
  201.         SYSDATETIME() as SysDateTime,
  202.         SYSUTCDATETIME() as SysUtcDateTime
  203.  
  204. ------------SYSDATETIMEOFFSET() – връща системната дата и часовия пояс на сървъра в тип DATETIMEOFFSET;
  205. SELECT CONVERT (date, SYSDATETIMEOFFSET()) as Date,
  206.         CONVERT (time, SYSDATETIMEOFFSET()) as Time,
  207.         SYSDATETIMEOFFSET() as SysDateTimeOffSet;
  208.  
  209. ------------DATEADD (datepart, number, date) – връща дата, образувана чрез добавяне към
  210. --датата date, number на брой части datepart;
  211. SELECT DATEADD(year, 1, '2020/08/25') AS DateAdd
  212.  
  213. --DATEDIFF (datepart , startdate , enddate) – връща число, разликата в части от вид
  214. --datepart, между две дати;
  215. SELECT DATEDIFF(MONTH, '2019/08/25', '2018/08/25') AS DateDiff
  216.  
  217. --DATEDIFF_BIG (datepart, startdate, enddate) – връща число, разликата в части от вид
  218. --datepart, между две дати, като върнатото число е от тип BIGINT;
  219. SELECT DATEDIFF_BIG(year,        '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  220. SELECT DATEDIFF_BIG(quarter,     '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  221. SELECT DATEDIFF_BIG(month,       '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  222. SELECT DATEDIFF_BIG(dayofyear,   '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  223. SELECT DATEDIFF_BIG(day,         '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  224. SELECT DATEDIFF_BIG(week,        '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  225. SELECT DATEDIFF_BIG(hour,        '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  226. SELECT DATEDIFF_BIG(minute,      '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  227. SELECT DATEDIFF_BIG(second,      '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  228. SELECT DATEDIFF_BIG(millisecond, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
  229.  
  230. /*DATENAME (datepart, date) – връща като низ съдържанието на конкретна част от
  231. дата. Напр. February, ако месеца в date е февруари и datepart е mm;*/
  232. SELECT DATENAME(month, '2017/08/25') AS DatePartString
  233.  
  234. /*DATEPART (datepart, date) – връща като число съдържанието на конкретна част от
  235. дата. Напр. 2, ако месеца в date е февруари и datepart е mm;*/
  236. SELECT DATEPART(year, '2017/08/25') AS DatePartInt
  237.  
  238. --DAY (date) – връща като число ден от определена дата;
  239. SELECT DAY('2014-02-22') as Day_1,
  240.         DAY('2014-02-22 08:23:49.1234567 +07:10') as Day_2,
  241.         DAY(SYSDATETIME()) as Day_3;
  242.  
  243. --MONTH (date) – връща като число месец от определена дата;
  244. SELECT MONTH('2014-03-01') as Month_1,
  245.         MONTH('2014-03-01 08:38:49.1234567 +07:10') as Month_2,
  246.         MONTH(SYSDATETIME()) as Month_3;
  247.  
  248. --YEAR (date) – връща като число година от определена дата.
  249. SELECT YEAR('2014-03-01') as Result_1,
  250.         YEAR('2014-03-01 17:01:25.1234567 +07:10') as Result_2,
  251.         YEAR(SYSDATETIME()) as Result_3;
  252.  
  253. ----------------------------------------------------------------------------------------------------
  254. --3. Математически функции
  255. ----------------------------------------------------------------------------------------------------
  256. --ABS (numeric_expression) – връща абсолютна стойност, променя отрицателните
  257. --стойности в положителни стойности;
  258. SELECT Abs(-243.5) AS AbsNum;
  259.  
  260. --DEGREES (numeric_expression) – връща съответния ъгъл в градуси, по зададени
  261. --радиани;
  262. SELECT DEGREES(1.5);
  263.  
  264. --RAND ([seed]) – генератор на случайни числа между 0 и 1 или цяло ако е указано
  265. --цялото число seed;
  266. SELECT RAND()
  267.  
  268. --ROUND (numeric_expression, length [, function]) – връща числова стойност,
  269. --закръглена до определена дължина или точност;
  270. SELECT ROUND(235.415, 2) AS RoundValue;
  271.  
  272. --SQRT (float_expression) – връща корен квадратен на зададеното число;
  273. SELECT SQRT(121);
  274.  
  275. --PI() – връща стойността на числото Пи.
  276. SELECT pi() as [Pi number]
  277.  
  278. --SQUARE (float_expression) – връща квадрат на посочената стойност;
  279. SELECT SQUARE(11);
  280.  
  281. --POWER (float_expression , y) – връща стойността на посоченото число на посочената
  282. --степен;
  283. SELECT POWER(4, 2)
  284.  
  285. ----------------------------------------------------------------------------------------------------
  286. --4. Функции за работа с низове
  287. ----------------------------------------------------------------------------------------------------
  288.  
  289. --CONCAT (string_value1, string_value2 [, string_valueN])
  290. -- – връща низ, който е резултат от конкатенацията
  291. -- или сливането на два или повече низа;
  292. SELECT CONCAT ('Ivan', ' ','Asenov') AS FullName;
  293. --LEN (string_expression) – връща броя символи в низа;
  294.  
  295. --LTRIM (character_expression) – премахва интервалите в началото на низа;
  296. SELECT LTRIM('          Four spaces are after the period in this sentence.            ') + 'Next string.'
  297. --RTRIM (character_expression) – премахва интервалите в края на низа;
  298. SELECT RTRIM('          Four spaces are after the period in this sentence.            ') + 'Next string.'
  299. --TRIM(character_expression) – премахва интервалите в началото и края на низа;
  300. SELECT TRIM('          Four spaces are after the period in this sentence.            ') + 'Next string.'
  301.  
  302. --REPLACE (string_expression, string_pattern , string_replacement) – заменя всички
  303. --съвпадения на определен низ с друг низ;
  304. SELECT REPLACE('abcD','abc','3');
  305.  
  306. --REVERSE (character_expression) – обръща низа;
  307. SELECT REVERSE('SQL Tutorial')
  308.  
  309. --SUBSTRING (expression, start, length) – връща част от символен или бинарен израз;
  310. SELECT SUBSTRING('SQL Tutorial', 2, 3) AS ExtractString
  311.  
  312. --LOWER (character_expression) – връща низа, като преобразува главните букви в малки;
  313. SELECT LOWER('SQL Tutorial is FUN!')
  314. --UPPER (character_expression) – връща низа, като преобразува малките букви в главни;
  315. SELECT UPPER('SQL Tutorial is FUN!')
  316.  
  317. ----------------------------------------------------------------------------------------------------
  318. --5.    Системни функции
  319. ----------------------------------------------------------------------------------------------------
  320. --ISNULL (expression, replacement) – ако параметърът expression бъде изчислен до
  321. --NULL, той се заменя от израза replacement;
  322. SELECT ISNULL(NULL, 'W3Schools.com');
  323.  
  324. --ISNUMERIC (expression) – връща 1, ако изразът се изчислява до числов тип, и 0 - в противен случай;
  325. SELECT ISNUMERIC(4567);
  326.  
  327. --IIF (boolean_expression, true_value, false_value) – изчислява първия аргумент и връща
  328. --втория аргумент, ако първият аргумент е true, в противен случай връща втория аргумент;
  329. SELECT IIF(500<1000, 'YES', 'NO');
  330.  
  331. --HOST_NAME() – връща името на работната станция;
  332. --select HOST_NAME() as Host_name;
  333.  
  334. --HOST_ID() – връща идентификатора на работната станция. Идентификационният
  335. --номер на работната станция е идентификационният номер на процеса (PID) на
  336. --приложението на клиентския компютър, който се свързва към SQL Server.
  337. --select HOST_ID() as Host_number;
  338.  
  339. ----любознателните могат да намерят още примери тук: tsql.info;  w3schools.com
  340.  
  341.  
  342.  
  343. ----------------------------------------------------------------------------------------------------
  344. ----2.9.    Задачи
  345. ----------------------------------------------------------------------------------------------------
  346. --/Задача 2-1. Да се създаде база от данни с име TESTDB. -- нямате подобни права/
  347.  
  348. --Задача 2-2. Да се създаде таблица в тази база данни с име COUNTRIES и следните колони:
  349. --country_code – с тип char(3);
  350. --name – тип varchar(40);
  351. --population – тип int.
  352.  
  353. CREATE TABLE COUNTRIES
  354. (
  355.     country_code char(3) NOT NULL PRIMARY KEY,  
  356.     name varchar(40) NOT NULL,
  357.     population int
  358. )
  359.  
  360. --Задача 2-3. Да се добави нов атрибут в таблицата COUNTRIES
  361. --с име phone_code и тип цяло число до 3  / или низ с фиксирана дължина от 3 цифри.
  362.  
  363. --Задача 2-4. Да се добави ред в таблицата COUNTRIES със следните данни:
  364. --country_code: BGR;
  365. --name: България;
  366. --population: 7500000;
  367. --phone_code: 359.
  368.  
  369. --Задача 2-5. Да се промени населението на България на 6 милиона.
  370.  
  371. --Задача 2-6. Да се изтрият всички редове в таблицата COUNTRIES.
  372.  
  373. --Задача 2-7. Да се изтрие таблицата COUNTRIES от базата данни.
  374.  
  375. --/Задача 2-8. Да се изтрие базата данни TESTDB. -- нямате подобни права/
  376.  
Add Comment
Please, Sign In to add comment