sql >> Database teknologi >  >> RDS >> Mysql

Sådan opretter og sletter du databaser og tabeller i MySQL


Introduktion

MySQL vedligeholder de data, den administrerer i tabeller og databaser. Tabeller gemmer data inden for foruddefinerede skemaer af kolonner og datatyper. Databaser er en struktur, der kan indeholde flere tabeller, indekser, procedurer og hjælpe med at definere et omfang for privilegier, tilpasninger og mere.

I denne guide viser vi dig, hvordan du opretter tabeller og databaser i MySQL. Vi viser dig, hvordan du administrerer nogle funktioner i begge strukturer, og derefter vil vi dække, hvordan du fjerner dem for at rydde op, hvis du ikke længere har brug for dem.



Forudsætninger

For at følge med i denne vejledning skal du logge ind på en MySQL-server med en bruger med administrative rettigheder ved hjælp af mysql kommandolinjeklient.

Hvis du ikke vil logge ind med roden MySQL administrativ konto, skal din bruger mindst bruge CREATE privilegium til at udføre de handlinger, der er beskrevet i denne vejledning.

Du kan kontrollere din brugers tilgængelige privilegier ved at skrive:

SHOW GRANTS\G


Hvordan opretter du en ny database?

Den første ting, vi vil demonstrere, hvordan man gør, er at oprette en ny database. I MySQL indeholder databaser tabeller, indekser, procedurer og andre ressourcer, der typisk er relateret til et enkelt projekt. Hver af disse ressourcer skal oprettes i en database, så det er et godt første skridt at lære, hvordan man opretter en ny database.

Den grundlæggende syntaks, der bruges til at oprette en ny database, ser sådan ud:

CREATE DATABASE <db_name>;

Erstat med det navn, du ønsker at give din database, før du udfører kommandoen. Denne kommando vil oprette en database med det givne navn og indstille den nuværende bruger som den nye databases ejer.

Databasen vil bruge de systemdækkende standarder for egenskaberne for tegnsæt, sortering og kryptering:

  • TEGNSÆT: indstiller tegnsættet for den nye database. Dette er en lokaliseringsindstilling, der påvirker, hvilke tegn der betragtes som store bogstaver, små bogstaver og cifre.
  • SAMLER: indstiller sorteringen , eller sorteringsrækkefølge for databasen. Dette er en lokaliseringsindstilling, der bestemmer, hvordan varer organiseres, når de bestilles.
  • KRYPTERING: indstiller kryptering til for den nye database. Dette er en boolesk indstilling, der kan være enten "Y" for ja eller "N" for nej.

Du kan finde de tilgængelige tegnsæt til din installation ved at skrive:

SHOW CHARACTER SET;

Ligeledes kan du finde de tilgængelige sorteringer ved at skrive:

SHOW COLLATION;

Hvis du ønsker at angive en ikke-standardværdi for en af ​​disse parametre, kan du gøre det ved at tilføje dem efter den primære oprettelsessætning som denne:

CREATE DATABASE <db_name>  CHARACTER SET = 'utf8mb4'  COLLATE = 'utf8mb4_0900_ai_ci'  ENCRYPTION = 'Y';

For at følge eksemplerne i denne vejledning skal du oprette en database kaldet school ved at bruge din forekomsts standardlokalitetsindstillinger og UTF8-tegnsættet:

CREATE DATABASE school CHARACTER SET = 'utf8mb4';

Dette vil oprette din nye database ved hjælp af de specifikationer, du har angivet.



List eksisterende databaser

For at få vist de databaser, der er tilgængelige på din server, skal du skrive:

SHOW DATABASES;

Dette vil vise hver af de databaser, der aktuelt er defineret i miljøet:

+--------------------+  Database           |+--------------------+  information_schema |  mysql              |  performance_schema |  school             |  sys                |  testing            |+--------------------+6 rows in set (0.00 sec)

Du kan bekræfte, at de indstillinger, du har angivet, blev anvendt på den nye skole database ved hjælp af SHOW CREATE DATABASE kommando:

SHOW CREATE DATABASE school;

Outputtet viser kommandoen og de muligheder, der bruges til at oprette databasen, og udfylder indstillingerne med de anvendte standardværdier:

+----------+----------------------------------------------------------------------------------------------------------------------------------+  Database | Create Database                                                                                                                  |+----------+----------------------------------------------------------------------------------------------------------------------------------+  school   | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)


Sådan skifter du til en anden database i MySQL

Når først din database er oprettet, kan du enten arbejde med den på et par forskellige måder.

Den første mulighed er at angive databasen som et argument i hver kommando, du bruger. For at spare tid, hvis du kører flere kommandoer relateret til databasens objekter, kan du dog også "skifte til" eller "bruge" databasen til at indstille din nye database som standardkontekst for alle databaserelaterede kommandoer, som du vil køre .

For at skifte til en anden database, skriv:

USE <db_name>;

I vores tilfælde kan vi skifte til skolen database vi oprettede ved at skrive:

USE school;


Opret tabeller i databaser

Når du har oprettet en database, kan du definere tabeller og andre objekter inde for at gemme og administrere dine data. I MySQL består tabeller af et tabelnavn, kolonnedefinitionerne (disse inkluderer blandt andet navne, datatyper og begrænsninger) og tabelindstillinger.


Hvad er syntaksen for MySQL's CREATE TABLE kommando?

Den grundlæggende syntaks til at oprette tabeller ved hjælp af MySQL's CREATE TABLE kommandoen ser sådan ud:

CREATE TABLE <table_name> (    <column_name> <data_type> [<column_constraint>],    [<table_constraint>,]);

Vi kan opdele ovenstående kommandoskabelon i følgende komponenter:

  • OPRET TABEL :Den grundlæggende skabelseserklæring. pladsholder skal erstattes med navnet på den tabel, du ønsker at bruge.
  • :Definerer en grundlæggende kolonne i tabellen. pladsholder skal erstattes med det navn, du ønsker at bruge til din kolonne. angiver MySQL-datatypen for kolonnen. Data gemt i tabellen skal være i overensstemmelse med kolonnestrukturen og kolonnedatatyperne for at blive accepteret.
  • :Kolonnebegrænsninger er valgfrie begrænsninger, der tilføjer yderligere krav til data. For eksempel kan du kræve, at indtastninger ikke er null, unikke eller positive heltal.
  • :Tabelbegrænsninger ligner kolonnebegrænsninger, men involverer interaktion mellem flere kolonner. For eksempel kan du have en tabelbegrænsning, der kontrollerer, at en DATE_OF_BIRTH er før DATE_OF_DEATH i en tabel.


Hvordan opretter du kun tabeller, hvis de ikke allerede eksisterer?

MySQL's standardadfærd er at rejse en fejl, hvis du forsøger at oprette en tabel, der allerede eksisterer. Men den valgfrie HVIS IKKE FINDER klausul kan tilføjes til oprettelsessætningen for at tilsidesætte denne adfærd.

Du kan bruge HVIS IKKE FINDER klausul ved at indsætte den i kommandoen efter CREATE TABLE sætning men før tabelnavnet:

CREATE TABLE IF NOT EXISTS table_name (    column_name TYPE [column_constraint],    [table_constraint,]);

Dette vil ændre kommandoens adfærd som følger:Hvis det angivne tabelnavn allerede eksisterer, vil MySQL give en advarsel i stedet for en fejl. Resten af ​​kommandoens adfærd forbliver den samme.



Oprettelse af tabeller i MySQL-databaser

Kommandoskabelonen givet ovenfor er nok til at skabe grundlæggende tabeller. For at fremme vores eksempel vil vi oprette to tabeller i vores skole database. Én tabel kaldes forsyninger og den anden vil blive kaldt lærere :

I forsyninger tabel, inkluderer vi følgende felter:

  • id: Et unikt ID for hver type skoleforsyning.
  • navn: Navnet på et bestemt skoleelement.
  • beskrivelse: En kort beskrivelse af varen.
  • producent: Navnet på vareproducenten.
  • farve: Farven på varen.
  • beholdning: Antallet af varer vi har til en bestemt type skoleforsyning. Dette bør aldrig være mindre end 0.

Vi kan oprette forsyningerne tabel med ovenstående kvaliteter ved hjælp af følgende SQL:

CREATE TABLE supplies (  id INT AUTO_INCREMENT PRIMARY KEY,  name VARCHAR(255),  description VARCHAR(255),  manufacturer VARCHAR(255),  color VARCHAR(255),  inventory INT CHECK (inventory >= 0));

Dette vil oprette tilbehør tabel i skolen database. Den PRIMÆR NØGLE kolonnebegrænsning er en speciel begrænsning, der bruges til at angive kolonner, der unikt kan identificere poster i tabellen. Som sådan angiver begrænsningen, at kolonnen ikke kan være nul og skal være unik. MySQL opretter indekser for primære nøglekolonner for at øge forespørgselshastigheden.

