Database
 sql >> база данни >  >> RDS >> Database

SQL Cheat Sheet:Какво е SQL, SQL команди и SQL инжекция

Използването на Structured Query Language (SQL) в началото може да изглежда сложно, но впоследствие ще стане по-лесно и много по-удобно. Нуждаете се само от практика.

Ако търсите по-добри начини за управление на данни във вашата база данни или ако просто сте любопитни за възможностите, които SQL ви отваря, значи сте попаднали на правилното място!

Защо SQL?

Повечето хора са чували за SQL, но може да не са напълно запознати с неговата работа. Можете да мислите за SQL като специален език за разговор с бази данни. Тъй като компютрите не разбират естествени езици като английския, имате нужда от начин за превод. И тук имаме SQ да командва базите данни да представят някои данни или да съхраняват нови данни. Използват го различни бази данни, като Oracle, Microsoft SQL Server, IBM DB2, MySQL, PostgreSQL и др.

SQL ни позволява да извличаме, вмъкваме, актуализираме и изтриваме данни от бази данни с помощта на SQL заявки. SQL заявката използва думи, наречени клаузи. Клаузите се състоят от няколко елемента, които работят заедно, за да извършат някакво действие в базата данни. Трите най-често срещани клаузи са SELECT, UPDATE и DELETE. Ще ги намерите в почти всеки SQL израз.

Нека вземем най-основния синтаксис на заявката:

SELECT * FROM table_name;

Тази заявка ще избере всички данни, съхранявани в конкретната таблица. Звездичката (*) показва, че всички колони в тази таблица трябва да бъдат върнати, без значение колко от тях има таблицата.

Шамба за SQL заявка:Какви команди има?

Тук ви представяме селекция от най-често използваните SQL команди и клаузи, които ще ви трябват, докато работите с бази данни. Да започнем.

SQL СЪЗДАВАНЕ НА БАЗА ДАННИ

Не можете да направите много в SQL без база данни, така че е най-добре първо да го премахнете.

СЪЗДАВАНЕ НА БАЗА ДАННИ е команда за създаване на нови бази данни на вашия сървър. Например, искате ново начало без съществуващи таблици или данни. Синтаксисът е по-долу:

CREATE DATABASE testDB;

SQL СЪЗДАВАНЕ НА ТАБЛИЦА

Релационните бази данни съхраняват данните в таблици. По този начин, за да използваме нашите бази данни, трябва да създадем таблици в тях. Тази операция е тясно свързана с промяна на структурите на таблици, например, преименуване на колони, добавяне на нови колони, премахване на колони и т.н.

Но промяната на таблицата е възможна само за съществуваща. По този начин първо ще трябва да СЪЗДАДЕТЕ ТАБЛИЦА. Друга свързана команда е ADD COLUMN, която ще ви позволи да добавите допълнителни колони към съществуваща таблица.

CREATE TABLE [dbo].[Students](
	[Name] [nvarchar](100) NOT NULL,
	[Bio] [ntext] NULL,
	[DateOfBirth] [datetime] NOT NULL,
);

SQL DROP TABLE

Има време и място за изтриване на таблици и никога не е добра идея да го правите по прищявка. DROP TABLE премахва цяла таблица с всички нейни записи, индекси и ограничения от базата данни.

Няма начин да възстановите таблица, след като сте я изпуснали. Уверете се, че имате нужда и искате да премахнете тази конкретна таблица. В противен случай единствената възможност за възстановяване на данните е да ги възстановите от архив.

DROP TABLE [dbo].[Students];

SQL SELECT

Може би най-често използваната функция в SQL е Select. Целта му е да извлече данни от една или повече таблици за по-нататъшна манипулация и анализ. Тази функционалност позволява на потребителите да изолират и анализират подмножества от данни (таблици), като посочат различни атрибути (филтри).

За да изберете група от редове, вие пишете заявка, която идентифицира кои редове трябва да бъдат върнати, въз основа на един или повече филтри. Филтрите се задават от произволен брой различни функции или изрази, комбинирани с други операции според вашите цели.

SELECT TOP (1000) [Name]
      ,[Phone]
      ,[Website]
      ,[Address]
      ,[City]
      ,[State]
      ,[Country]
      ,[Description]
      ,[Employees]
FROM [test].[dbo].[company]

SQL INSERT

Функцията INSERT вмъква редове с данни в таблица в SQL. Основната структура на този израз определя таблицата за добавяне на данни към и колоните да включи тези данни. След това той дефинира всяка стойност които трябва да бъдат поставени във всяка колона в този ред. Ако просто се учите как да използвате SQL, може да изглежда объркващо, но с известна практика става много по-лесно.

INSERT INTO [dbo].[company]
           ([Name]
           ,[Phone]
           ,[Website]
           ,[Address]
           ,[City]
           ,[State]
           ,[Country]
           ,[Description]
           ,[Employees])
     VALUES(
           'NameValue'
           ,'PhoneValue'
           ,'WebsiteValue'
           , 'AddressValue'
           , 'CityValue'
           , 'StateValue'
           , 'CountryValue'
           , 'DescriptionValue'
           , 2 ) 

Актуализиране на SQL

Инструкцията UPDATE е необходима, когато искаме да променим данните, съхранявани в таблици. Това е и един от най-често използваните SQL изрази, приложими както за обикновен ред, така и за множество записи.

Синтаксисът по подразбиране включва компонентите SET и WHERE. ЗАДАВАНЕ определя как трябва да се актуализират записите и КЪДЕ определя кои записи трябва да бъдат актуализирани. Без клаузата WHERE, командата ще актуализира всички записи в таблицата.

