SQL

Ce este: SQL
Documentaţie SQL: Microsoft
Documentaţie SQL: Oracle

Microsoft SQL Server Management Studio
Modelarea bazelor de date: ERM.

Cursuri de SQL (free, online):
MVA

Varii tutoriale/articole:
DBDebunk Fabian Pascal.
ORM Terry Halpin.
SQLServer Pro.
SQLAuthority Pinal Dave.
SimpleTalk SQL.
FunctionX SQL Server 2012.
SQL Coffee.

Normalizarea bazelor de date:
A relational model of data for large shared data banks: Edgar F. Codd (pdf).
A simple guide to five normal forms in relational database theory: William Kent.
Primele trei forme normale: Microsoft.

The third manifesto:
C.J. Date, Hugh Darwen: TTM.
RelDB: Dave Voorhis.

Fazele logice ale unei interogări.

Containere Docker: Microsoft SQL Server 2017

Avem nevoie de ceea ce se cheamă un laptop de gaming. De exemplu, eu folosesc sistemul de operare Microsoft Windows 10 Professional (x64), Creators Update, pe o maşină cu procesor Intel® Core™ i7 4720HQ (4 nuclee şi 8 procesoare logice la frecvenţa de 2.6 GHz), cu memorie RAM de 8 GB şi cu stocare HDD de 1 TB. Virtualizarea Hyper-V este activată (vezi Control Panel > Programs > Programs and Features > Turn Windows features on or off).

Serverul de baze de date va funcţiona ca un container Docker-pentru-Linux într-o maşină virtuală Linux (distribuţia Alpine): MobyLinuxVM.

Instalăm Docker for Windows de aici.

Impunem, via Docker (din Taskbar) > Settings > Advanced, dimensiuni ale memoriei RAM de cel puţin 4GB pentru maşina virtuală Linux. Vezi aici.


Containerul serverului de baze de date se instalează, fie din consola CMD (Win + R > cmd, Run as administrator) fie dintr-o fereastră PowerShell, folosind scriptul următor (vezi aici):

docker pull microsoft/mssql-server-linux:2017-latest

Rulăm următoarea comandă din consola CMD:

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=caruta_Acuflori" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 19991:18883 -d microsoft/mssql-server-linux:2017-latest

Parola trebuie să conţină: litere mici şi mari, caractere non-literă. În caz contrar, containerul se va închide! De asemeni, porturile au primit valori nestandard: 19991, 18883.

Găsim id-ul containerului (e4ce3ffd3350):

docker ps

Ne vom conecta la server folosind shell-ul bash (introducem id-ul containerului):

docker exec -it e4ce3ffd3350 "bash"

Suntem root!

Manevrele în serverul de baze de date vor fi realizate via sqlcmd. Astfel, din consola CMD, rulăm scriptul:

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'caruta_Acuflori'

De îndată ce ne-am conectat la server, putem tasta instrucţiunile T-SQL de mai jos:

SELECT @@VERSION AS [versiunea], SUSER_NAME() AS [cine sunt]

Nu uitaţi să adăugaţi GO pe o linie separată, în sqlcmd, pentru a porni execuţia interogării!

Un script interesant:

USE [master] SELECT * FROM master.sys.all_objects AS a CROSS JOIN (SELECT * FROM master.sys.all_objects) AS b ORDER BY a.name DESC OFFSET 0 ROWS FETCH NEXT 1000000 ROWS ONLY

Sistemul de operare din maşina virtuală (în octombrie 2017) este Ubuntu 16.04.3 LTS (Xenial Xerus). După încheierea instalării lui Docker for Windows, versiunea de Ubuntu poate fi găsită rulând următorul script bash:

cat /etc/*-release

Tot via bash, puteţi actualiza sistemul de operare, respectiv instala un editor de text:

apt-get update
apt-get install vim