Przejdź do treści

Microsoft SQL Server – Cheatsheet Windows

Microsoft SQL Server – Cheatsheet Windows / SSMS

Podstawowe polecenia dla Microsoft SQL Server działającego w systemie Windows. Polecenia SQL można wykonywać między innymi w SQL Server Management Studio (SSMS) oraz za pomocą narzędzia sqlcmd.

Logowanie do SQL Server – uwierzytelnianie Windows

sqlcmd -S localhost -E

Parametr -E oznacza użycie aktualnie zalogowanego konta Windows.

Logowanie do SQL Server – login SQL

sqlcmd -S localhost -U sa -P Haslo

Logowanie do konkretnej instancji SQL Server

sqlcmd -S localhost\SQLEXPRESS -E

Sprawdzenie wersji SQL Server

SELECT @@VERSION;
GO

Wyświetlenie nazwy serwera

SELECT @@SERVERNAME;
GO

Wyświetlenie wszystkich baz danych

SELECT name
FROM sys.databases;
GO

Tworzenie bazy danych

CREATE DATABASE Firma;
GO

Przełączenie na bazę danych

USE Firma;
GO

Sprawdzenie aktualnie używanej bazy danych

SELECT DB_NAME();
GO

Usuwanie bazy danych

DROP DATABASE Firma;
GO

Wyświetlenie tabel w bazie danych

SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
GO

Wyświetlenie samych nazw tabel

SELECT name
FROM sys.tables;
GO

Tworzenie tabeli

CREATE TABLE pracownicy
(
    id_os INT IDENTITY(1,1) PRIMARY KEY,
    imie NVARCHAR(50),
    nazwisko NVARCHAR(50),
    plec CHAR(1),
    miasto NVARCHAR(50),
    data_urodzenia DATE,
    wydzial INT,
    data_zatrudnienia DATE,
    data_zwolnienia DATE
);
GO

IDENTITY(1,1) jest odpowiednikiem AUTO_INCREMENT znanego z MySQL. Pierwsza wartość oznacza numer początkowy, a druga wartość określa, o ile zwiększany jest kolejny identyfikator.

Wyświetlenie struktury tabeli

EXEC sp_help 'pracownicy';
GO

Wyświetlenie kolumn tabeli

SELECT
    COLUMN_NAME,
    DATA_TYPE,
    CHARACTER_MAXIMUM_LENGTH,
    IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'pracownicy';
GO

Usuwanie tabeli

DROP TABLE pracownicy;
GO

Dodawanie kolumny do tabeli

ALTER TABLE pracownicy
ADD email NVARCHAR(100);
GO

Usuwanie kolumny z tabeli

ALTER TABLE pracownicy
DROP COLUMN email;
GO

Wprowadzanie danych do tabeli

INSERT INTO pracownicy
(
    imie,
    nazwisko,
    plec,
    miasto,
    data_urodzenia,
    wydzial,
    data_zatrudnienia
)
VALUES
(
    N'Jan',
    N'Kowalski',
    'M',
    N'Wrocław',
    '1995-05-10',
    1,
    '2026-01-10'
);
GO

Przed tekstem zawierającym polskie znaki można stosować N, np. N'Wrocław', szczególnie gdy kolumna ma typ NVARCHAR.

Dodawanie wielu rekordów jednocześnie

INSERT INTO pracownicy (imie, nazwisko, miasto)
VALUES
(N'Jan', N'Kowalski', N'Wrocław'),
(N'Anna', N'Nowak', N'Warszawa'),
(N'Piotr', N'Wiśniewski', N'Poznań');
GO

Pobieranie wszystkich danych z tabeli

SELECT *
FROM pracownicy;
GO

Pobieranie wybranych kolumn

SELECT imie, nazwisko, miasto
FROM pracownicy;
GO

Filtrowanie danych – WHERE

SELECT *
FROM pracownicy
WHERE miasto = N'Wrocław';
GO

Filtrowanie po kilku warunkach