Bekræft, at den nye tabel er til stede ved at skrive:

SHOW TABLES;
+------------------+  Tables_in_school |+------------------+  supplies         |+------------------+1 row in set (0.01 sec)

Du kan bekræfte, at skemaet afspejler din definition ved at skrive:

SHOW CREATE TABLE supplies\G
*************************** 1. row ***************************       Table: suppliesCreate Table: CREATE TABLE `supplies` (  `id` int NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  `description` varchar(255) DEFAULT NULL,  `manufacturer` varchar(255) DEFAULT NULL,  `color` varchar(255) DEFAULT NULL,  `inventory` int DEFAULT NULL,  PRIMARY KEY (`id`),  CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec

De kolonner, datatyper og begrænsninger, vi har angivet, er til stede i outputtet, selvom rækkefølgen og visningen kan være anderledes.

Opret derefter en lærer bord. I denne tabel skal følgende kolonner være til stede:

  • id :Et unikt medarbejder-id.
  • fornavn :Lærerens fornavn.
  • efternavn :Lærerens efternavn.
  • emne :Det fag, som læreren er ansat til at undervise i.
  • grade_level :Klasseniveauet for elever, som underviseren er ansat til at undervise.

Opret lærere tabel med ovenstående skema med følgende SQL:

CREATE TABLE teachers (  id INT AUTO_INCREMENT PRIMARY KEY,  first_name VARCHAR(255),  last_name VARCHAR(255),  subject VARCHAR(255),  grade_level INT);


Sådan opretter du tabeller med primærnøgler og fremmednøgler

Du kan finde information om oprettelse af tabeller med primære og fremmede nøgler i nogle af vores andre MySQL-vejledninger. Primære nøgler og fremmednøgler er begge typer databasebegrænsninger i MySQL.

En primærnøgle er en speciel kolonne eller kolonne, der med garanti er unik på tværs af rækker i samme tabel. Alle primære nøgler kan bruges til entydigt at identificere en specifik række. Primære nøgler sikrer ikke kun, at hver række har en unik værdi for de primære nøglekolonner, de sikrer også, at ingen rækker indeholder NULL værdier for den kolonne. Ofte bruger den primære nøgle i MySQL følgende format til at angive en automatisk tildelt stigende primærnøgle:id INT AUTO_INCREMENT PRIMARY KEY .

Fremmednøgler er en måde at sikre, at en kolonne eller kolonner i en tabel matcher værdierne i en anden tabel. Dette hjælper med at sikre referenceintegritet mellem tabeller.




Sådan får du vist tabeller i MySQL

I MySQL kan du liste tabeller på et par forskellige måder afhængigt af, hvilken information du leder efter.

Hvis du gerne vil se, hvilke tabeller der er tilgængelige i din database, skal du skrive:

SHOW TABLES;
+------------------+  Tables_in_school |+------------------+  supplies         |  teachers         |+------------------+2 rows in set (0.00 sec)

Du kan også kontrollere, at skemaet for tabellen matcher dine specifikationer:

DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+  Field        | Type         | Null | Key | Default | Extra          |+--------------+--------------+------+-----+---------+----------------+  id           | int          | NO   | PRI | NULL    | auto_increment |  name         | varchar(255) | YES  |     | NULL    |                |  description  | varchar(255) | YES  |     | NULL    |                |  manufacturer | varchar(255) | YES  |     | NULL    |                |  color        | varchar(255) | YES  |     | NULL    |                |  inventory    | int          | YES  |     | NULL    |                |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)

lærerne tabel ser ud til at matche vores definition.



Sådan ændres tabeller med ALTER TABLE kommando

Hvis du har brug for at ændre skemaet for en eksisterende tabel i MySQL, kan du bruge ALTER TABLE kommando. ALTER TABLE kommandoen ligner meget CREATE TABLE kommando, men fungerer på en eksisterende tabel.


Ændre tabelsyntaks

Den grundlæggende syntaks til at ændre tabeller i MySQL ser sådan ud:

ALTER TABLE <table_name> <change_command> <change_parameters>;

angiver den nøjagtige type ændring, du gerne vil foretage, uanset om det involverer indstilling af forskellige muligheder på tabellen, tilføjelse eller fjernelse af kolonner eller ændring af typer eller begrænsninger. en del af kommandoen indeholder yderligere oplysninger, som MySQL har brug for for at fuldføre ændringen.