UPDATE [dbo].[company]
   SET [Name] = <Name, nvarchar(max),>
      ,[Phone] = <Phone, nvarchar(max),>
      ,[Website] = <Website, nvarchar(max),>
      ,[Address] = <Address, nvarchar(max),>
      ,[City] = <City, nvarchar(max),>
      ,[State] = <State, nvarchar(max),>
      ,[Country] = <Country, nvarchar(max),>
      ,[Description] = <Description, nvarchar(max),>
      ,[Employees] = <Employees, int,>
 WHERE <Search Conditions,,>

SQL AVG

Функцията AVG връща средната стойност от числови стойности в колона като цяло число или число с плаваща запетая. Както при повечето SQL функции, той може да бъде част от оператор SELECT или оператор INSERT. Когато се използва в израза SELECT, той трябва да бъде в скоби. По-долу можете да видите примера за заявка с AVG(), който трябва да върне средната възраст за всички служители:

SELECT avg(age) FROM employee;

SQL SUM

Функцията SUM връща сумата от всички стойности в колона. Това е много полезно, когато работите с множество колони. Резултатът ще бъде общ преглед на тази таблица, който събира всички данни в нея.

SELECT  Sum(Employees) as Sum, 
		AVG(Employees) as AVG,
		MAX(Employees) as Max, 
		MIN(Employees) as Min
FROM [test].[dbo].[company]

SQL ПОРЪЧАЙ ПО

SQL има много оператори, но един от най-често използваните е ORDER BY. Той сортира данните според посочения израз. Следователно, ако вашият набор от данни съдържа множество записи с подобни стойности, те ще бъдат сортирани според вашите предпочитания.

С други думи, операторът ORDER BY в SQL е оператор за сравнение. Позволява ви да сравнявате стойности от една колона със стойности от друга колона и да връщате резултатите, както са подредени от това сравнение.

Синтаксисът е ORDER BY име на колона . Може да е полезно, ако трябва да намерите информация по сортиран начин. Например, когато търсите редове със същата стойност или когато определяте кои редове са най-популярни.

SELECT * FROM Readers
ORDER BY City;

SQL ГРУПА ПО

Операторът GROUP BY е много важен и полезен инструмент в SQL. Може да се използва за групиране на редовете с данни, които споделят някаква обща характеристика или свойство. Следователно сортира редовете по една или повече колони, посочени в заявката. Тази клауза обикновено се поставя в края на SQL израза, след като всички други клаузи се изпълняват.

Типичен случай е използването на GROUP BY за обобщаване на данни във вашата база данни. Инструкцията SELECT използва клаузата WHERE, за да филтрира нежелани записи от набора от резултати, а след това използва клаузата GROUP BY за групиране на свързани записи заедно въз основа на някаква характеристика, която сте посочили.

SELECT * FROM Readers
GROUP BY Country;

SQL инжекция

Всеки уеб програмист е чувал за атаки с инжектиране на SQL. Те са бичът на Интернет, оставяйки дълбоки рани в много популярни уебсайтове и приложения, чието лечение може да отнеме години. Ако искате да не станете жертва на тези атаки, важно е да разберете какви са те, как работят и какво можете да направите, за да се предпазите от тях в бъдеще.

Ако не сте запознати с атаките с инжектиране на SQL, вашето уеб приложение може да е уязвимо към тях. Заплахата е достатъчно сериозна, за да предизвика нова технология за откриване на подобни атаки. Разчитането на технологиите обаче не е достатъчно. За да помогнем на професионалистите по сигурността, съставихме удобен лист за мами, който обяснява как работи SQL инжекцията на обикновен английски.

Нападателите изпълняват неоторизирани заявки, за да получат достъп до чувствителни данни, да променят съществуваща база данни или да изтрият данни. По този начин SQL инжектирането е техника за инжектиране на код, която атакува приложения, управлявани от данни, където злонамерени SQL изрази се вмъкват в поле за въвеждане за изпълнение (обикновено чрез HTTP заявка).

Успешната атака дава на нападателя достъп до всички сървъри на база данни на този уебсайт. Веднъж вътре, нападателят може да извлече съдържанието на бази данни, да ги промени или дори да ги унищожи. Ето защо е толкова важно за уеб разработчиците да разберат как техният език за програмиране прави SQL инжекциите по-лесни или по-трудни за потенциалните нападатели.

Има два основни типа атаки с инжектиране на SQL:базирани на грешки и сляп .

Атака, базирана на грешки, възниква, когато разработчикът не дезинфекцира въведеното от потребителя. Това води до предаване на лоши данни на интерпретатор и причинява грешки (или неочаквано поведение) за легитимни потребители. Причината за атака, базирана на грешки, често е лесно да се види. Той ще бъде регистриран в регистрационните файлове за грешки или ще се покаже като грешка по време на тестване.

Тези видове атаки се случват и поради лош процес на преглед на кода – ако един кодер остави код за отстраняване на грешки в скрипта, други ще го стартират, без да знаят за възможни проблеми.

Ако забележите грешки в базата данни или друго странно поведение на уебсайта си, може да имате проблем с инжектирането на SQL!

Заключение

Разбира се, всеки специалист по база данни, който използва SQL в работата, трябва да знае всички тези команди наизуст. И все пак, да ги имате като обикновена измама под ръка, също е полезно. Чувствайте се свободни да споделите вашите съображения и професионални трикове в секцията за коментари по-долу!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Понякога МОЖЕТЕ да увеличите колона на място

  2. Разбиране на групата за повторен дневник срещу файл срещу член

  3. IGNORE_DUP_KEY по-бавно при клъстерирани индекси

  4. Методологии за тестване на ефективността:Откриване на нов начин

  5. Prisma, как да изчистя базата данни