Należy zauważyć, że informacja_schema jest dostępna tylko w MySQL 5.
Vex
4
O ile mogę powiedzieć, że najbliższe pobieranie informacji o zestawie znaków w kolumnie MySQL <5 polega na POKAŻ PEŁNE KOLUMNY z tableName
Robin Winslow,
14
Ta odpowiedź była bardzo pomocna, ale jeśli chcesz rozwiązać problem z zestawem znaków / zestawieniem, prawdopodobnie będziesz musiał również sprawdzić połączenie zestaw znaków, zestaw znaków klienta itp ...: POKAŻ ZMIENNE PODOBNE „zestaw znaków”; POKAŻ ZMIENNE JAK „collation%”;
BenL
2
operacja na tabeli zwraca dla mnie „Pusty zestaw (0,00 s)”
minhajul
9
Dla Schema-Dummies: Uwaga, schemanamemoże to być tylko nazwa bazy danych.
Witaj, to mówi w przyszłości! Dla każdego, kto sprawdza tę odpowiedź, ta metoda pokazuje tylko sortowanie, a nie zestaw znaków. Wierzę, że zmieniło się to w MySQL 5. (Zobacz odpowiedź z większą liczbą punktów, aby uzyskać lepszą metodę).
fideloper
20
@fideloper, Za pomocą sortowania możesz rozpoznać zestaw znaków. Jest tak, ponieważ pierwsza część zestawiania zawiera zestaw znaków, np. Jeśli zestawienie jest latin1_swedish_ci, zestaw znaków nie może być niczym innym niż latin1. Jeśli zestawienie jest utf8mb4_general_ci, zestaw znaków nie może być niczym innym niż utf8mb4.
Pacerier,
1
To powie ci zestaw znaków tabeli. Nie informuje o zestawie znaków tabel utworzonych w przyszłości, gdy w składni tworzenia tabeli nie podano żadnego zestawu znaków (do tego potrzebny będzie zestaw znaków schematu).
HoldOffHunger
217
W przypadku baz danych :
USE your_database_name;
show variables like"character_set_database";-- or:-- show variables like "collation_database";
Dla jakiej wersji mysql wyświetla to wyjście type? Mam mysql 5.7.9 i typepokazuję data typekolumnę, a nie character set. Niektórzy lubią int(10)varchar(255)... itd. I nieutf8
MTK
Moje wyjście pokazuje typejak data typeoraz @MTK, być może powyżej jest błąd pasty kopia w „wyjściu” sekcji.
Proszę zanotować. Zestawienie pokazane w stanie tabeli pokazu nie jest zestawem znaków tabeli. Zestawienie informuje, w jaki sposób postacie są sortowane / porównywane. np. utf8_bin_ci porównuje dane bez względu na wielkość liter (bez rozróżniania wielkości liter, więc „m” i „M” są takie same), utf8_bin_cs porównuje z rozróżnianiem wielkości liter (więc „m” i „M” są różne). To nie to samo, co zestaw znaków w tabeli.
SELECT TABLE_SCHEMA,
NAZWA TABELI,
CCSA.CHARACTER_SET_NAME AS DEFAULT_CHAR_SET,
NAZWA KOLUMNY,
COLUMN_TYPE,
C.CHARACTER_SET_NAME
Z Information_schema.TABLES AS T
DOŁĄCZ do schematu_informacyjnego.COLUMNS AS C USING (TABLE_SCHEMA, TABLE_NAME)
DOŁĄCZ do schematu informacyjnego.COLLATION_CHARACTER_SET_APPLICABILITY AS CCSA
ON (T.TABLE_COLLATION = CCSA.COLLATION_NAME)
GDZIE TABELA_SCHEMA = SCHEMA ()
ORAZ C.DATA_TYPE IN („enum”, „varchar”, „char”, „text”, „mediumtext”, „longtext”)
ZAMÓW WEDŁUG TABELI_SCHEMA,
NAZWA TABELI,
NAZWA KOLUMNY
;
select default_character_set_name from information_schema.schematato za mało, ponieważ nie można powiedzieć, który wiersz koreluje z bazą danych. Użyj select default_character_set_name,schema_name from information_schema.schematalub po prostu: select*from information_schema.schemata.
Pacerier,
Użyłem SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G; I działało świetnie :) Dzięki!
Sankalp,
23
Aby zobaczyć domyślne sortowanie bazy danych:
USE db_name;SELECT@@character_set_database,@@collation_database;
@Pacerier, czy faktycznie właściwie porównałeś moją odpowiedź?
sjas
15
W przypadku baz danych :
SHOW CREATEDATABASE"DB_NAME_HERE";
Podczas tworzenia bazy danych (MySQL) domyślnym zestawem znaków / zestawieniem jest zawsze LATIN, zamiast tego wybrano inny na początku tworzenia bazy danych
Cytowanie potrzebne do „domyślnego zestawu znaków / sortowania jest zawsze LATIN” w MySQL.
Pacerier,
Wymagany cytat? Czy kiedykolwiek korzystałeś z bazy danych MySQL? Wszyscy wiedzą, że domyślny zestaw / zestaw znaków wynika z tego, latin1_swedish_ciże Monty Widenius, twórca MySQL, jest Szwedem i nie myślał tak dużego obrazu, jak powinien, kiedy zaczynał.
Spencer Williams
5
Jak wielu pisało wcześniej, SHOW FULL COLUMNS powinna być preferowaną metodą uzyskiwania informacji o kolumnach. Brakuje sposobu na uzyskanie zestawu znaków bez bezpośredniego sięgania do tabel metadanych:
SHOW FULL COLUMNS FROM my_table WHERE Field ='my_field'
SHOW COLLATION WHERE Collation ='collation_you_got'
SHOW CREATE TABLE
, jak omówiono w stackoverflow.com/questions/57628217/…Odpowiedzi:
Oto jak bym to zrobił -
W przypadku schematów (lub baz danych - są to synonimy):
Dla tabel:
Dla kolumn:
źródło
schemaname
może to być tylko nazwa bazy danych.Dla kolumn :
źródło
latin1_swedish_ci
, zestaw znaków nie może być niczym innym niżlatin1
. Jeśli zestawienie jestutf8mb4_general_ci
, zestaw znaków nie może być niczym innym niżutf8mb4
.W przypadku baz danych :
Por. ta strona . I sprawdź instrukcję MySQL
źródło
Dla wszystkich baz danych, które masz na serwerze:
Wynik:
W przypadku pojedynczej bazy danych :
Wynik:
Uzyskiwanie zestawień dla tabel :
LUB - wyświetli pełny kod SQL do utworzenia tabeli:
mysql> show create table my_tablename
Pobieranie zestawienia kolumn :
wynik:
źródło
type
? Mam mysql 5.7.9 itype
pokazujędata type
kolumnę, a niecharacter set
. Niektórzy lubiąint(10)
varchar(255)
... itd. I nieutf8
type
jakdata type
oraz @MTK, być może powyżej jest błąd pasty kopia w „wyjściu” sekcji.Dla tabel :
SHOW TABLE STATUS
wyświetli wszystkie tabele.Filtruj za pomocą:
źródło
Do baz danych :
Wystarczy użyć tych poleceń:
źródło
źródło
Zawsze tylko patrzę
SHOW CREATE TABLE mydatabase.mytable
.W przypadku bazy danych wydaje się, że musisz na nią spojrzeć
SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA
.źródło
select default_character_set_name from information_schema.schemata
to za mało, ponieważ nie można powiedzieć, który wiersz koreluje z bazą danych. Użyjselect default_character_set_name,schema_name from information_schema.schemata
lub po prostu:select*from information_schema.schemata
.SELECT * FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '<database-name>' \G;
I działało świetnie :) Dzięki!Aby zobaczyć domyślne sortowanie bazy danych:
Aby zobaczyć zestawienie tabeli:
Aby zobaczyć zestawienie kolumn:
źródło
W przypadku tabel i kolumn :
źródło
W przypadku baz danych :
Przykładowe dane wyjściowe:
źródło
W przypadku baz danych :
Podczas tworzenia bazy danych (MySQL) domyślnym zestawem znaków / zestawieniem jest zawsze LATIN, zamiast tego wybrano inny na początku tworzenia bazy danych
źródło
latin1_swedish_ci
że Monty Widenius, twórca MySQL, jest Szwedem i nie myślał tak dużego obrazu, jak powinien, kiedy zaczynał.Jak wielu pisało wcześniej, SHOW FULL COLUMNS powinna być preferowaną metodą uzyskiwania informacji o kolumnach. Brakuje sposobu na uzyskanie zestawu znaków bez bezpośredniego sięgania do tabel metadanych:
źródło