Hirdetés

2024. június 10., hétfő

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  MySQL topic

Hozzászólások

(#301) krokk válasza hb113 (#296) üzenetére


krokk
senior tag

ha parancsra gondoltál:
''select nev from nick;'' evvel kiirja szépen sorban ha rendezni is akarod akkor ''order by asc'' a táblanév után. a tábla elnevezése meg nem épp nyerő. jah és ez csak a neveket írja ki.

de ezek alap dolgok. szerintem keress vmi netes olvasmányt. van nagyon sok.

the funniest thing about this text is that by the time you realize it doesn't say anything it's too late for you to stop reading it

(#302) taklasz


taklasz
csendes tag

Sziasztok!

Van egy tábla, ami a 127-es számú user_id-től többet nem hajlandó elfogadni.
Egy űrlapon keresztül töltöm fel.
Kipróbáltam már több ingyenes tárhelyen is, egyiken sem számol tovább.

Mi lehet a gond a táblámmal?

CREATE TABLE `list` (
`user_id` tinyint(5) NOT NULL auto_increment,
`email` varchar(40) NOT NULL default '',
`name` varchar(40) NOT NULL default '',
`approved` char(1) NOT NULL default 'N',
PRIMARY KEY (`user_id`),
UNIQUE KEY `email` (`email`)
) TYPE=MyISAM AUTO_INCREMENT=20 ;

(#303) 9CS válasza taklasz (#302) üzenetére


9CS
senior tag

Szia

A signed tinyint -128-127-ig számoz, de akkor sem lenne jobb, ha unsigned lenne, mivel az is csak 255, válassz szerintem nagyobb integer értéket az azonosítóknak. Főleg mivel törlés után is tovább számoz, így az évek során könnyű túllépni azt a tinyint-et. MySQL manual: [link]

'' - Tizenkettőt üt az óra, térjenek márrrrgghhhh... ''

(#304) taklasz válasza 9CS (#303) üzenetére


taklasz
csendes tag

Köszönöm.
:B
Még jobban utána kellett volna néznem, mielőtt kérdezek.
:B

(#305) VladimirR


VladimirR
nagyúr

hi

adott egy forum, ket (tobb, de most csak ketto szamit) tablaval, a topic-ok es a hozzaszolasok tablajaval
elobbiben vannak a topic adatai (id, cim, nyitas ideje, nyito, kategoria, etc...), utobbiban a hozzaszolasok (id, hozzaszolo id-je, topic id-je, etc)
mivel nem sajat forumrol van szo, igy a torlest eleg erdekesen kellene megoldanom ,megpedig ugy, hogy ha eltunik egy topic, vagyis eltunik egy sor a topic-ok tablajabol, akkor torlom a benne levo hozzaszolasokat (vagyis a megfelelo topicid-vel rendelkezo sorokat a hozzaszolasok tablajabol
hogyan lehet ezt a leginkabb fajdalommentesen megoldani?
az sajnos nem megoldhato, hogy mielott torlom a topic-ok tablajabol a sort, torlom a hozza tartozo post-okat, mindenfele okok miatt (foleg, mert fel evre visszamenoleg kellene megoldanom a torolt topic-ok post-jainak torleset es megeshet, hogy a jovoben is lesz hasonlo)
ami eddig eszembe jutott, az az, hogy a topicid-k bol halmazt kepzek, majd azt mondom, hogy ''delete from posts where topicid not in (<halmaz>)''
ez mennyire elfogadhato megoldas, van-e ettol szebb, jobb, gyorsabb

segitsegeteket elore is koszonom

(#306) Jester01 válasza VladimirR (#305) üzenetére


Jester01
veterán

delete from posts where topicid not in (<halmaz>)
Szerintem semmi baj nincs ezzel a megoldással. Gondolom a <halmaz> egy al-select, jelen esetben tehát valami ilyesmi lesz a parancs:
delete from posts where topicid not in (select topicid from topics)
Alternatív módszer:
delete from posts where not exists (select * from topics where topics.topicid = posts.topicid)
Az explain parancs által adott infók alapján nekem úgy tûnik, hogy az elsõ a gyorsabb. Ha van index a topics.topic_id mezõre, akkor azt mind a két verzió kihasználja.

Jester

(#307) Haok


Haok
tag

Próbálkozok SQl el de nem nagyon megy :(

CREATE TABLE ME
(
ID INTEGER NOT NULL,
NEV VARCHAR2(10 BYTE) NOT NULL
);


CREATE TABLE TERMCSOP
(
ID INTEGER NOT NULL,
NEV VARCHAR2(20 BYTE) NOT NULL,
SZULO INTEGER
);

Így kezdődik, és ilyen hibát dob, amikor indítanám:

''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 'VARCHAR2(10 BYTE) NOT NULL
);


CREATE TABLE TERMCSOP
(
' at line 9''

Mi lehet a gond?

---===Győzelem a fontos, és ahhoz kell a részvét....Görbüljön a BOT===---

(#308) Jester01 válasza Haok (#307) üzenetére


Jester01
veterán

Ez Oracle szintaxisnak tûnik, mysqlben simán varchar(10) formában lesz jó.

Jester

(#309) Haok válasza Jester01 (#308) üzenetére


Haok
tag

Úgylátom Te eléggé értesz ehhez.

Mit kellene leszednem , hogy mindenféle átalakítás nélkül tudjam használni azt az SQL fájlt, aminek egy részét bemásoltam, mert hiába átírom a varchar-t úgy ahogy mondod , nem megy.

---===Győzelem a fontos, és ahhoz kell a részvét....Görbüljön a BOT===---

(#310) Jester01 válasza Haok (#309) üzenetére


Jester01
veterán

mysql> CREATE TABLE ME
-> (
-> ID INTEGER NOT NULL,
-> NEV VARCHAR(10) NOT NULL
-> );
Query OK, 0 rows affected (0.03 sec)

mysql> CREATE TABLE TERMCSOP
-> (
-> ID INTEGER NOT NULL,
-> NEV VARCHAR(20) NOT NULL,
-> SZULO INTEGER
-> );
Query OK, 0 rows affected (0.00 sec)

Jester

(#311) VladimirR


VladimirR
nagyúr

hi

valaki meg tudna magyarazni nekem, hogy:
-mi a kulonbseg a varchar es a text adattipuxok kozott, leszamitva a meretuket, illetve azt, hogy utobbinal csak ugy keszitheto index, ha megadom az ''index prefix length''-t?
-mi az az index prefix length?
-mi a kulonbseg szoveges (varchar, text) mezo eseteben a sima index es a fulltext index kozott?
-hogy jobb index-et kesziteni? melyiknek mik az elonyei, hatranyai?
-a) alter table tablanev add index ( mezo1, mezo2 );
-b) alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );

manualt olvasgattam, de ezekre nem kaptam belole szamomra ertheto valaszt

(#312) VladimirR válasza VladimirR (#311) üzenetére


VladimirR
nagyúr

meg egy kerdes:
ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:

1:
select id from tabla1 where name = 'nev';
ezt bepakolom egy valtozoba
select count( id ) from tabla2 where tid = valtozo;

2:
select count( id ) from tabla1 inner join tabla2 on tabla1.id = tabla2.tid where tabla1.id = 'nev';

azert kerdezgetek ennyi hulyeseget, mert nem egy kimondott izomgep-re keszulok attenni az adatbazist, ahol szamitani fog, hogy igazan jol legyenek belove maga az adattarolas is es a lekerdezesek is


segitsegeteket elore is koszonom

(#313) VladimirR


VladimirR
nagyúr

egy up a kesonkeloknek

(#314) Jester01 válasza VladimirR (#311) üzenetére


Jester01
veterán

egy up a kesonkeloknek
:C


mi a kulonbseg a varchar es a text adattipuxok kozott

varchar -nak a rekordban van foglalva hely (a maximális hossznak), text esetén csak a hossza és egy pointer van eltárolva. Ez utóbbi egy külön területre mutat. A text ezért lassabb, de kevesebb helyet foglal.

mi az az index prefix length

Az index csak ennyi karaktert használ. Az olyan értékeket amik ezen hosszig megegyeznek azonosnak tekinti. A lekérdezéskor a látszólag egyező értékekre még egy szűrés fut.

mi a kulonbseg szoveges (varchar, text) mezo eseteben a sima index es a fulltext index kozott?

Fulltext indexben mindenféle vicces módon lehet keresni (MATCH ... AGAINST), sima indexben csak összehasonlítás van (kisebb-nagyobb-egyenlő).

hogy jobb index-et kesziteni? melyiknek mik az elonyei, hatranyai?
-a) alter table tablanev add index ( mezo1, mezo2 );
-b) alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );


Ez a két eset nem ekvivalens. Az első esetben mezo2-re nincs index (ha az adott adatbáziskezelő jobbról használja az összetett indexeket - ellenkező esetben mezo1-re nem lesz index). Ha mindig mind a két mezőre van szűrés, akkor az első módszer jobb lesz. Ha viszont a két mezőre külön-külön is akarsz keresni akkor a másodikra van szükséged. Plusz ha UNIQUE feltételed is van, akkor az első esetben a (mezo1, mezo2) pároknak kell egyedinek lenni, míg a másodikban a mezo1 és mezo2 értékeknek külön-külön.

MOD: szóval az összetett indexet (az adatbáziskezelőtől függően jobbról vagy balról) tetszőleges hosszig lehet használni. Pl. a (mezo1, mezo2, mezo3) indexet lehet (mezo1), (mezo1, mezo2), (mezo1, mezo2, mezo3) indexként is használni.

ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:

Ránézésre nincs (feltéve, hogy van index mind a 2 lekérdezéshez). De az első a biztosabb.

Ha valahol hülyeséget írtam, javítsatok ki :B

[Szerkesztve]

[Szerkesztve]

Jester

(#315) alitak


alitak
senior tag

Van olyan mysql parancs, amivel már meglévő táblához tudok hozzátenni még1 oszlopot?

Nec arte, nec marte | használt hardverek jó áron: http://goo.gl/lUwLkw

(#316) RedAnt válasza alitak (#315) üzenetére


RedAnt
aktív tag

van: [link]

╚╦╦╦

(#317) RedAnt válasza Jester01 (#314) üzenetére


RedAnt
aktív tag

ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:

Ránézésre nincs (feltéve, hogy van index mind a 2 lekérdezéshez). De az első a biztosabb.


még annyit tennék hozzá hogy az első esetnél, ha egy konkrét sorra keresel a név alapján, akkor distinct-el érdemes és limit 1-gyel, így az első találatnál leáll, és használja az indexeket teljes tábla-scan helyett akkor is ha alapból figyelmen kívül hagyná. Forrás: [link]

╚╦╦╦

(#318) VladimirR válasza Jester01 (#314) üzenetére


VladimirR
nagyúr

kosz a valaszt (RedAnt, neked is)

varchar -nak a rekordban van foglalva hely (a maximális hossznak)
amennyire tudom, a varcharnak pont ez a lenyege a char-ral szemben, hogy nincs szamara a maximalis hossz lefoglalva, csak a hossz + 1 byte (ujabban (mysql5-tol talan), ha a varchar hossza nagyobb, mint 255 karakter, akkor lehet hossz + 2 byte is)

alter table tablanev add index ( mezo1 ).|. table tablanev add index ( mezo2 );
most latom csak, a ph motor kiszurte a lekerdezest, az ott eredetileg nem egy ''pocs'' volt, hanem egy masik alter (amennyire eszrevettem, ha a kovetkezo karaktersor van, akkor az atalakul .|. karakterekke: ; sqlparancs

ha van ket tablam van-e kulonbseg sebessegben, memoriahasznalatban az alabbi ketto kozott:
miert biztosabb es mit ertesz ezalatt?
(egyebkent most latom csak, hogy ezt meg en irtam el: a masodiknak ez a vege: tabla1.name = 'nev'

(#319) Jester01 válasza VladimirR (#318) üzenetére


Jester01
veterán

A biztosabbat úgy értettem, hogy így csak kisebb mértékben bízod a query optimizer-re a döntést. A két egyszerû lekérdezésnél (RedAnt javaslatával) valószínû, hogy 2 index lookup lesz az egész. Elvileg az optimizer is ezt adja és úgy megtakaríthatsz egy parancsfeldolgozást. Persze csak ha bízol benne :)

Ami a varchar-t illeti valóban igazad van. Mondjuk egy ilyen utalást találtam azért a leírásban: ''Remember that MySQL may treat VARCHAR columns as if they're CHAR columns, in which case the fixed format is used.'' De fogalmam sincs mire céloz.

Jester

(#320) Tele von Zsinór


Tele von Zsinór
őstag

Adott egy tábla, amiből sikerült törölni pár rekordot, ami mégis kéne. Belenéztem a fileokba, még benne van, phpmyadmin is jelzi, hogy van benne adat, ami már törölve lett, de még foglalja a helyet.
Van-e valami mód arra, hogy ezeket a rekordokat visszanyerjem? A szöveges info még egy dolog, de a számok, dátumok..., szal minden, amit binárisan tárol, az (szemre) nem triviális módon tárolódik.

(#321) Tele von Zsinór válasza Tele von Zsinór (#320) üzenetére


Tele von Zsinór
őstag

up! senki? :O

(#322) Tyrael válasza Tele von Zsinór (#320) üzenetére


Tyrael
senior tag

milyen tipusu adatbazist hasznalsz?
myisam, innodb, ...?

Tyrael

(#323) Tyrael válasza Tyrael (#322) üzenetére


Tyrael
senior tag

http://www.faqts.com/knowledge_base/view.phtml/aid/7272/fid/52
ez rosszat sejtet. :/

Tyrael

(#324) Tele von Zsinór válasza Tyrael (#322) üzenetére


Tele von Zsinór
őstag

MyISAM. A linket köszi, megnéztem, kipróbáltam 1-2 tippet, egyik sem jött be, csak törölték a fileból a táblából már törölt adatokat.

(#325) Tyrael válasza Tele von Zsinór (#324) üzenetére


Tyrael
senior tag

konkretan erre gondoltam:
How to Recover deleted records?

Oct 18th, 2001 10:40
Joshua Bug, Xiaojing Li,


Can't be done.

Tyrael

(#326) Tele von Zsinór válasza Tyrael (#325) üzenetére


Tele von Zsinór
őstag

:O

(#327) alitak


alitak
senior tag

Ha boolean típust szeretnék, akkor használjam a tinyint típust?

Nec arte, nec marte | használt hardverek jó áron: http://goo.gl/lUwLkw

(#328) emitter


emitter
őstag

hi,
miért nem akarja az igazságot ez a vack?

emitter@LAPTOP:~$ /usr/local/mysql/bin/mysql --user=root --password=jelszo
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.2.0-falcon-alpha MySQL Community Server (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database teszt;
Query OK, 1 row affected (0.02 sec)

mysql> \u teszt;
ERROR 1049 (42000): Unknown database 'teszt;'

:F

[Szerkesztve]

(#329) VladimirR válasza emitter (#328) üzenetére


VladimirR
nagyúr

use moge nem kell pontosvesszo (;)

(#330) emitter válasza VladimirR (#329) üzenetére


emitter
őstag

köszi

lenne egy újabb kérdésem, hogyan tudom a mysql-daemont más user nevén indítani? root-ként akarom, de ezt írja:
emitter@LAPTOP:/var/www$ mysqld --user=root
070121 21:34:07 [Warning] Ignoring user change to 'root' because the user was set to 'mysql' earlier on the command line

és mysql névvel indítja..

(#331) Jester01 válasza emitter (#330) üzenetére


Jester01
veterán

Nem valami alias, függvény vagy script az a mysqld amit indítasz?

Jester

(#332) emitter válasza Jester01 (#331) üzenetére


emitter
őstag

de, valszeg.. közben rájöttem, hogy ehhez nekem a /usr/local/mysql/bin/mysqld-t kell indítanom, és úgy jó.

(#333) emitter


emitter
őstag

hali!

Ha csak ftp-hozzáférésem van egy szerverhez, akkor arról hogyan tudom lementeni az adatbázist? phpMyadmin-t próbáltam felrakni rá, de a telepítésnél kéri, hogy egy config php-t másoljak a docroot-ba, namost ezt hogyan??
Vagy más ötlet mysql dumpolásra :F
thx

(#334) paramparya válasza emitter (#333) üzenetére


paramparya
őstag

hát, a docroot a server gyökere, pl. a ph-nál az, are a prohardver.hu mutat...
Tisztán ftp hozzáféréssel nem tudsz mysql-t dumpolni, hacsak nem férsz hozzá közvetlenül a könyvtárhoz, ahol az adatokat tárolja...

(#335) emitter válasza paramparya (#334) üzenetére


emitter
őstag

aham, köszi
sajnos nem férek hozzá az adatbázishoz..
És semmi workaround nincs erre? :(

(#336) emitter válasza emitter (#333) üzenetére


emitter
őstag

hmm, kiderült, h a myadmin docrootjáról volt szó :S
így már ok a dolog..

(#337) Tyrael válasza emitter (#333) üzenetére


Tyrael
senior tag

ha az ftp-vel elersz egy olyan mappat, ami webrol elerheto, akkor oda feltoltod a phpmyadmin-t, majd ezutan weben keresztul phpmyadminba belepsz, es nyomsz egy exportot.
ehhez persze rendelkezned kell a kivant adatbazishoz felhasznaloi fiokkal.

illetve ha az adott felhasznaloi fiokhoz engedelyezve van a tavoli eleres, akkor barmilyen db klienssel tudod tavolrol kezelni az adatbazist.
mi a cegnel az EMS-t favorizaljuk.

Tyrael

[Szerkesztve]

(#338) emitter


emitter
őstag

Megoldható valahogyan, hogy egy meglevő adatbázisban a táblák karakterkódolását megváltoztassam? phpmyadminnal próbálkozom, de nem látok ilyen lehetőséget..

(#339) emitter


emitter
őstag

(Importálás helyett) phpmyadminban sql-parancs futtatásához bekopiztam a db-m tartalmát, erre ezt kapom:

Hiba

SQL-kérés:

--
-- Dumping data for table `search_total`
--
INSERT INTO `search_total` ( `word` , `count` )
VALUES (
'menüpont', 0.30103
), (
'megszünik', 0.30103
), (

...

MySQL jelzi: Dokumentáció
#1062 - Duplicate entry 'még' for key 1


Ez mit akar jelenteni? És főleg mi ez a még cucc, mikor én mindenhol utf8-at használtam (az sql-tartalom másolásakor is; az adatbázisom is utf8-at használ, és a phpmyadminban is erre van állítva; böngésző szintén..)

(#340) vakondka válasza emitter (#339) üzenetére


vakondka
őstag

Szia,

Itt valami nagyon nem stimmel...két meződ van, egy word és egy count nevű ebben a táblában ?
Mert ha igen, akkor csak az első insert a helyes, a töbinek hiányzik az eleje.

INSERT INTO `search_total` ( `word` , `count` ) VALUES ('menüpont', 0.30103);
INSERT INTO `search_total` ( `word` , `count` ) VALUES ('megszünik', 0.30103);
stb..

ja igen, és kell a pontosvessző is az insert-ek közé.

[Szerkesztve]

https://toptarget.hu - Online Marketing Ügynökség

(#341) RedAnt válasza vakondka (#340) üzenetére


RedAnt
aktív tag

Azzal semmi baj nincs, ld. [link] - SQL-92 szabvány, mysql támogatja.

emitter: ilyen hiba akkor van, amikor egy utf-8-ban kódolt 'é' karaktert iso-8859-1-ként próbálnak értelmezni, de ha a phpmyadmin és a böngésződ is utf-8-ra van állítva, akkor passz... Esetleg ellenőrizd, milyen content-type headert kapsz.

[Szerkesztve]

╚╦╦╦

(#342) cucka válasza emitter (#339) üzenetére


cucka
addikt

duplicate entry for key azt jelenti, hogy van egy unique meződ, amibe insertnél már meglévő dolgot szeretnél pakolni, vagyis ettől már nem lenne unique.

elvileg ha utf8 van mindenhol, akkor nem kéne ilyen karakterkódolási probléma előjöjjön. ha az adatbázis utf8as, akkor valószínüleg a phpmyadmin kódolása lesz elrontva..

(#343) vakondka válasza RedAnt (#341) üzenetére


vakondka
őstag

mindig tanul valamit az ember :B
ez az SQL-92 hányas MySQL-nek felel meg ?

https://toptarget.hu - Online Marketing Ügynökség

(#344) RedAnt válasza vakondka (#343) üzenetére


RedAnt
aktív tag

nincs ilyen megfeleltetés. Alapból a mysql az sql92-re épít, de nem teljes az átfedés. Szóval a kérdés, hogy egy webes hasonlattal éljek, olyan mint hogy a CSS2 hányas IE-nek felel meg :)

╚╦╦╦

(#345) vakondka válasza RedAnt (#344) üzenetére


vakondka
őstag

Akkor ha konkrétan ezt kérdezem, meg tudod mondani hogy ez a multiple insert utasítás hanyas mysql-el fog menni?
A szolgáltatómnál ez van: MySQL 4.1.21-standard

Előre is köszi!

https://toptarget.hu - Online Marketing Ügynökség

(#346) cucka válasza vakondka (#345) üzenetére


cucka
addikt

valószínüleg bármelyiken. ez nem multiple insert utasítás, hanem maga az insert, csak kevés helyen használod ki ezt a tulajdonságát, hogy több sort is be tudsz szúrni egy menetben.

(#347) vakondka válasza cucka (#346) üzenetére


vakondka
őstag

kicsit rosszul fogalmaztam a kérdésemet, én is tudom, hogy ez sima insert, csak tudni szerettem volna, hogy menni fog-e.
Köszi a választ :R

https://toptarget.hu - Online Marketing Ügynökség

(#348) Tyrael válasza vakondka (#347) üzenetére


Tyrael
senior tag

idezet a mysql manualbol:
The INSERT ... VALUES form with multiple value lists is supported in MySQL 3.22.5 or later.

Tyrael

[Szerkesztve]

(#349) vakondka válasza Tyrael (#348) üzenetére


vakondka
őstag

Na erre voltam kíváncsi konkrétan ! :C köszi !

https://toptarget.hu - Online Marketing Ügynökség

(#350) alcsapalcsa


alcsapalcsa
tag

lehet teljesen off a kérdés, de azt sem tudom, hogyan keressek rá a topicok között. ha nagy gáz a kérdés itt, akkor elnézést!

olyan szolgáltatót keresek, ahol ha több mysql adatbázist lehet létrehozni, de nem külön adatbázisonként számláznak, hanem mondjuk méret alapján, tehát kapok 10-20Mb-ot és abban létrehozhatok akár 3-4 adatbázist is. tud vki ilyet? elnézést a buta kérdésért és valszeg a rossz helyen feltettért....

Útvonal

Fórumok  »  Szoftverfejlesztés  »  MySQL topic
Copyright © 2000-2024 PROHARDVER Informatikai Kft.