SELECT *
FROM pracownicy
WHERE miasto = N'Wrocław'
AND plec = 'M';
GO

Warunek OR

SELECT *
FROM pracownicy
WHERE miasto = N'Wrocław'
OR miasto = N'Warszawa';
GO

Wyszukiwanie tekstu – LIKE

SELECT *
FROM pracownicy
WHERE nazwisko LIKE N'Kow%';
GO

Powyższe polecenie znajdzie między innymi nazwiska Kowalski, Kowalczyk oraz Kowal.

Sortowanie danych

SELECT *
FROM pracownicy
ORDER BY nazwisko ASC;
GO

ASC – rosnąco, DESC – malejąco.

Pobieranie pierwszych rekordów – TOP

SELECT TOP 10 *
FROM pracownicy;
GO

Usuwanie duplikatów z wyniku – DISTINCT

SELECT DISTINCT miasto
FROM pracownicy;
GO

Modyfikowanie danych

UPDATE pracownicy
SET miasto = N'Warszawa'
WHERE id_os = 3;
GO

Modyfikowanie kilku kolumn

UPDATE pracownicy
SET
    miasto = N'Wrocław',
    wydzial = 2
WHERE id_os = 3;
GO

Usuwanie rekordu

DELETE FROM pracownicy
WHERE id_os = 3;
GO

Usuwanie wszystkich rekordów

DELETE FROM pracownicy;
GO

Szybkie wyczyszczenie tabeli

TRUNCATE TABLE pracownicy;
GO

TRUNCATE TABLE usuwa wszystkie rekordy i resetuje licznik kolumny IDENTITY.

Liczba rekordów

SELECT COUNT(*) AS liczba_pracownikow
FROM pracownicy;
GO

MIN, MAX i AVG

SELECT MIN(wydzial) AS najmniejszy_wydzial
FROM pracownicy;

SELECT MAX(wydzial) AS najwiekszy_wydzial
FROM pracownicy;

SELECT AVG(CAST(wydzial AS DECIMAL(10,2))) AS srednia
FROM pracownicy;
GO

Grupowanie danych – GROUP BY

SELECT miasto, COUNT(*) AS liczba
FROM pracownicy
GROUP BY miasto;
GO

Filtrowanie grup – HAVING

SELECT miasto, COUNT(*) AS liczba
FROM pracownicy
GROUP BY miasto
HAVING COUNT(*) > 2;
GO

Tworzenie drugiej tabeli

CREATE TABLE wydzialy
(
    id_wydzialu INT IDENTITY(1,1) PRIMARY KEY,
    nazwa NVARCHAR(100) NOT NULL
);
GO

Klucz obcy – FOREIGN KEY

ALTER TABLE pracownicy
ADD CONSTRAINT FK_pracownicy_wydzialy
FOREIGN KEY (wydzial)
REFERENCES wydzialy(id_wydzialu);
GO

Łączenie tabel – INNER JOIN

SELECT
    p.imie,
    p.nazwisko,
    w.nazwa AS wydzial
FROM pracownicy p
INNER JOIN wydzialy w
    ON p.wydzial = w.id_wydzialu;
GO

LEFT JOIN

SELECT
    p.imie,
    p.nazwisko,
    w.nazwa AS wydzial
FROM pracownicy p
LEFT JOIN wydzialy w
    ON p.wydzial = w.id_wydzialu;
GO

Tworzenie loginu SQL Server

USE master;
GO

CREATE LOGIN chris
WITH PASSWORD = 'BardzoMocneHaslo123!';
GO

Tworzenie użytkownika w bazie danych

USE Firma;
GO

CREATE USER chris
FOR LOGIN chris;
GO

W SQL Server LOGIN daje możliwość zalogowania się do instancji SQL Server, natomiast USER daje dostęp do konkretnej bazy danych.

Nadanie użytkownikowi prawa odczytu danych

ALTER ROLE db_datareader
ADD MEMBER chris;
GO

Nadanie prawa zapisu danych

ALTER ROLE db_datawriter
ADD MEMBER chris;
GO

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *