Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć sortowanie w MySQL

W MySQL sortowanie może być stosowane na wielu poziomach. Może być stosowany na poziomie serwera, połączenia, bazy danych, tabeli, a nawet na poziomie kolumn. Możesz również określić sortowanie w zapytaniach, które zastąpi wszelkie sortowanie zastosowane na poziomie bazy danych, tabeli lub kolumny.

Oto jak dowiedzieć się, jakie sortowanie jest stosowane na każdym z tych poziomów.

Skrót do sortowania połączeń, serwerów i baz danych

Najszybszym sposobem uzyskania informacji o sortowaniu dla połączenia, serwera i bazy danych jest użycie poniższej instrukcji. Ta instrukcja zwraca wszystkie zmienne systemowe zaczynające się od collation :

SHOW VARIABLES LIKE 'collation%';

Zwraca sortowanie dla serwera, połączenia i bazy danych. Tak:

+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database   | utf8_general_ci    |
| collation_server     | utf8mb4_0900_ai_ci |
+----------------------+--------------------+

W razie potrzeby możesz również zwrócić każdą z tych zmiennych systemowych osobno. Poniżej znajdziesz instrukcje, jak to zrobić.

Sortowanie na poziomie serwera

Uruchomienie następującego polecenia zwraca domyślne sortowanie serwera.

SELECT @@collation_server;

Przykładowy wynik:

+--------------------+
| @@collation_server |
+--------------------+
| utf8mb4_0900_ai_ci |
+--------------------+

Układanie na poziomie połączenia

Gdy uruchamiasz zapytanie w bazie danych MySQL, MySQL używa wielu zmiennych systemowych w celu określenia zestawu znaków i sortowania, które mają być używane przy uruchamianiu zapytań. Jeśli klient używa innego zestawu znaków niż serwer, MySQL może go przetłumaczyć na odpowiedni zestaw znaków i sortowanie.

Wysyłając wyniki zapytania z powrotem do klienta, MySQL może w razie potrzeby przetłumaczyć te wyniki z powrotem na inny zestaw znaków. MySQL używa zmiennych systemowych do określenia, które zestawy znaków i sortowania mają być używane w każdym z tych kroków.

Poniższa lista wyróżnia sortowanie połączeń (możesz użyć tej samej składni dla dowolnej zmiennej systemowej):

SELECT @@collation_connection;

Przykładowy wynik:

+------------------------+
| @@collation_connection |
+------------------------+
| utf8mb4_0900_ai_ci     |
+------------------------+

Możesz również zwrócić wszystkie zmienne systemowe zestawu znaków za pomocą następującego zapytania:

SHOW VARIABLES LIKE 'character_set%';

Przykładowy wynik:

+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8mb4                          |
| character_set_connection | utf8mb4                          |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8mb4                          |
| character_set_server     | utf8mb4                          |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+

Sortowanie na poziomie bazy danych

Do sprawdzenia sortowania w danej bazie danych można użyć następującej instrukcji:

USE Music;
SELECT @@character_set_database, @@collation_database;

Przykładowy wynik:

+--------------------------+----------------------+
| @@character_set_database | @@collation_database |
+--------------------------+----------------------+
| utf8                     | utf8_general_ci      |
+--------------------------+----------------------+

Alternatywnie możesz użyć następującej instrukcji (która eliminuje potrzebę zmiany domyślnej bazy danych):

SELECT 
   default_character_set_name, 
   default_collation_name
FROM information_schema.schemata 
WHERE schema_name = 'Music';

Przykładowy wynik:

+----------------------------+------------------------+
| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| utf8                       | utf8_general_ci        |
+----------------------------+------------------------+

Sortowanie na poziomie tabeli

Uruchomienie poniższej instrukcji zwróci całą masę kolumn, które zawierają informacje o dowolnej pasującej tabeli/tabelach. Jedna z tych kolumn nazywa się Sortowanie i zapewnia zestawienie wszystkich pasujących tabel.

SHOW TABLE STATUS LIKE '%Artists%';

Oczywiście będziesz musiał zastąpić %Artists% z własną nazwą stołu. I możesz pominąć znaki procentowe, jeśli uważasz, że nie są one potrzebne. Ta instrukcja akceptuje również inne klauzule, takie jak FROM , WHERE i IN , więc daje to kilka opcji podczas tworzenia oświadczenia.

Jednym z problemów z poprzednią instrukcją jest to, że zwraca ona wiele kolumn i możesz być zmuszony do przewijania w bok, aby znaleźć kolumnę sortowania. Jeśli interesują Cię tylko informacje o sortowaniu, możesz zapytać o information_schema.tables . W razie potrzeby można również zwrócić sortowanie dla wszystkich tabel w danej bazie danych. Oto jak to zrobić:

SELECT 
   table_schema,
   table_name,
   table_collation   
FROM information_schema.tables
WHERE table_schema = 'Music';

Przykładowe wyniki:

+--------------+------------+-----------------+
| TABLE_SCHEMA | TABLE_NAME | TABLE_COLLATION |
+--------------+------------+-----------------+
| Music        | Albums     | utf8_general_ci |
| Music        | Artists    | utf8_general_ci |
| Music        | Genres     | utf8_general_ci |
+--------------+------------+-----------------+

Sortowanie na poziomie kolumny

Uruchomienie następującego zapytania zwraca informacje o każdej kolumnie w danej tabeli. Obejmuje to informacje o sortowaniu.

SHOW FULL COLUMNS FROM Artists;

Powoduje to, że wiele kolumn jest zwracanych z różnego rodzaju informacjami o kolumnie, w tym sortowaniem.

Możesz zmniejszyć liczbę zwracanych kolumn, wykonując następujące czynności:

SELECT 
   column_name, 
   character_set_name, 
   collation_name 
FROM information_schema.columns 
WHERE table_name = 'Artists';

Przykładowy wynik:

+-------------+--------------------+-----------------+
| COLUMN_NAME | CHARACTER_SET_NAME | COLLATION_NAME  |
+-------------+--------------------+-----------------+
| ArtistId    | NULL               | NULL            |
| ArtistName  | utf8               | utf8_spanish_ci |
| ActiveFrom  | NULL               | NULL            |
+-------------+--------------------+-----------------+

Możesz także uruchomić SHOW CREATE TABLE oświadczenie, aby wyświetlić definicję tabeli (wraz z jej kolumnami).

SHOW CREATE TABLE Artists;

To zwraca coś takiego:

+---------+--------------------------------+
| Table   | Create Table                                                                                                                                                                                                                                                                |
+---------+--------------------------------+
| Artists | CREATE TABLE `Artists` (
  `ArtistId` int(11) NOT NULL AUTO_INCREMENT,
  `ArtistName` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `ActiveFrom` datetime NOT NULL,
  PRIMARY KEY (`ArtistId`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 |
+---------+--------------------------------+

Jednak zestaw znaków i informacje o sortowaniu są zwracane tylko wtedy, gdy różnią się od domyślnego sortowania tabeli. W tym przykładzie jawnie ustawiłem ArtistName kolumna do innego sortowania tylko w celach demonstracyjnych (w przeciwnym razie informacje o sortowaniu nie zostałyby zwrócone).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przenieść wszystkie bazy danych MySQL ze starego na nowy serwer?

  2. Zapytanie o tabele MySQL Update Inner Join

  3. MAX() – Znajdź maksymalną wartość w kolumnie w MySQL

  4. MySQL 'Order By' - poprawne sortowanie znaków alfanumerycznych

  5. Jak uciec od pojedynczego cudzysłowu i znaków specjalnych w MySQL