Tilføjelse af kolonner til tabeller

Du kan tilføje en kolonne til en MySQL-tabel med ADD ændre kommando. Ændringsparametrene vil omfatte kolonnenavn, type og muligheder, ligesom du ville angive dem i CREATE TABLE kommando.

For eksempel at tilføje en kolonne kaldet missing_column af teksten skriv til en tabel kaldet some_table , ville du skrive:

ALTER TABLE some_table ADD missing_column text;


Fjernelse af kolonner fra tabeller

Hvis du i stedet ønsker at fjerne en eksisterende kolonne, kan du bruge DROP COLUMN kommando i stedet. Du skal angive navnet på den kolonne, du ønsker at slette som en ændringsparameter:

ALTER TABLE some_table DROP COLUMN useless_column;


Ændring af datatypen for en kolonne

For at ændre datatypen for en kolonne kan du bruge ALTER COLUMN skift kommando med MODIFY COLUMN kolonne kommando. Parametrene i denne sammenhæng inkluderer kolonnenavnet og dets nye type:

ALTER TABLE resident MODIFY COLUMN id INT;


Andre tabelændringer

Mange andre typer ændringer kan opnås med ALTER TABLE kommando. For mere information om de tilgængelige muligheder, tjek den officielle MySQL-dokumentation for ALTER TABLE .




Droptabeller

Hvis du vil slette en tabel, kan du bruge DROP TABLE SQL-sætning. Dette vil slette tabellen såvel som alle data, der er gemt i den.

Den grundlæggende syntaks ser således ud:

DROP TABLE <table_name>;

Dette vil slette tabellen, hvis den findes, og give en fejl, hvis tabelnavnet ikke eksisterer.

Hvis du ønsker at slette tabellen, hvis den eksisterer og ikke gøre noget, hvis den ikke eksisterer, kan du inkludere koden HVIS EKSISTERER kvalifikation i sætningen:

DROP TABLE IF EXISTS <table_name>;

Tabeller, der har afhængigheder til andre tabeller eller objekter, kan ikke slettes som standard, mens disse afhængigheder eksisterer.

Slet forbrugsvarer tabel, vi oprettede tidligere ved at skrive:

DROP TABLE supplies;

Vi beholder lærerne database for at demonstrere, at sætningen om at slette databaser også fjerner alle underordnede objekter som tabeller.



Slet databaser

DROP DATABASE sætning fortæller MySQL at slette den angivne database. Den grundlæggende syntaks ser således ud:

DROP DATABASE <database_name>;

Erstat pladsholder med navnet på den database, du ønsker at fjerne. Dette vil slette databasen, hvis den bliver fundet. Hvis databasen ikke kan findes, vil der opstå en fejl:

DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist

Hvis du ønsker at slette databasen, hvis den eksisterer og ellers ikke gør noget, skal du inkludere den valgfrie HVIS EKSISTERER mulighed:

DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Dette vil fjerne databasen eller gøre noget, hvis den ikke kan findes.

For at fjerne skolen database, som vi brugte i denne vejledning, skal du angive de eksisterende databaser på dit system:

SHOW DATABASES;
+--------------------+  Database           |+--------------------+  information_schema |  mysql              |  performance_schema |  school             |  sys                |  testing            |+--------------------+6 rows in set (0.00 sec)

Slet skolen database med følgende kommando:

DROP DATABASE school;

Dette vil fjerne skolen database sammen med lærerne tabel defineret i.



Konklusion

Denne artikel dækkede det grundlæggende i, hvordan man opretter og sletter databaser og tabeller med MySQL. Dette er nogle af de mest basale kommandoer, der kræves for at opsætte et databasesystem og definere strukturen af ​​dine data.

Som tidligere nævnt er SQL-sætningerne dækket i denne MySQL-øvelse, især CREATE TABLE sætning, har mange yderligere parametre kan bruges til at ændre systemets adfærd. Du kan finde ud af mere om disse ved at tjekke den officielle MySQL-dokumentation.




  1. BEGRÆNSNING for at kontrollere værdier fra en eksternt relateret tabel (via join osv.)

  2. Hvordan laver man en simpel fuzzy søgning kun med PostgreSQL?

  3. SQL ORDER BY:De 5 do's and don'ts for at sortere data som en professionel

  4. Oracle ODP.Net og EF CodeFirst - SaveChanges-fejl