22 Ocak 2023 Pazar

Don’t Use Double Quotes in MySQL For Table and Column Names

Giriş
Eğer sütun isminde white space veya değişik bir karakter varsa bu sütun ismi backtick veya double quote ile escape edilir. Ancak bu yapılmamalı. Açıklaması şöyle
you should not create table or column names which contain spaces or special characters or are reserved words
Örnek
Bu da çalışır
CREATE TABLE foo (
  `time-taken` int(10) unsigned NOT NULL 
);
Eğer --sql-mode="ANSI_QUOTES" şeklinde çalıştırdıysam 
docker run \
  -d \
  -it \ 
  -e MYSQL_ROOT_PASSWORD=root \
  -e MYSQL_DATABASE=db  \
  --name mysql \
  --rm \
  -p 3306:3306 \
  -v ${PWD}/schema.sql:/docker-entrypoint-initdb.d/schema.sql \
  mysql:8.0 --sql-mode="ANSI_QUOTES"
Bu çalışır
CREATE TABLE foo (
  "time-taken" int(10) unsigned NOT NULL 
);
Bu çalışmaz. Çünkü tire aslında minus operator gibi algılanıyor
CREATE TABLE foo (
  time-taken int(10) unsigned NOT NULL 
);
Örnek
Şöyle yaparız
SELECT * from `time-taken` WHERE `int` = 0

Hiç yorum yok:

Yorum Gönder

CREATE EVENT - Scheduled Task İçindir

Örnek Şöyle yaparız CREATE EVENT myevent     ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR     DO       UPDATE myschema.mytable SET myc...