In MySQL weet ik dat ik de tabellen in een database kan weergeven met:
SHOW TABLES
Ik wil deze tabelnamen echter in een andere tabel invoegen, bijvoorbeeld:
INSERT INTO metadata(table_name) SHOW TABLES /* does not work */
Is er een manier om de tabelnamen te krijgen met behulp van een standaard SELECT-instructie, zoiets als:
INSERT INTO metadata(table_name) SELECT name FROM table_names /* what should table_names be? */
Antwoord 1, autoriteit 100%
Om de naam van alle tabellen te krijgen, gebruik:
SELECT table_name FROM information_schema.tables;
Om de naam van de tabellen uit een specifieke database te halen, gebruik:
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'your_database_name';
Gebruik nu deze vraag om de oorspronkelijke vraag te beantwoorden:
INSERT INTO table_name
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'your_database_name';
Zie voor meer details: http://dev.mysql .com/doc/refman/5.0/en/information-schema.html
Antwoord 2, autoriteit 33%
Probeer:
select * from information_schema.tables
Zie: http://dev.mysql.com/ doc/refman/5.0/en/information-schema.html
Antwoord 3, autoriteit 5%
Als we meerdere databases hebben en we moeten alle tabellen voor een bepaalde database selecteren, kunnen we TABLE_SCHEMA
gebruiken om de databasenaam te definiëren als:
select table_name from information_schema.tables where TABLE_SCHEMA='dbname';
Antwoord 4, autoriteit 2%
Naast het gebruik van de INFORMATION_SCHEMA tabel, zou u, om SHOW TABLES te gebruiken om in een tabel in te voegen, het volgende gebruiken
<?php
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);
$arrayCount = 0
while ($row = mysql_fetch_row($result)) {
$tableNames[$arrayCount] = $row[0];
$arrayCount++; //only do this to make sure it starts at index 0
}
foreach ($tableNames as &$name {
$query = "INSERT INTO metadata (table_name) VALUES ('".$name."')";
mysql_query($query);
}
?>
Antwoord 5, autoriteit 2%
Bekijk de tabel TABLES
in de database information_schema
. Het bevat informatie over de tabellen in uw andere databases. Maar als je gedeelde hosting gebruikt, heb je er waarschijnlijk geen toegang toe.
Antwoord 6
Ik denk dat u de gewenste gegevens uit INFORMATION_SCHEMA TABLES kunt halen.
Je kunt hier meer informatie vinden: http://dev .mysql.com/doc/refman/5.0/en/tables-table.html
Antwoord 7
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'DATABASE'
Antwoord 8
MySQL INFORMATION_SCHEMA.TABLES
tabel bevat gegevens over beide tabellen (geen tijdelijke maar permanente) en views. De kolom TABLE_TYPE
definieert of dit record voor tabel of weergave is (voor tabellen TABLE_TYPE='BASE TABLE'
en voor weergaven TABLE_TYPE='VIEW'
). Dus als je alleen je schema (database) tabellen wilt zien, is er de volgende vraag:
SELECT *
FROM information_schema.tables
WHERE table_type='BASE TABLE'
AND table_schema='myschema'
Antwoord 9
Ik denk dat het nuttig kan zijn om erop te wijzen dat als je tabellen wilt selecteren die specifieke woorden bevatten, je dit eenvoudig kunt doen met de SELECT
(in plaats van SHOW
) . Onderstaande zoekopdracht beperkt de zoekopdracht eenvoudig tot tabellen die “trefwoord” bevatten
SELECT *
FROM information_schema.tables
WHERE table_name like "%keyword%"
Antwoord 10
Er is nog een andere, eenvoudigere manier om tafelnamen te krijgen
SHOW TABLES FROM <database_name>
Antwoord 11
Deze onderstaande zoekopdracht werkte voor mij. Dit kan het aantal databases, tabellen, kolomnamen, gegevenstypen en kolommen weergeven.
**select table_schema Schema_Name ,table_name TableName,column_name ColumnName,ordinal_position "Position",column_type DataType,COUNT(1) ColumnCount
FROM information_schema.columns
GROUP by table_schema,table_name,column_name,ordinal_position, column_type;**
Antwoord 12
Voor het ophalen van de naam van alle tabellen:
SELECT table_name
FROM information_schema.tables;
Als u het voor een specifieke database moet ophalen:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'your_db_name';
Uitvoer:
+--------------------+
| table_name |
+--------------------+
| myapp |
| demodb |
| cliquein |
+--------------------+
3 rows in set (0.00 sec)
Antwoord 13
Als u wilt invoegen, bijwerken en verwijderen, doet u het volgende:
$teste = array('LOW_PRIORITY', 'DELAYED', 'HIGH_PRIORITY', 'IGNORE', 'INTO', 'INSERT', 'UPDATE', 'DELETE', 'QUICK', 'FROM');
$teste1 = array("\t", "\n", "\r", "\0", "\x0B");
$strsql = trim(str_ireplace($teste1, ' ', str_ireplace($teste, '', $strsql)));
$nomeTabela = substr($strsql, 0, strpos($strsql, ' '));
print($nomeTabela);
exit;