Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
Adrifinel

SQL dotazy a jejich použití

Recommended Posts

Co je to SQL příkaz?

 

Je to dotaz, který provede výběr, vklad, aktulizaci atd. vámi nadefinovaných sloupečků a buněk.

 

Před začátkem, musíme mit základní ponětí o tom, ve které databázi jsou jaké tabulky, to znamená, abychom neměli vybranou databazi realmdu a nahráváme příkazy ve které máme napsano characters a divili jsme se proč, nám to píše např.:

 

Error Code : 1146

Table 'mangos.realmlist' doesn't exist

 

Ano, někteří uživatelé můžou mít jednu velkou databázi s názvem server a tam mít jak mangos, characters, tak i realmd, ale my se řídíme běžním rozdělením.

 

Jejich použití v programech:

 

za a.) SQLyog

 

Vkládáne SQL příkaz nebo chcete-li dotaz do Query (viz sreen)

 

queryoh8.th.png

 

Vložení dotaz si nejdříve označíme pomocí ctrl+A. Klikněte pravým tlačítkem myši. A zvolíte možnost Execute Query.

 

executequeryhm2.th.png

 

Vyjede vám podnabídka, kde zvolíte možnost Execute Selecte Query.

 

executequeryselectcv6.th.png

 

Pokud je správně, tak např.

 

(0 row(s) affected)
(0 ms taken)

 

b.) Navicat

 

Zmáčkněte na klavesnici F6, objeví se vám console

 

consoleiq8.th.png

 

Vložte a dejte enter.

 

Pokud je správně, tak např.

 

Query OK, 0 rows affected
Rows matched: 1 Changed: 0 Warnings: 0

 

 

c.) PHPmyAdmin

 

Zde vybereme tabulku a v ní založku SQL, vložíme dotaz a dáme Proveď.

 

sqlcz0.th.png

 

Pokud byl váš dotaz správný tak např.

 

Smazané řádky: 1 (Dotaz zabral 0.0132 sekund)
SQL-dotaz:
DELETE FROM `command` WHERE `name` = 'modify rep';

 

 

Nejčastěji se vyskytující chyby:

 

Error Code : 1054
Unknown column 'adress' in 'field list'

 

vysvětlení: v kodu máte sloupeček, který není v databázi nebo se nějak neshoduje nebo se jinak jmenuje.

 

Error Code : 1146

Table 'mangos.realmlist' doesn't exist

 

vysvětlení: špatně vybraná databáze nebo daná tabulka chybí

 

Error Code : 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '`name`='wow-x'' at line 1

 

vysvětlení: špatně napsaní příkaz, např něco chybí nebo přebývá.

 

Error Code : 1103
Incorrect table name 'realmlist Set '

 

vysvětlení: chybí vám pravděpodobně úvozovky v kodě

 

#1062 - Duplicate entry 'modify arena' for key 1

 

vysvětlení: v databázi již je řádek, který obsahuje shodné údaje s vámi v kládaním.

 

Stahování ze SVN

 

1) použít program Tortoise SVN

2) zadat do programu adresu https://mangos.svn.sourceforge.net/svnroot/mangos/

3) Stáhnout

4) Nahrát do databáze pomocí programu Navicat nebo SQlyog

 

Stahování s gitu:

 

1. Stahněte si nejdříve GIT z http://code.google.com/p/msysgit/downloads/list

2. Nainstalujte, po naistalování pokračujte krokem tři.

3. Spusťte Git Bash

4. Do konzole napište "git clone git://github.com/mangos/mangos.git C:/Projects/MaNGOS"

(C:/Projects/MaNGOS -cil stahování, muže být nastaveno libovolně)

5. Stahovani, viz obrázek

 

gtrr0.jpg

 

6. Staženou revizi najdete na vami předem zadané adrese (Defaultne C:/Projects/MaNGOS)

Vsšchny Git přikazy zjistite napsaním do konzole " git help git " .

 

Dotazy můžete vkládat taktéž do databáze jako sql soubory.

 

To provádíme tak, že ve SQlyogu dáme Tools -> Import... v Navicatu v consoli můžeme dát load nebo kliknout na databázi a dát Execute Batch File..

 

