Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Jak tworzyć zapytania w języku SQL.


Xyli

Rekomendowane odpowiedzi

Opublikowano

Witam!

Chciałbym Was zaznajomić z podstawami tworzenia zapytań. Wiedza ta przyda wam się do np. naprawy zepsutego zapytania :)

 

Dodawanie nowych rekordów

 

 

 

Składnia

INSERT INTO `nazwa_tabeli` (`nazwa_pola1`, `nazwa_pola2`, `nazwa_pola3`) VALUES ('wartość_pola1', 'wartość_pola2', 'wartość_pola3');

 

Zapamiętaj!

Nazwy tabel i nazwy pól powinny się znajdować w "odwróconych" apostrofach (`), a wartości pól w apostrofach (').

 

Przykłady

  1. Dodawanie nowego GM do tabeli gmlist wiedząc, że login gracza to mpcforum, nazwa postaci to Xyli i ID ma być przyznane automatyczne.
    INSERT INTO `gmlist` (`mID`, `mAccount`, `mName`, `mContactIP`, `mServerIP`, `mAuthority`) VALUES ('', 'mpcforum' , 'Xyli', '', '', 'IMPLEMENTOR');

    Wartość pola mID pozostawiłem puste dlatego, że chcę aby ID było przyznane automatycznie, ponieważ tabela ma włączoną opcję AUTO_INCREMENT.

  2. Chcemy dodać nowego przyjaciela graczowi Xyli, którego nick to Marcin.
    INSERT INTO `messenger_list` (`account`, `companion`) VALUES ('Xyli', 'Marcin');


  3. Chcemy dodać nowy sklep do tabeli shop wiedząc, że vnum ma być 62, name ma być KamienieDusz, a ID NPC który będzie sprzedawał to 9004.
    INSERT INTO `shop` (`vnum`, `name`, `npc_vnum`) VALUES ('62', 'KamienieDusz', '9004');


 

 

 

 

Aktualizacja istniejących rekordów

 

 

 

Składnia

Poniższa składnia aktualizuje wszystkie wpisy znajdujące się w danej tabeli.

UPDATE `nazwa_tabeli` SET `nazwa_pola1`='wartość_pola1', `nazwa_pola2`='wartość_pola2';

 

Poniższa składnia aktualizuje wszystkie wpisy znajdujące się w tabeli spełniające dany warunek np. zmiana hasła gdzie login to Xyli.

 UPDATE `nazwa_tabeli` SET `nazwa_pola1`='wartość_pola1' WHERE `nazwa_pola2`='wartość_pola2';

 

Można również dodać więcej niż jeden warunek. Służy do tego AND. Przykładowo chcemy zmienić ID wpisu na 12 tam gdzie login to Xyli, a imię to Marcin.

UPDATE `nazwa_tabeli` SET `id`='12' WHERE `login`='Xyli' AND `imie`='Marcin';

 

Zapamiętaj!

Nazwy tabel i nazwy pól powinny się znajdować w "odwróconych" apostrofach (`), a wartości pól w apostrofach (').

 

Przykłady

  1. Chcemy zmienić nazwę postaci w tabeli gmlist na LordMakin wiedząc, że login to mpcforum.
    UPDATE `gmlist` SET `mName`='LordMakin' WHERE `mAccount`='mpcforum';


  2. Chcemy ustawić wszystkie prob na wartość 90 w tabelce refine_proto.
    UPDATE `refine_proto` SET `prob`='90';


  3. Chcemy podnieść maksymalną ilość zdobycia Yang o 400 za potwora o ID 114.
    UPDATE `mob_proto` SET `gold_max`=`gold_max`+400 WHERE `vnum`='114';


 

 

 

 

Usuwanie rekordów

 

 

 

Składnia

Poniższa składnia usunie nam wszystkie wpisy z podanej tabeli.

DELETE FROM `nazwa_tabeli`;

 

Poniższa składnia usunie nam wpis, który spełnia odpowiedni warunek.

DELETE FROM `nazwa_tabeli` WHERE `nazwa_pola`='wartość_pola`;

 

Można również dodać więcej niż jeden warunek. Służy do tego AND. Przykładowo chcemy usunąć wpisy, które mają max_yang równe 5000 i min_yang równe 3000.

DELETE FROM `nazwa_tabeli` WHERE `max_yang`='5000' AND `min_yang`='3000';

 

Zapamiętaj!

Nazwy tabel i nazwy pól powinny się znajdować w "odwróconych" apostrofach (`), a wartości pól w apostrofach (').

 

Przykłady

  1. Chcemy usunąć wszystkie konta z tabeli account.
    DELETE FROM `account`;


  2. Chcemy usunąć postać z gry, której nick to Trololo.
    DELETE FROM `player` WHERE `name`='Trololo';


  3. Chcemy usunąć GM, którego nick to Xyli, a login to mpcforum.
    DELETE FROM `gmlist` WHERE `mName`='Xyli' AND `mAccount`='mpcforum';


 

 

 

 

Wybieranie rekordów

 

 

 

Składnia

Poniższa składnia pokaże nam wartości wybranego przez nas pola wszystkich wpisów.

SELECT `nazwa_pola` FROM `nazwa_tabeli`;

 

Poniższa składnia pokaże nam wartość wybranego przez nas pod pewnym warunkiem.

SELECT `nazwa_pola` FROM `nazwa_tabeli` WHERE `nazwa_pola3`='wartosc_pola3';

 

Poniższa składnia pobierze nam wszystkie wartości wpisów pól pole1 i pole2

SELECT `pole1`, `pole2` FROM `tabela`;

 

Zapamiętaj!

Nazwy tabel i nazwy pól powinny się znajdować w "odwróconych" apostrofach (`), a wartości pól w apostrofach (').

 

Przykłady

  1. Chcemy wiedzieć jaki poziom ma użytkownik Xyli.
    SELECT `level` FROM `player` WHERE `name`='Xyli';


  2. Chcemy znać kod usunięcia postaci użytkownika mpcforum.
    SELECT `social_id` FROM `account` WHERE `login`='mpcforum';


  3. Chcemy znać nazwę przedmiotu z item_proto o ID 11290
    SELECT `locale_name` FROM `item_proto` WHERE `vnum`='11290';


 

 

 

 

Możemy również inaczej podać tabelę z której chcemy aktualizować/wybrać/usunąć rekord. A mianowicie podając najpierw database w której znajduje się tabela, a później nazwę tabeli. UWAGA! Wtedy nie używamy odwróconych apostrofów (`). Np.

SELECT `mAccount` FROM common.gmlist WHERE `mName`='Xyli';

 

 

Jeżeli było to przepraszam za spam.

Jeżeli zły dział to proszę o przeniesienie.

Do specjalistów. Wiem, wiem, że wszystkiego nie napisałem, ale wspomniałem tylko o podstawach.

 

Pozdrawiam, Xyli.

Napisz do mnie, jeżeli potrzebujesz patcher'a.

Opublikowano

1 - Po co odwrócone apostrofy? Stosujemy pojedynczy apostrof ' ' jeśli wartość zapytania jest intem (lub zmienną np w php, lub jeśli stosujemy query w LuaSQl pod metina), i podwójny apostrof " " jeśli jest stringiem (lub wykonujemy zapytanie w bashu / shellu).

2 - W insercie można również zastosować SET pole = wartosc, pole2 = wartosc2 itd, oddzielając pola przecinkiem.

3 - Nazwy baz, tabel, kolumn nie muszą być podane w apostrofach.

 

To na tyle, to jedynie konstruktywna krytyka i pewne poprawki.

Pozdrawiam.

 

@Down : nie zauważyłem tego "powinno" mój błąd, ale i tak powinno się ich nie stosować .. ;)

1377371138-U1002370.png

Opublikowano

Napisałem, że powinno się stosować. Czyli można, ale nie trzeba co do tych ` :D

Napisz do mnie, jeżeli potrzebujesz patcher'a.

  • 2 miesiące temu...
  • 2 lata później...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...