Jump to content

Samnick

Administrators
  • Posts

    36
  • Joined

  • Last visited

  • Days Won

    8

Everything posted by Samnick

  1. Samnick

    Win SCP

    na ftp servery na win najdeš na google hromadu navodu
  2. Samnick

    ox_inventory

    https://overextended.github.io/docs/ox_inventory/ Zde je návod, udělej to podle návodů zde a případně napiš co konkrétně děláš, jak to delas a co máš případne za error.
  3. Samnick

    Medicbag item

    More info, zkus nám říct více, třeba framework, paid, free a víc tech. info o tvém serveru.
  4. Samnick

    Win SCP

    nevím co znamená "jak založit WIN" Proste si nainstaluj nějaký ftp server
  5. Samnick

    ox_inventory

    Ve scriptu je kontrola jobu, to odeber
  6. Samnick

    Win SCP

    Nevím zda si uvědomuješ co vlastně chceš udělat a co je winscp. Aby jsi toto mohl na 100% udelat tak by jsi potřeboval opravdu veřejnou ipv4(6) adresu(mnoho lidi si myslí že jí ma a vlastně nemá), na svém síťovém zařízení měl nastavený routing portu na tvuj počítač, na počítači povolený ten port a pak to zásadnější, nějaký ftp server se správou uživatelů. To co by jsi ty rád bohatě a 1000x bezpečnejsi pro tebe zajištuje GIT, nauč se sním pracovat a budeš mít vystarano a nebudeš muset delat obrovnou bezpečnostní díru do svého pc a to nemluvím že bude moci nahravat jen když tvuj pc bude zapnutý a bude mít net...
  7. more info
  8. Faktura je mozna?
  9. Důležitým aspektem jsou znalosti, bez znalostí to nikam nepovede. nelze jít dělat maturitu když se člověk neučil. Dopadne to fiaskem. Chce-li se člověk tomu věnovat, je nejprve potřeba znát základy a pak rozvíjet znalosti a až pak přemýšlet nad serverem, na studium LUA není potřeba fivem server.
  10. Jednotlivé příkazy které spustíme v BASH a jsou spuštěny tak, že čekají na ukončení. (Tzn: že běží stále) běží vždy dokud nejsou násilně ukončeny nebo není uzavřeno spojení s BASH. Příklad: Když spustíme FiveM server, tak daný script běží do doby než nastanou tyto tři možnosti: Server není ukončen chybou scriptu Server není ukončen ze strany uživatele Server není ukončen dokud není ukončeno spojení s BASH Cílem je tedy potřeba spustit script tak aby běžel i po ukončení BASH spojení. Pro tuto potřebu se nejčastěji používá příkaz SCREEN Příkaz "screen" je nástroj pro práci s více okny nebo terminály v jednom sezení. Screen umožňuje uživatelům vytvářet, spouštět a přepínat mezi více pracovními plochami (tzv. "screens"), což umožňuje uživatelům spustit více úkolů nezávisle na sobě v jednom sezení terminálu. Ukázkové použití pro FiveM server Zapnutí serveru pomocí screen screen -L -d -m -S NazevServeru bash /cesta/k/nasemu/serveru/fivem_server/run.sh +set serverProfile dev_server +set txAdminPort 40120 Parametry: -L Tento parametr umožňuje zapnout záznam výstupu ze screenu do souboru. Po zapnutí této funkce bude každý výstup z screenového sezení zapsán do souboru "screenlog.n", kde "n" je číslo screenu. -d session_name: Tento parametr umožňuje uživateli odpojit se od aktivního screenu s daným názvem, aniž by zastavil běžící procesy v tomto screenovém sezení. -m: Tento parametr umožňuje uživateli spustit nový proces v novém screenovém sezení, aniž by bylo třeba se připojovat k němu. Tento režim je užitečný pro spuštění skriptů nebo programů na pozadí, aniž by uživatel musel být aktivně připojen k screenu. -S session_name: Tento parametr umožňuje uživateli specifikovat název screenu pro vytvoření nového sezení. Vypnutí serveru pomocí screen screen -X -S NazevServeru kill -S session_name: Tento parametr umožňuje uživateli specifikovat název screenu pro vytvoření nového sezení. -X: Tento parametr umožňuje uživateli posílat příkazy do běžícího screenového sezení. + použijeme příkaz kill screen -X -S NazevServeru [command] Pozor! Příkaz screen nemusí být v základní instalaci vaší distribuce nainstalován. V případě že nelze přípak použít, musíte si program screen nainstalovat pomocí vašeho balíčkovacího systému. Například: apt-get install screen #nebo yum install screen
  11. V nastavení repozotáře najdeš položku webhook Jen je potřeba za URL dodat /github Ukázková url: https://discord.com/api/webhooks/101263453245sadghsakdjlgsafdkjsadgfsdakjWyPVZdOJYBOQile2-MXsadkjglsakjdm6bo25C3RjP/github
  12. Zkoušel jsi jejich dokumentaci? https://docs.illenium.dev/free-resources/illenium-appearance/installation/esx/#install-dependencies
  13. shell není jen příkazový řádek pro jednotlivé příkazy je to programovací jazyk pro psaní skriptů skript je soubor obsahující posloupnost příkazů Nezáleží na koncovce, nemusí být, je zvykem .sh Na prvním řádku označení interpretu (jaký program má tento skript zpracovat) BASH (shell): #!/bin/bash Např PHP #!/bin/php -f Existují dva druhy příkazů interní příkazy BASHe externí programy Základy SHELLu Obvykle 1 příkaz na řádek více příkazů na řádek cd /; echo “Text“; mkdir samnick Jeden příkaz na více řádků (pro přehlednost) prikaz --parametr1 --parametr2 \ --parametr3 Komentář: # Parametry Parametry jsou odděleny mezerou ./skript.sh parametr1 parametr2 Parametr uzavřeme do uvozovek ./skript.sh “toto je parametr 1“ parametr2 Pozor na víceslovné adresáře a soubory cat Program Files\soubor.txt Ve skript se k hodnotám parametrů dostaneme přes $N $1 – první parametr $2 – druhý parametr atd. $0 – název skriptu (skript.sh) $$ - PID aktuálního procesu $# - počet parametrů Proměnné Vytvoření proměnné zadáním hodnoty Nepsaným standardem je psát proměnné velkými písmeny CESTA=/files/server SOUBOR=“$1“ ZDROJ=“$CESTA/$SOUBOR“ CIL=/fivem cp “$ZDROJ“ “$CIL“ Pozor na víceslovné hodnoty Je vždy lepší používat uvozovky Tento příkaz nefunguje a výsledkem je něco jiného SOUBOR=nazev souboru Složitější situace s názvem proměnné a následujícího textu echo $PREFIX_nasledujici_text # špatně echo ${PREFIX}_nasledujici_text Pro získání výstupu příkazu se používá opačný apostrof ` ADRESAR=`pwd` POCET=`ls $ADRESAR | wc -l` echo “v adresari $ADRESAR je $POCET souboru“ Přečtení jedné hodnoty = čte řádek ze vstupu, tj. čeká na ENTER echo -n “Zadej sve jmeno: “ read JMENO echo “Tve jmeno je $JMENO“ Příkaz test = [] Příkaz test vyhodnocuje logickou podmínku Podle toho vrátí návratovou hodnotu (0 = true) Zkrácený zápis pomocí závorek [] Pozor na mezery kolem závorek a operátorů!!! test “$1“ == “fivem“ [ “$1“ == “fivem“ ] # stejný zápis Příklad [ -n “$1“ ] || ( echo “První parametr je prazdny“; exit 1 ) if if podminka; then command elif podminka; then command fi Zavolá se příkaz podmínka, rozhoduje se dle návratové hodnoty if [ -f “$1“ ]; then echo “Vypis souboru $1“; cat “$1“ else echo “Soubor neexistuje“ exit 1 fi for for PROM in VSTUP; do echo $PROM done Postupně bere slova za in (odděleno mezerami) a dosazuje to do proměnné PROM for ROK in 2001 2002 2003 2004; do mkdir rok_$ROK done Použití většího interval for ROK in `seq 2001 2020`; do ... cyklus se soubory v adresáři for folder in *.txt; do # komentar if [ ! -f “$folder“ ]; then continue; fi # pauza if [ “$folder“ = “end.txt“ ]; then break; fi echo “je tu soubor $folder“ done while Opakuje cyklus dokud je splněna podmínka, takže volaný příkaz v podmínce má návratovou hodnotu 0 Upřesnění příkazu read Uvedením názvů více proměnný se vstup rozdělí dle mezer Do poslední proměnné se dá zbytek z řádku na vstupu Read vrací 0, když je ještě něco na vstupu, 1 znamená konec while read JMENO PRIJMENI; do echo “jmeno: $JMENO, prijmeni: $PRIJMENI“ done Pozn: musíme ale počítat že jsou na vstupu dodány dva parametry subshell Pomocí kulatých závorek lze spustit subshell a pracovat s jeho vstupem a výstupem. Např. chceme číst řádky ze souboru a s nimi postupně provádět další operace cat /etc/passwd | ( while read -d “:“ UZIV FOO; do echo “uzivatel: $UZIV“ done ) > vystup.txt Parametrem -d změníme oddělování funkce - podprogramy V případě používání funkcí jsou parametry $1, $2 atd. parametry funkce a nikoliv skriptu. Ve funkci se nelze dostat k parametrům scriptu. Ostatní proměnné jsou globální. FIVEM=/fivem start() { tar jcf $FIVEM/$1.tar.bz $2 } start scipts /fivem_scipts start data /fivem_data V příloze jsou uloženy dvě PDF kde jsou podrobnosti bash_script.pdf bash_ocima_bohdana_milara.pdf
  14. Pro práci se základními příkazy budeme potřebovat BASH - interpret příkazového řádku. Nejčastějším nástrojem pro vzdálené připojení k OS s BASH z OS Windows je např: SSH, Putty, mRemoteNG. Mnoho začínajících uživatelů již při připojování zaskočí že nevidí zda-li píšou heslo, nebo alespon zástupné *** znaky. Bash nepoužívá při zadávání hesla ani jiných citlivých údajů standardní výstup na obrazovce, aby se zabránilo jejich zobrazení nebo zaznamenání. Místo toho Bash používá speciální techniku nazývanou "přímý výstup" (angl. "direct output"), když uživatel zadává heslo, kód se automaticky skryje a na obrazovce se nezobrazuje. MAN Téměř každý příkaz v Linuxu má své parametry, dle kterých defingujeme způsob výstupu daného příkazu. Aby nebylo potřeba si všechny parametry pamatovat, můžeme nejčastěji použít příkaz -help Ale pro náročnější uživatele a celkové pochopení parametrů jsou nám k většině příkazů dostupné manuálové stránky. Parametry uvedené v hranatých závorkách nejsou povinné. Je-li v závorkách uvedeno několik možností oddělených svislou čárou (znak | „ pajpa “), znamená to, že si můžeme vybrat jen jednu z nabízených možností parametru Pozor! Linux je case sensitive!! "a" není "A" Adresářová struktura Aktuální adresář - ten existuje vždy, neexistuje možnost nebýt v aktuálním adresáře můžeme používat: relativní cesty cd ../../.. cat mujpodadresar/fivem.txt absolutní cesty cat /home/mujpodadresar/fivem.txt Spustitelný soubor se nehledá v aktuálním adresáři ale hledá se v cestách z proměnné PATH (= proměnná daného prostředí) # prikaz.sh i když existuje prikaz.sh, nespustí se musí se explicitně říct, že chcete pustit soubor v aktuálním adresáři ./prikaz.sh „.“ je aktuální adresář Soubory a složky v Linuxu je všechno soubor, neexistuje složka, skutečné soubory jsou data na disku Adresář - je jen soubor se seznamem souborů a informací Sokety - jsou soubory, které reprezentují síťové spojení Zařízení - disky, partition , klávesnice, periferie Protože je vše reprezentováno jako soubor, lze se vším pracovat způsobem: open, close, read, write, delete Linux nelpí na koncovkách, jsou mu zcela jedno. Spustitelný soubor nemá žádnou koncovku "exe". Spustitelný je, pokud má nastavený příznak (x) v oprávnění souboru. Zástupné znaky Zástupné znaky lze používat i na úrovni bash Shell vždy rozloží příkaz, která až následně vyvolá a zpracuje. * - cokoliv, i nic ? - jeden znak [a-f], [0-9] – jen určitý znak z dané množiny cat *.txt je ve skutečnosti: # cat a.txt b.txt c.txt ..atd Vstupy a výstupy Každý proces v Linux má 2 vstupy a 3 výstupy Vstupy (do procesu vstupuje) parametry na příkazovém řádku standardní vstup (stdin) Výstupy standardní výstup (stdout) chybový výstup (stderr) návratová hodnoty ● stdin, stdout a strerr lze různě propojovat a přesměrovávat a ukládat Ve výchozím stavu je v Linuxu stdin napojen vždy na klávesnici program < vstup.txt roura (pipe) | (pajpa) propojí stdout procesu nalevo se stdin procesu vpravo cat vstup.txt | grep ‚pepa‘ Pajp může být více a slouží k různému „filtrování“ a hledání v obsahu (např logu) Několik primitivních prográmků se spojí v silný nástroj cat soubor.txt | grep “Jiri“ | sort | head -n 10 Vezme jen řádky obsahující „Jiri“, setřídí, vypíše prvních 10 Např cat soubor.txt | bzip2 > soubor.txt.bz2 Ve výchozím stavu je vždy v Linuxu stdout nasměrován na obrazovku (terminál) program > vysledky.txt přesměrování do souboru (soubor se vytvoří či přepíše) program >> vysledky.txt přidání na konec souboru Např yes >> yes Přesměrování na vstup jiného programu (roura) program | tee vysledek.txt tee čte vstup, zapisuje jej do souboru a posílá na výstup STDERR - Proč má Linux dvě výstupové hodnoty? Proč nestačí mít jen jednu? Standardně nechceme aby se nám míchal obsah výstupu. Cílem je oddělit standardní výstup a chybový výstup program > vystup.txt výstup končí v souboru, chyby se vypisují na obrazovku program 2> chyby.txt výstup končí na obrazovce, chyby se zapisují do souboru program 2>&1 > vystup.txt obojí dostanu do souboru, nejprve přesměruji stderr do stdout, stdout pak do souboru Ukázka základních příkazů: man, cd, pwd, mkdir, rmdir, ls, cat, chmod/chown, reboot, date, free, uptime, top/htop, kill, nice, ps, time, useradd, su, passwd, host, ping man: zobrazí nápovědu k danému příkazu man ls cd: změní aktuální pracovní adresář cd /home/user/directory pwd: zobrazí aktuální pracovní adresář pwd mkdir: vytvoří nový adresář mkdir new_directory rmdir: odstraní prázdný adresář rmdir empty_directory ls: vypíše obsah aktuálního adresáře ls cat: vypíše obsah souboru cat file.txt chmod/chown: změní oprávnění přístupu nebo vlastníka souboru/adresáře chmod 755 file.txt chown user:group file.txt reboot: restartuje systém reboot date: zobrazí aktuální datum a čas date free: zobrazí informace o paměti free uptime: zobrazí čas běhu systému uptime top/htop: zobrazí informace o běžících procesech a jejich využití systémových zdrojů top htop kill: ukončí běžící proces kill 1234 nice: nastavuje prioritu běžícího procesu nice -n 10 command ps: zobrazí seznam běžících procesů ps aux time: měří časovou náročnost běžícího procesu time command useradd: vytvoří nového uživatele useradd newuser su: přepíná uživatele su username passwd: změní heslo uživatele passwd username host: zobrazí informace o doméně host example.com ping: testuje konektivitu sítě ping google.com
  15. Na začátek si musíme říct že Linux není jen ta černá console/terminál kde bliká kurzor kam se cosi píše a Linux to udělá. Linux je operační systém založený na jádře Linux, který byl původně vytvořen Linusem Torvaldsem v roce 1991. Je to svobodný a otevřený software, což znamená, že uživatelé mají svobodu spouštět, kopírovat, distribuovat, studovat, změnit a vylepšovat software. Pro práci s Linuxem je důležité mít určité znalosti a dovednosti, jako je práce s příkazovým řádkem, správa balíčků a souborového systému. Nicméně existují také grafická uživatelská rozhraní pro Linux, která umožňují práci s operačním systémem bez nutnosti znalostí příkazové řádky, ale tyto grafické nadstavby jsou určeny spíše pro osobní počítače, než-li pro serverové využití. Linux tedy můžeme dál upravovat i prodávat, ale tento scénář se neděje. Protože licenční model je postaven tak, že pokud chcete upravit Linux a distribuovat ho dále, musíte zajistit, že vaše verze Linuxu bude stále svobodná a otevřená. To znamená, že musíte poskytnout zdrojový kód vaší verze Linuxu a zaručit, že každý, kdo dostane vaši verzi Linuxu, má stejné práva jako vy, včetně práva upravovat a distribuovat software dále. Standardně se pak používá model na bázi supportu, OS je free, ale support je paid. Linux se dodává v mnoha různých distribucích, což jsou různé verze operačního systému, které se liší v závislosti na způsobu instalace, balíčkovacím systému a správě softwaru. Mezi nejznámější distribuce patří Ubuntu, Debian, Red Hat, Fedora a CentOS. Linux je možné používat na velké sféře zařízení a účelem použití. Může být osobním počítači, serveru, mobilním zařízení, superpočítače či různé BYOD zařízení. Linux můžeme používat i na Desktop počítačích, tedy jako standardní OS pro práci s počítačem. Pro tyto účely bylo vytvořeno velké množství grafických nadstaveb pro Linux. Nejznámější jsou: GNOME, KDE, Xfce, LXDE, Unity(Pozor, neplést si s game engine). Občas můžeme vidět několik dalších zkratek jako je UNIX, GNU, BASH, Kernel, KDE a nebo Xfce. Níže se popíšeme co znamenají. UNIX Unix je starší operační systém, který byl původně vyvinut v AT&T Bell Labs v roce 1969. Unix je uzavřený operační systém a jeho zdrojový kód není volně dostupný. Unix byl původně určen pro minipočítače a vysokovýkonné počítače. Unix byl původně navržen pro architekturu procesorů typu minipočítačů a vysokovýkonných počítačů (Nikoliv tedy pro x86). Závěrem lze říci, že Linux a Unix jsou oba operační systémy s podobnými funkcemi, ale liší se v mnoha klíčových oblastech, jako je licence, zdrojový kód, architektura, rozšiřitelnost a dostupnost. GNU GNU je projekt svobodného software, který byl založen Richardem Stallmanem v roce 1983. GNU je zkratka pro "GNU's Not Unix" (GNU není Unix). Cílem projektu GNU bylo vytvořit kompletní operační systém s otevřeným zdrojovým kódem, který by byl kompatibilní s Unixem, ale bez závislosti na Unixových licenčních podmínkách. GNU je také spojeno s konceptem copyleft, což je právní mechanismus pro ochranu svobodného softwaru. Copyleft zajišťuje, že jakýkoli software vytvořený na základě GNU projektu musí zůstat svobodný a otevřený pro další uživatele. Projekt GNU je dnes velmi rozšířený a mnoho moderních operačních systémů, jako je právě Linux, používá mnoho komponentů z projektu GNU. V současné době je projekt GNU stále aktivní a pokračuje ve vývoji a šíření svobodného softwaru. Proto je často používáno spojení GNU/Linux BASH Bash (Bourne-Again SHell) je příkazový interpret a skriptovací jazyk pro Unixové a Unixově podobné operační systémy, včetně Linuxu. Bash je standardním příkazovým interpretem pro většinu distribucí Linuxu a je také součástí macOS. Bash umožňuje uživatelům spouštět příkazy v příkazové řádce nebo vytvářet skripty, což jsou soubory obsahující seznam příkazů, které mohou být spuštěny jako celek. Bash podporuje mnoho příkazů a funkcí, které umožňují uživatelům automatizovat různé úkoly nebo interagovat s operačním systémem a souborovým systémem. Více o BASH je v dalším díle Linux - Základní příkazy Kernel Kernel (česky jádro) je základní část operačního systému, která představuje prostředníka mezi hardwarem počítače a softwarovými aplikacemi běžícími na tomto počítači. Jádro operačního systému řídí všechny aspekty systému, včetně správy paměti, správy procesů, vstupů a výstupů, sítě, správy souborů a zařízení a dalších funkcí. Poskytuje také rozhraní pro komunikaci mezi aplikacemi a hardwarem. Linux jádro (kernel) existuje pouze jedno. Na společném vývoji pracují desítky/stovky firem a vývojářů. KDE a Xfce: jsou další populární grafické uživatelské rozhraní pro Linux. KDE je to velmi konfigurovatelné rozhraní, které umožňuje uživatelům přizpůsobit vzhled a chování systému podle svých potřeb. KDE používá mnoho widgetů a efektů, což umožňuje uživatelům pracovat s více aplikacemi najednou. Xfce je lehké grafické uživatelské rozhraní pro Linux, které je ideální pro starší počítače a zařízení s omezenými prostředky. Xfce má jednoduchý a elegantní vzhled a nabízí uživatelům snadný přístup k aplikacím a funkcím. Trocha čísel: Podle statistik je poměr mezi Linuxem a Windows na osobních PC stále poměrně výrazný. Podle odhadů používá Linux na osobních počítačích méně než 2% uživatelů, zatímco Windows používá přes 75% uživatelů. Zbylých 23% je macOS, Chrome OS. Mnohem lepší situace pro Linux je pak ale ve využití jako serverový OS. Podle statistik je poměr použití Linuxu a Windows na serverech relativně vyrovnaný, přičemž Linux má v této oblasti podstatně větší podíl na trhu než na osobních počítačích. Podle statistik, které byly publikovány v srpnu 2021 společností W3Techs, Linux je operačním systémem používaným na více než 96% webových serverů, zatímco Windows je používán na méně než 1% webových serverů. To znamená, že Linux je prakticky dominantní operační systém na webových serverech. Na druhé straně jsou Windows serverové operační systémy stále populární pro určité účely, jako je například běh aplikací vyvinutých pro platformu Windows. Windows také nabízí některé funkce a vlastnosti, které jsou pro určité účely vhodnější než Linux. Případně aplikace přímo vyvíjené od Microsoft. Co je distribuce? Distribuce se skládá z: základních programů shell interpretu - terminál/příkazová řádka GUI KDE, GNOME - Grafické rozhraní ovládacích scriptů instalační, aktualizační nástroje a balíčkovací systém vlastní aplikace
  16. tak to založíš znovu? moc textu tu nemáš a bylo by to super
  17. Opět rar? Dodej git link
  18. Opet rar? Dodej git link
  19. Pro hlubší či složitější práci s daty si bohužel nevystačíme pouze s SQL dotazem SELECT, některé data potřebují být při zobrazení různě spojována, nahrazována a nebo přidávány virtuální sloupce. Jedná se pouze o zobrazení, takže níže uvedené dotazy nemění žádné data, ale pouze vytváří zobrazovaný pohled na data. V tomto příkladu budeme používat SQL klíčové slova JOIN, UNION, CASE a dále si ukážeme Subquery. Vytvoříme si nové data: První tabulka: CREATE TABLE Zakaznici ( id INT PRIMARY KEY, jmeno VARCHAR(50) NOT NULL, prijmeni VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, adresa VARCHAR(200) NOT NULL, mesto VARCHAR(50) NOT NULL, stat VARCHAR(50) NOT NULL, psc VARCHAR(10) NOT NULL ); INSERT INTO Zakaznici (id, jmeno, prijmeni, email, adresa, mesto, stat, psc) VALUES (1, 'Jan', 'Novák', 'jan.novak@email.com', 'Hlavní 1', 'Praha', 'Česká republika', '100 00'), (2, 'Petr', 'Svoboda', 'petr.svoboda@email.com', 'Náměstí 2', 'Brno', 'Česká republika', '602 00'), (3, 'Kateřina', 'Veselá', 'katerina.vesela@email.com', 'Hrad 3', 'Olomouc', 'Česká republika', '779 00'), (4, 'Miroslav', 'Kučera', 'miroslav.kucera@email.com', 'Dlouhá 4', 'Liberec', 'Česká republika', '460 01'), (5, 'Lucie', 'Novotná', 'lucie.novotna@email.com', 'Hradčany 5', 'Praha', 'Česká republika', '110 00'); Druhá tabulka: CREATE TABLE Objednavky ( id INT PRIMARY KEY, zakaznik_id INT NOT NULL, produkt VARCHAR(100) NOT NULL, mnozstvi INT NOT NULL, cena DECIMAL(10, 2) NOT NULL, datum DATE NOT NULL, FOREIGN KEY (zakaznik_id) REFERENCES Zakaznici(id) ); INSERT INTO Objednavky (id, zakaznik_id, produkt, mnozstvi, cena, datum) VALUES (1, 1, 'Kávovar', 1, 2499.00, '2022-01-15'), (2, 1, 'Mixér', 2, 1799.00, '2022-01-18'), (3, 2, 'Myčka', 1, 8999.00, '2022-01-22'), (4, 3, 'Trouba', 1, 5999.00, '2022-01-25'), (5, 4, 'Klimatizace', 1, 12999.00, '2022-02-01'), (6, 5, 'Prádelní stroj', 1, 8499.00, '2022-02-05'), (7, 2, 'Lednice', 1, 7999.00, '2022-02-07'), (8, 4, 'Tablet', 2, 5699.00, '2022-02-11'); JOIN Spojení dvou tabulek pomocí sloupce, který mají obě nebo více tabulek společný. Ukázka: SELECT Objednavky.id, Zakaznici.jmeno, Zakaznici.prijmeni, Objednavky.produkt, Objednavky.mnozstvi, Objednavky.cena FROM Objednavky JOIN Zakaznici ON Objednavky.zakaznik_id = Zakaznici.id; Výstup dat: Výsledkem je tabulka obsahující sloupce id, jmeno, prijmeni, produkt, mnozstvi a cena spojená z tabulek Objednavky a Zakaznici. UNION spojení výsledků dvou a více dotazů do jednoho výstupu. Ukázka: SELECT produkt, mnozstvi, cena, zakaznik_id FROM Objednavky WHERE zakaznik_id = 1 UNION SELECT produkt, mnozstvi, cena, zakaznik_id FROM Objednavky WHERE zakaznik_id = 3; V tomto případě dotaz kombinuje výsledky dvou dotazů pomocí UNION. První SELECT vrací všechny řádky z tabulky Objednavky, kde má zákazník id 1. Druhý SELECT vrací všechny řádky z tabulky Objednavky, kde má zákazník id 3. UNION pak spojí výsledky obou dotazů do jedné tabulky a odstraní duplicity. Výsledkem dotazu bude tabulka obsahující řádky pro produkty, které si objednali zákazníci s id 1 nebo id 3. CASE použití podmínky pro generování nového sloupce za určitých podmínek dle specifikovaných podmínek. Ukázka: SELECT produkt, mnozstvi, cena, CASE WHEN cena < 5000 THEN 'levný' WHEN cena >= 5000 AND cena < 10000 THEN 'střední' ELSE 'drahý' END AS cena_kategorie FROM Objednavky; Výsledkem bude tabulka obsahující sloupce produkt, mnozstvi, cena a cena_kategorie. Poslední sloupec je vytvořen pomocí podmínky CASE, která rozděluje produkty do tří kategorií podle jejich cen. SubQUERY V některých případech pro zobrazení dat potřebujeme první část dat nějak vyfiltrovat, na toto jsou vhodné subquery, jak je jasné z názvu, tak to znamená že je jeden příkaz vnořený do druhého. Takže pro použití výsledku jednoho dotazu jako vstup do druhého. Ukázka: SELECT jmeno, prijmeni FROM Zakaznici WHERE id IN ( SELECT zakaznik_id FROM Objednavky WHERE produkt = 'Klimatizace' ); Výsledkem bude tabulka obsahující sloupce jmeno a prijmeni pro zákazníky, kteří si objednali klimatizaci. Vnitřní SELECT vrací seznam ID zákazníků, kteří si objednali klimatizaci, a vnější SELECT používá tento seznam jako podmínku pro výběr zákazníků z tabulky Zakaznici.
  20. Pokračování návodu SQL - Práce s daty 1 Vrátíme se k založeným tabulkám CREATE TABLE Customers ( CustomerID INT NOT NULL PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), Address VARCHAR(100), City VARCHAR(50), Country VARCHAR(50) ); CREATE TABLE Orders ( OrderID INT NOT NULL PRIMARY KEY, CustomerID INT NOT NULL, OrderDate DATE, TotalAmount DECIMAL(10, 2), FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ); INSERT INTO Customers (CustomerID, FirstName, LastName, Address, City, Country) VALUES (1, 'Pepa', 'Novak', '123 Main St', 'Anytown', 'USA'), (2, 'Jane', 'Smith', '456 Oak Ave', 'Othertown', 'USA'), (3, 'Bob', 'Johnson', '789 Elm St', 'Somewhere', 'CR'); INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount) VALUES (1, 1, '2022-02-15', 100.00), (2, 1, '2022-02-17', 50.00), (3, 2, '2022-02-18', 200.00), (4, 3, '2022-02-20', 75.00); UPDATE V ukázce provedeme změnu obsahu daných tabulkek. K tomu slouží příkaz UPDATE Příkaz UPDATE slouží k aktualizaci stávajících záznamů v databázové tabulce. Jeho syntaxe vypadá následovně: UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; Jednotlivé parametry tohoto příkazu: table_name: Název tabulky, kterou chcete aktualizovat. column1, column2, ...: Názvy sloupců v tabulce, které chcete aktualizovat. value1, value2, ...: Nové hodnoty, které chcete přiřadit k jednotlivým sloupcům. condition: Podmínka, která určuje, které řádky v tabulce budou aktualizovány. Pokud tuto podmínku neuvedete, příkaz UPDATE aktualizuje všechny řádky v tabulce. Například: UPDATE Customers SET Address = 'Nova Adresa 123' WHERE CustomerID = 1; UPDATE Customers SET FirstName = 'Alice' WHERE CustomerID = 3; Je důležité kontrolovat to, aby podmínka byla dostatečně specifická, aby nedošlo k aktualizaci nechtěných řádků. Příklad pro update více hodnot v jednom příkazu: UPDATE Customers SET Address = 'Adresa 123', City = 'Mesto', Country = 'CZ' WHERE CustomerID = 1; Příklad pro update více řádků a hodnot v jednom příkazu: UPDATE Orders SET TotalAmount = 150.00; Tento příkaz změní u všech řádků hodnotu sloupce TotalAmount na hodnotu 150.00 DELETE Příkaz DELETE slouží ke smazání záznamů z databázové tabulky. Příkaz DELETE může mít nevratné dopady, pokud není správně použit. Pokud smažete řádky z tabulky, "nelze je obnovit" Je důležité dbát na to, aby podmínka byla dostatečně specifická, aby neodstranila nechtěné řádky v tabulce. DELETE FROM table_name WHERE condition; Jednotlivé parametry tohoto příkazu: table_name: Název tabulky, ze které chcete smazat záznamy. condition: Podmínka, která určuje, které řádky v tabulce budou smazány. Pokud tuto podmínku neuvedete, příkaz DELETE smaže všechny záznamy v tabulce. Příklady: Smazání zákazníka s ID 1 z tabulky Customers DELETE FROM Customers WHERE CustomerID = 1; Smazání všech objednávek s datem objednání starším než "2022-02-19" DELETE FROM Orders WHERE OrderDate < '2022-02-19'; !!Smazání všech dat z dané tabulky!! DELETE FROM Orders; ALTER Příkaz ALTER v SQL slouží ke změně struktury existující tabulky. Jeho syntaxe se liší v závislosti na tom, co chcete změnit. Zde jsou vysvětleny jednotlivé parametry, které můžete použít v příkazu ALTER TABLE: Určuje název tabulky, kterou chcete změnit. ADD: Používá se ke přidání nového sloupce do tabulky. Například: TABLE: Určuje název tabulky, kterou chcete změnit. ADD: Používá se ke přidání nového sloupce do tabulky. ALTER TABLE table_name ADD column_name data_type; DROP: Používá se ke smazání sloupce z tabulky. ALTER TABLE table_name DROP COLUMN column_name; MODIFY: Používá se ke změně datového typu existujícího sloupce. ALTER TABLE table_name MODIFY COLUMN column_name new_data_type; RENAME: Používá se ke změně názvu tabulky nebo sloupce. ALTER TABLE table_name RENAME TO new_table_name; ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name; Reálné příkazy pro naše tabulky: Přidání sloupce Phone do tabulky Customers ALTER TABLE Customers ADD Phone VARCHAR(20); Odstranění sloupce TotalAmount z tabulky Orders ALTER TABLE Orders DROP COLUMN TotalAmount; Změna datového typu sloupce Address v tabulce Customers z VARCHAR(100) na VARCHAR(200) ALTER TABLE Customers MODIFY COLUMN Address VARCHAR(200); Přejmenování tabulky Customers na Clients ALTER TABLE Customers RENAME TO Clients; Přejmenování sloupce City v tabulce Customers na Location ALTER TABLE Customers RENAME COLUMN City TO Location;
      • 3
      • Like
      • Thanks
  21. A kod nedavej v raru ale pokud je delší tak na git. Opravdu neplánuji si zavirovat pc
  22. V článku SQL - Práce s uživatelem jsme si řekli základní informace o práci s uživatelem a ukázali si možnost založení uživatele a změnu jeho práv. V tomto článku si ukážeme základní operace s daty. Vytvoříme si v naší testovací databázi dvě tabulky. Na vytvoření použijeme příkaz CREATE s možností TABLE CREATE TABLE Customers ( CustomerID INT NOT NULL PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), Address VARCHAR(100), City VARCHAR(50), Country VARCHAR(50) ); A druhá tabulka CREATE TABLE Orders ( OrderID INT NOT NULL PRIMARY KEY, CustomerID INT NOT NULL, OrderDate DATE, TotalAmount DECIMAL(10, 2), FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ); Takto si vytvoříme dvě tabulky s názvem customers a orders. První tabulka obsahuje sloupce: CustomerID,FirstName,LastName,Address,City,Country Hint: CustomerID INT NOT NULL PRIMARY KEY definuje sloupec CustomerID v tabulce Customers. Popisuje následující informace o sloupci: INT určuje datový typ sloupce jako celočíselný. NOT NULL určuje, že sloupec nemůže obsahovat hodnoty NULL - nesmí být prázdný. PRIMARY KEY určuje, že tento sloupec je primárním klíčem této tabulky. Primární klíč slouží k jednoznačné identifikaci každého záznamu v tabulce. Každá tabulka musí mít právě jeden primární klíč a musí být definován pomocí jednoho nebo více sloupců. Takto vytvořené tabulky jsou ale prázdné, potřebujeme tedy nějaké data do tabulek vložit. K vložení dat použijeme příkaz INSERT INSERT INTO Customers (CustomerID, FirstName, LastName, Address, City, Country) VALUES (1, 'Pepa', 'Novak', '123 Main St', 'Anytown', 'USA'), (2, 'Jane', 'Smith', '456 Oak Ave', 'Othertown', 'USA'), (3, 'Bob', 'Johnson', '789 Elm St', 'Somewhere', 'CR'); Druhá tabulka INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount) VALUES (1, 1, '2022-02-15', 100.00), (2, 1, '2022-02-17', 50.00), (3, 2, '2022-02-18', 200.00), (4, 3, '2022-02-20', 75.00); Tyto dva insert příkazy vkládají více řádků, příklad pouze pro jeden řádek: INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); Možnost je vkládání dat i z jiné tabulky do jiné tabulky, tomu se říká poddotaz nebo vnořený dotaz: INSERT INTO table_name (column1, column2, column3, ...) SELECT column1, column2, column3, ... FROM another_table WHERE condition; Práce s daty - SELECT Struktura příkazu SELECT, některé jsou volitelné a mohou být vynechány/nepoužity SELECT column1, column2, column3, ... FROM table_name WHERE condition GROUP BY column1 HAVING condition ORDER BY column1 ASC/DESC LIMIT number; Význam: SELECT specifikuje seznam sloupců, které chceme získat z tabulky. FROM specifikuje jméno tabulky, ze které chceme data získat. WHERE specifikuje podmínky pro výběr řádků. GROUP BY specifikuje sloupce, podle kterých se řádky seskupují. HAVING specifikuje podmínky pro výběr skupin. ORDER BY specifikuje sloupec nebo sloupce, podle kterých se výsledky řadí a směr řazení. LIMIT specifikuje maximální počet řádků, které chceme získat. Vyber všechny sloupce z tabulky SELECT * FROM Customers; Vyber pouze zvolené sloupce z tabulky SELECT CustomerID, FirstName, Country, ... FROM Customers; Vyber zákazníků, kteří mají bydliště v USA SELECT * FROM Customers WHERE Country = 'USA'; Seřaď zákazníky podle abecedy jejich křestního jména (Nedojde ke změně dat, pouze zobrazovaného výstupu) SELECT * FROM Customers ORDER BY FirstName ASC; V další části si ukážeme změnu dat v tabulce, UPDATE, DELETE, ALTER
  23. V článku SQL - Základní informace jsme si řekli základní informace o SQL a ukázali si možnost založení uživatele. V tomto článku se probereme více možnostmi pro práci s uživatelem. Příkaz CREATE v jazyce SQL slouží k vytváření nových objektů v databázi, jako jsou tabulky, pohledy, indexy, procedury, funkce, uživatelé atd. Možnosti příkazu CREATE jsou specifické pro každý typ objektu, který se vytváří. Níže uvádím některé z možností příkazu CREATE pro nejčastěji používané typy objektů v databázi: CREATE TABLE: vytvoří novou tabulku v databázi CREATE VIEW: vytvoří nový pohled na tabulku nebo pohledy v databázi CREATE INDEX: vytvoří nový index na tabulku nebo pohled v databázi CREATE PROCEDURE: vytvoří novou uloženou proceduru v databázi CREATE FUNCTION: vytvoří novou uloženou funkci v databázi CREATE TRIGGER: vytvoří nový trigger (spouštěč) pro sledování událostí v databázi CREATE USER: vytvoří nového uživatele databáze CREATE DATABASE: vytvoří novou databázi Každý z těchto příkazů má mnoho dalších možností a specifických syntaxí, které se používají pro vytváření konkrétních objektů v databázi. Pro vytvoření uživatele tedy budeme potřebovat CREATE USER CREATE USER user_name IDENTIFIED BY 'password'; Tento příkaz vytváří nového uživatele a přiděluje mu heslo pro přihlášení. user_name je jméno uživatele a password je heslo. Příkaz CREATE USER vytváří uživatele bez jakýchkoli oprávnění. Klíčové slovo IDENTIFIED BY slouží k přidělení hesla Když budeme chtít takto vytvořeného uživatele přiřadit k nějaké databázi a nastavit mu oprávnění, budeme potřebovat příkaz GRANT Příkaz GRANT slouží k udělení přístupových práv uživatelům v databázi. Mezi hlavní možnosti patří: GRANT SELECT - umožňuje uživateli číst data v tabulkách GRANT INSERT - umožňuje uživateli vkládat data do tabulek GRANT UPDATE - umožňuje uživateli aktualizovat data v tabulkách GRANT DELETE - umožňuje uživateli odstraňovat data z tabulek GRANT CREATE - umožňuje uživateli vytvářet nové databáze, tabulky nebo indexy GRANT DROP - umožňuje uživateli odstraňovat databáze, tabulky nebo indexy GRANT ALTER - umožňuje uživateli měnit strukturu tabulek GRANT ALL PRIVILEGES - umožňuje uživateli přístup ke všem funkcím databáze GRANT EXECUTE - umožňuje uživateli spouštět uložené procedury nebo funkce Při použití příkazu GRANT může být uvedeno i specifikum, jako je určení konkrétní tabulky nebo databáze, ke které se přístupová práva vztahují, a také specifikace konkrétního uživatele, kterým se práva přidělují Například GRANT SELECT, INSERT, UPDATE ON database_name.* TO user_name@'localhost' IDENTIFIED BY 'password'; Pozor, localhost v příkazu přiděluje oprávnění uživateli pro připojení pouze z lokálního serveru, ale pokud chcete umožnit připojení i z jiných míst, můžete změnit localhost za '%'. Použití localhost je vhodné když chcete mít jistotu v zabezpečení jako další faktor před manipulaci s daty cizí osobou. Nejčastěji se používá přímo pro aplikace která je spuštěna na stejném serveru jako je databáze. Tímto způsobem si můžete u uživatele nastavit oprávnění. Nyní ale potřebujeme změnu oprávnění. Přidělení nového oprávnění použijeme opět příkaz GRANT. V opačném případě je potreba příkaz REVOKE Mezi základní možnosti patří: REVOKE ALL: Odebere všechna oprávnění uživateli pro daný objekt. REVOKE [název oprávnění]: Odebere konkrétní oprávnění uživateli pro daný objekt. REVOKE [název oprávnění] ON [název objektu] FROM [název uživatele]: Odebere konkrétní oprávnění uživateli pro daný objekt. Například: REVOKE SELECT ON database_name.table_name FROM 'user_name'@'%'; A jako poslední práci s uživatelem změníme uživatele heslo. Pro změnu hesla existuje v SQL příkaz ALTER. Příkaz ALTER v SQL slouží k úpravě již existujících objektů v databázi, jako jsou tabulky, pohledy, funkce, procedury, uživatelé atd. Možnosti příkazu ALTER se liší v závislosti na objektu, který chcete upravit. Zde je několik příkladů: ALTER TABLE: slouží ke změně struktury tabulky, např. přidání/odebrání sloupců, změna datového typu sloupců nebo změna primárního klíče. ALTER VIEW: slouží k úpravě definice pohledu. ALTER FUNCTION nebo ALTER PROCEDURE: slouží ke změně těla funkce nebo procedury. ALTER USER: slouží ke změně vlastností uživatele, jako je například změna hesla nebo limitu připojení. Každý typ objektu má své vlastní specifické možnosti úpravy pomocí příkazu ALTER. Pro změnu hesla použijeme ALTER USER Například: ALTER USER 'user_name'@'%' IDENTIFIED BY 'user_new_password';
  24. Teorie: SQL (Structured Query Language) je standardní programovací jazyk pro ukládání, manipulaci a vyhledávání dat v relačních databázích. SQL znamená strukturovaný dotazovací jazyk. SQL byl vyvinut v 70. letech společností IBM Relační databáze Existuje mnoho typů databázových serverů,nejčastěji používané: MySQL/MariaDB: Jedná se o open-source relační databázový server. Je to velmi populární volba pro webové aplikace, protože je snadno použitelný a podporuje mnoho programovacích jazyků. Microsoft SQL Server: Tento relační databázový server je vyvinutý společností Microsoft a je často používán v podnikových prostředích. Podporuje mnoho funkcí pro zpracování dat, jako jsou OLAP a data mining. Oracle Database: Je to jeden z nejvýkonnějších relačních databázových serverů a je často používán v podnikových prostředích. Podporuje mnoho funkcí, jako jsou replikace dat, zálohování a obnovení a mnoho dalších. PostgreSQL: Open-source relační databázový server s vysokou úrovní funkčnosti a rozšířenosti. Je často používán pro webové aplikace, ale také pro podnikové aplikace a GIS. MongoDB: NoSQL databázový server, který ukládá data ve formátu JSON a podporuje škálovatelnost a vysokou dostupnost. Je často používán pro aplikace, které pracují s nestrukturovanými daty, jako jsou aplikace sociálních médií nebo mobilní aplikace. Pomocí SQL můžeme provádět určité operace na existující databázi a také můžeme použít tento jazyk k vytvoření databáze. SQL používá určité příkazy, jako jsou Create, Drop, Insert atd., k provedení požadovaných úkolů. Tyto příkazy SQL jsou hlavně rozděleny do pěti kategorií jako: DDL – Data Definition Language - definuje strukturu databáze DQL – Data Query Language - slouží k získávání dat z databáze DML – Data Manipulation Language - se používá ke změně dat v databázi DCL – Data Control Language - řídí přístup k datům v databázi TCL – Transaction Control Language - řídí transakce v databázi Příklad: Pro chod FiveM vám stačí pouze toto: DDL - CREATE, ALTER DML - INSERT, UPDATE DQL - SELECT Příklad na vytvoření takového uživatele: CREATE USER 'fivem_server_user'@'%' IDENTIFIED BY 'password'; GRANT CREATE, ALTER ON fivem_server_database.* TO 'fivem_server_user'@'%'; GRANT SELECT, INSERT, UPDATE ON fivem_server_database.* TO 'fivem_server_user'@'%'; REVOKE ALTER USER ON *.* FROM 'fivem_server_user'@'%'; Příkazy jsou ukázkové pro vytvoření uživatele "fivem_server_user" a jeho hesla "password" a musí již existovat databáze "fivem_server_database" Příklad pro vytvoření databáze: CREATE DATABASE fivem_server_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; Pozor! Databáze musí být vytvořena předtím než mají být nastaveny oprávnění pro uživatele. Takto vytvořený uživatel a databáze vám zajistí základní zabezpečení v práci s daty, uživatel nemůže vytvářet jiné uživatele a databáze a změnit si heslo.
×
×
  • Create New...