Soubory s příponou .sql můžeme stáhnout z gitu nebo se SVN viz výše.

 

Nebo klikneme např. na adresu https://mangos.svn.sourceforge.net/svnroot/...nk/sql/updates/, označíme text vložíme do poznámkového bloku a uložíme jako něco.sql. Nahrajeme do databáze.

 

Víme, jak vkládat a odkud čerpat nyní si vysvětlímeb základní pojmy:

 

SELECT -> příkaz, který bude začínat selectem nám značí, že jeho funkcí bude něco vybrat odněkud. To může prakci vypadat třeba takhle:

 

select * from characters where guid =954;

 

Píšeme odkud název tabulky, kde jaký sloupeček a jaký údaj, jméno, entry, guid číslo atd.

 

INSERT (INTO) -> značí, že provede vložením něčeho do databáze např.

 

INSERT INTO `spell_teleport` VALUES ('15742', '1', '5667.096680', '-3012.541748', '1560.151611', '3.160849');

 

Udává, že vloží tento spell do databáze. Při vkládání do databáze, bychom měli znát strukturu tabulky,která se mění a námi dříve použité příkazy např. na vložení vendorů by nemusely fungovat. Něco o tabulkách najdete zde: http://wiki.udbforums.org/index.php/Main_Page

 

DELETE -> smaže řádek či více řádku atd. z databáze např.

 

DELETE FROM `command` WHERE `name` = 'modify rep';

Odkud, kde, co

 

UPDATE -> aktulizuje údaje v tabulce např.

 

Update `realmlist` Set `name`='wowxa';

Kde a co

 

REPLACE -> Je nám dovoluje vložit již existující řádek neboť má tu vlastnost, že v případě shodnosti, kolize s primární klíčem nebo jiným unikátní indexem. maže původní a nahrazuje novým. např.

 

REPLACE uzivatele SET id = 2, login = 'vasek';

 

IGNORE -> Pokud napíšeme ignore, dáváme tak vědět, že si přejeme, aby bylo něco ignorováno např. jeden řádek v tabulce mezi námi jinými vybranými. např.

 

SUBSTRING -> Tato funkce SUBSTRING vybírá podřetězec z řetězce nebo textu str. Podřetězec začíná od pozice start a sahá nevýše do konce argumentu str. Je-li uvedena délka, pak výsledný řetězec není delší než tato délka např.

 

IF SUBSTRING(Polozka FROM 1 FOR 1) = "X" THEN 
    UPDATE  SET cena = cena*1.1 WHERE CURRENT OF curcen;

 

POSITION -> Funkce hledá řetězec nebo text str v řetězci nebo textu str2. Funkce vrací nulu, pokud řetězec nenašla, nebo první pozici, v níž se str v str2 nachází, počítáno od jedné.

 

Je-li str prázdný řetězec, funkce vrací 1, je-li str2 prázdný řetězec, funkce vrací 0.

 

Při hledání řetězce se hledá bez ohledu na velikost písmen, pokud str2 je typu ignorujícího velikost písmen.

 

př.

 

POSITION(str IN str2);

 

 

ALTER TABLE -> Pokud potřebuje přidat sloupeček, tak použijeme možnost alter table např. tak jak to vidíte v kodu

 

ALTER TABLE `creature` ADD COLUMN `spawnMask` tinyint(3) unsigned NOT NULL default '1' AFTER `map`;

 

Různé kombinace např.

 

update creature_template set speed=1 where speed=0;
alter table `creature_template` change `speed` `speed` float  DEFAULT '1' NULL;

 

(edit dopíšu)

Edited by Adrifinel
  • Upvote 2

Share this post


Link to post
Share on other sites

Tak jo, jdu se ohřát u kamen a pak budu dále psát příkazy. První část je věnovana těm přdevším uživatelům, kteří nemají ponětí ani o tom nejzkákladnějším druhá část se zabývá už samotnými příkazy a jak by měli vypadat či jejich použití v praxi.

Share this post


Link to post
Share on other sites

Je to velmi dobré, ale z kdybych na to koukal z pohledu toho kdo o tom nic neví, příliš složité... ale to je začarovaný kruh, protože jednodušeji už to napsat nelze.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×