Turkmaster

Turkmaster

TÜRK MASTER (TM) PAYLAŞIM FORMUNA HOŞ GELDİNİZ


    SQL Sorgulama Dili,Yerel SQL ve Dil Takımı - Bilgisayar

    Paylaş
    avatar
    By.DuFy!
    SİTE KURUCUSU
    SİTE KURUCUSU

    Erkek
    Mesaj Sayısı : 5805
    Yaş : 26
    Nerden : Ankara/Keçiören
    Sitemize vereceğiniz puan: : 10
    Ne YapaK : 27.12.1991
    Tuttugunuz Takım :
    Metin Alanı : <center><font color="white"><marquee direction="left" style="background:red">Vatanını Seven Görevini En İyi Yapandı®-NeYapak ForuM.</marquee></font></center>
    ÜYE MADALYASI :
    +Rep :
    80 / 10080 / 100

    -Rep :
    1 / 1001 / 100

    Paylaşım :
    100 / 100100 / 100

    Forum Gücü :
    90 / 10090 / 100

    Milli TAkımımız :
    Kayıt tarihi : 06/02/08

    DuFy!
    Keçiören: 17

    default SQL Sorgulama Dili,Yerel SQL ve Dil Takımı - Bilgisayar

    Mesaj tarafından By.DuFy! Bir Perş. Mayıs 22, 2008 2:31 am

    SQL Sorgulama Dili adı altında yeni bir makale dizisine başladık "SQL sorgulama dili" adlı makale dizimiz bittikten sonra "Veritabanı Uygulamaları Geliştirmek" adlı makale dizimize TQuery bileşeni ile devam edeceğiz. Makale dizimizin bu bölümünde SQL sorgulama dilinin Borland firması tarafından geliştirilen türevi Yerel SQL sorgulama dilini anlatacağız. Ayrıca Yerel SQL'in dil takımı üzerinde de duracağız.Yerel SQL dil takımında tablo isimlerinin, saha isimlerinin ve referansların, tarih ve zaman biçimlemelerinin, boolean ifadelerin kendine ait yazım kurallarını anlatacağız.SQL Sorgulama dilini bilen kişilerin bile bu makale dizisini dikkatle takip etmesini tavsiye ederim.
    Yerel SQL
    Yerel SQL Nedir?
    Yerel SQL dBASE, Paradox ve FoxPro tablolarına ulaşmak için kullanılan SQL-92 standartının bir alt türevidir. Yerel SQL ifadelerine uygulamalardan erişilirken, BDE bu ifadeleri BDE API fonksiyonlarına dönüştürür.
    SQL ifadeleri iki katagoriye ayrılır: Veri İşletme Dili (DML) ve Veri Tanımlama Dili (DDL)
    DML tablo verilerini taramak,eklemek,güncellemek, silmek için kullanılan SQL ifadeleri içerir. Örnek olarak SELECT bir DML ifadesidir.
    DDL tabloları yaratmak, değiştirmek, ve silmek için kullanılan SQL ifadelerini içerir. Örnek olarak CREATE TABLE ve DROP INDEX DDL SQL ifadelerindendir.
    Yerel SQL Dil Takımı
    Bu makale dizisinde vereceğim örneklerin daha iyi anlaşılabilmesi için önce size SQL anlatım geleneklerini anlatmayı uygun gördüm.
    vereceğim örneklerde tüm SQL örnekleri Courier New fontunda olacaktır. Ayrıca yerel SQL büyük küçük harf duyarlı olmasa da dil elemenlteri ile diğer elementleri kolayca ayırabilmeniz için tüm dil elementleri büyük harfle diğer elementler ise küçük harflae yazılmıştır.
    Örneklerde kullanılma imkanı bulunan fakat kullanmak zorunda olmadığınız dil elementleri köşeli parantez ( [ ve ] ) arasına alınacaktır. Örneğin aşağıdaki örnekte DISTINCT anahtar kelimesi seçimliktir.
    SELECT [DISTINCT] *
    Örneklerde birden çok seçenekten birini seçmek söz konusu ise seçenekler dikey çubuk karakteri ayrılacaktır. Örneğin aşağıdaki gibi bir SQL ifadesinde bir saha referansı için ASC yada DESC ifadelerinden sadece biri kullanılabilir. Aynı zamanda bu ASC veDESC ifadeleri seçimliktir.
    ORDER BY saha_referansi [ASC | DESC]
    Not: Kesinlikle tek dikey çubuk karakterini SQL dilinde kullanılan çift çubuk karakterleri ile karıştırmayın.( | | )
    Yerel SQL kullanılırken bazı kurallara uyulması gerekir örneğin SQL ifadelerinden komutlarından yada fonksiyonlarıdan herhangi birini değişken, saha referansı,Parametre vb. olarak kullanamazsınız. Ayrıca tablo isimlerinin, saha isimlerinin ve referanslarıın, tarih ve zaman biçimlemelerinin, boolean ifadelerin kendine göre yazım kuralları vardır. Bu tanımlamalar aşağıda verilmiştir.
    Tablo İsimleri:
    ANSI-standard SQL'de, tablo isimleri Türkçe karakterler içermeyen tek bir kelimeden yada aralarında boşluk yerine "_" karakteri içeren birden çok kelimeden oluşabilir. Fakat Yerel SQL birden çok kelime içeren tablo isimlerine izin verir.
    Yerel SQL tam dosya adı ve yol tanımlamalarına izin verir. Tablo tek yada çift tırnak arasında bir dosya yolu yada dosya adı tanımlaması ile gösterilir.Örneğin:
    SELECT *
    FROM 'parts.dbf'
    SELECT *
    FROM "c:\örnek\parts.dbf"
    Yerel SQL BDE alias tablo referanslarını da destekler. Örneğin:
    SELECT *
    FROM "dox:table1"
    Eğer dosya uzantısını ihmal etmek istiyorsanız, tablonun tipi BDE'de varsayılan tablo tipi olmalıdır. Yada SQL ifadenizde alias kullandığınız taktirde tablonun uzantısını yoksayabiliriz.
    Son olarak eğer tablonuzun adı SQL ifadelerinden biri ise bunu tek yada çift tırnak arasına alarak kullanabiliriz. Örneğin:
    SELECT passid
    FROM "password"
    Saha adları ve referansları:
    ANSI-standard SQL'de, kolon isimleri ve referansları Türkçe karakterler içermeyen tek bir kelimeden yada aralarında boşluk yerine "_" karakteri içeren birden çok kelimeden oluşabilir. Fakat Yerel SQL birden çok kelime içeren kolon isimlerine ve referanslarına izin verir.
    Yerel SQL Paradox'un çok kelimeden oluşan saha isimlerini ve referanslarını destekler.
    Eğer Paradox tablosunun bir sahası SQL ifadesiyle aynı adı taşıyorsa tek yada çift tırnakla çevrilerek kullanılır ve Önüne tablo adını yada tablo referansını alır.Tablo adı yada referansı saha adı yada referansından bir nokta ile ayrılır. Aşağıdaki örnekte saha adı iki kelimeden oluşmuştur:
    SELECT E."Emp Id"
    FROM employee E
    Bir sonraki örnek DATE SQL anahtar kelimesini içeren bir saha adını nı nasıl tanımlandığını gösterir:
    SELECT datelog."date"
    FROM datelog
    Tarih Biçimleri:
    Yerel SQL tarih tanımlarını Amerikan tarih biçimine göre ayarlar. Diğer tarih biçimlerini desteklemez. Amerikan tarih biçimi AA/GG/YY yada AA/GG/YYYY olarak iki çeşittir. Tarih kullanımımnda bir hataya mahal vermemek için tarih değerleri tek yada çift tırnak içine alınırlar. Eğer tarih değerini tırnak içine almazsak örneğin 17/7/2000 tarihini 17 bölü 7 bölü 2000 olarak algılayacaktır.Aşağıda tarih değerinin SQL ifadelerinde nasıl kullanılacağına dair bir örnek verilmiştir.
    SELECT *
    FROM orders
    WHERE (saledate <= "1/23/1998")
    Tek haneli günlerin yada ayların başlarına sıfır eklemek seçimliktir.
    Eğer yüzyıl yıl içinde tanımlanmamışsa BDE ayarlarından FOURDIGITYEAR parametresi yüzyılı kontrol eder. Eğer FALSE ise yıllar sadece iki hane ile tanımlanır. Eğer rakam 0 ile 49 arasında ise 21'ci yüzyılı 50 ile 99 arasında ise 20'ci yüzyılı tanımlar. Örneğin 5/5/1998 tarihi 5/5/98 olarak tanımlanır. 17/7/2000 tarihi ise 17/7/00 olarak tanımlanır. Eğer TRUE ise 17/7/00 tarihi Milattan sonra 0'cı yıl olarak anlaşılır.
    Zaman Biçimleri:
    Yerel SQL saat biçimlerinin ss:dd:nn AM/PM (ss saat, dd dakika, nn saniye) olarak ayarlanmasını ister. zaman değeri ile birlikte yeni bir kayıt eklerken AM/PM kullanımı seçimliktir ve büyük küçük harf ayrımı yapılmaz (yani AM yerine am yazabilirsiniz.)Tanımlama tırnak işaretleri arasında olmalıdır.
    INSERT INTO WorkOrder
    (ID, StartTime)
    VALUES ("B00120","10:30:00 PM")
    Eğer AM yada PM etiketlerinden herhangi biri kullanılmışsa bu yarım gün uygulamasının kullanılacağı anlamına gelir ve saat 12 ile karşılaştırılır. Eğer saat 12den küçükse AM büyükse PM olur Saat sahsı AM/PM tasarımını değiştirebilir. Örneğin "15:03:22 AM" "3:03:22 PM" değerine çevrilir.
    Boolean ifadeler:
    Boolean ifadeler TRUE ve FALSE tırnak işaretleri ile çevrilerek yada çevrilmeden kullanılabilir.
    SELECT *
    FROM transfers
    WHERE (paid = TRUE) AND NOT (incomplete = "FALSE")
    Tablo Referans Adları:
    tablo referans adları tablo ile bir kolonu ilişkilendirmek için kullanılır. bu genellikle farklı tablolardan gelen adları aynı birden çok sahanın SQL ifadesi içinde kullanılırken çok büyük kolaylık sağlar. Bir tablo referans adı FROM ifadesinde tanımlanır.Bu tanımlayıcı yada tablo referans adıbir kolon adının ön eki olarak kullanılabilir.
    Eğer tablo ismi tırnak işaretleri arasında değilse tablo adı varsayılan referans adı olarak kullanılır.
    SELECT *
    FROM customer
    LEFT OUTER JOIN orders
    ON (customer.custno = orders.custno)
    Eğer tablo ismi tırnak işaretli bir ifade ise aşağıdaki gibi tırnak işaretleri ile birlikte kullanabilirsiniz.
    SELECT *
    FROM "customer.db"
    LEFT OUTER JOIN "orders.db"
    ON ("customer.db".custno = "orders.db".custno)
    Eğer tırnak işaretinin arasındaki ifade çok uzunsa bu tanımlamayı FROM ifadesinden sonra başka bir ifadeye atayarak kullanabilirsiniz.
    SELECT *
    FROM "customer.db" CUSTOMER
    LEFT OUTER JOIN "orders.db" ORDERS
    ON (CUSTOMER.custno = ORDERS.custno)
    Saha Refereansları:
    Saha referansları bir sahayı,hesaplanan saha değer kümesini yada bir SQL ifadesini ad olarak barındıran sahayı farklı bir adla tanımlamaya yarar. Saha referansları kesinlikle çift tırnak arasına alınamaz. Bir saha referansı tanımlamak için saha referansı tanımlanacak olan tanımlamadan sonra AS anahtar kelimesini kullanıp saha referans adını AS anahtar kelimesinden sonra yazmalıyız.Aşağıdaki ifade de Sub ve Word tanımlamaları saha referansıdır.
    SELECT SUBSTRING(company FROM 1 FOR 1) AS sub, "Text" AS word
    FROM customer
    Açıklama Tanımlamak:
    Eğer SQL ifadenizin daha anlaşılır olmasını istiyorsanız içine açıklama yazabilirsiniz. Açıklamanız /* ile başlayıp */ ile sona ermelidir. başlangıç ve sondaki işaretler açıklama ile aynı satırda olmak zorunda değildir.
    /*
    Merhaba Televole
    */
    SELECT SUBSTRING(company FROM 1 FOR 1) AS sub, "Text" AS word
    FROM customer
    Açıklamalar aynı zamanda SQL ifadeleri de içerebilirler İfadeleriniz eğer Açıklama içinde ise yoksayılacaklardır.Açıklamalar özellikle SQL ifadelerinizi test etmek istediğinizde çok işe yarat.Her satırı ayrı ayrı açıklama içine alarak hatanın nerede olduğunu bulabilirsiniz.
    SELECT company
    FROM customer
    /* WHERE (state = "TX") */
    ORDER BY company
    SQL tanımlı kelimeler:
    SQL ifadeleri tanımlamak için bazı kelimeleri kullanmıştır. Biz sorgularımızda bu isimleri kullanamayız. Eğer kullanırsanız Invalid use of keyword error hata mesajını alırsınız.Aşağıda bahsettiğimiz ifadelerin alfabetik bir listesini görüyorsunuz.

    ACTIVE
    ADD
    ALL
    AFTER
    ALTER
    AND
    ANY
    AS
    ASC
    ASCENDING
    AT
    AUTO
    AUTOINC
    AVG
    BASE_NAME
    BEFORE
    BEGIN
    BETWEEN
    BLOB
    BOOLEAN
    BOTH
    BY
    BYTES
    CACHE
    CAST
    CHAR
    CHARACTER
    CHECK
    CHECK_POINT_LENGTH
    COLLATE
    COLUMN
    COMMIT
    COMMITTED
    COMPUTED
    CONDITIONAL
    CONSTRAINT
    CONTAINING
    COUNT
    CREATE
    CSTRING
    CURRENT
    CURSOR
    DATABASE
    DATE
    DAY
    DEBUG
    DEC
    DECIMAL
    DECLARE
    DEFAULT
    DELETE
    DESC
    DESCENDING
    DISTINCT
    DO
    DOMAIN
    DOUBLE
    DROP
    ELSE
    END
    ENTRY_POINT
    ESCAPE
    EXCEPTION
    EXECUTE
    EXISTS
    EXIT
    EXTERNAL
    EXTRACT
    FILE
    FILTER
    FLOAT
    FOR
    FOREIGN
    FROM
    FULL
    FUNCTION
    GDSCODE
    GENERATOR
    GEN_ID
    GRANT
    GROUP
    GROUP_COMMIT_WAIT_TIME
    HAVING
    HOUR
    IF
    IN
    INT
    INACTIVE
    INDEX
    INNER
    INPUT_TYPE
    INSERT
    INTEGER
    INTO
    IS
    ISOLATION
    JOIN
    KEY
    LONG
    LENGTH
    LOGFILE
    LOWER
    LEADING
    LEFT
    LEVEL
    LIKE
    LOG_BUFFER_SIZE
    MANUAL
    MAX
    MAXIMUM_SEGMENT
    MERGE
    MESSAGE
    MIN
    MINUTE
    MODULE_NAME
    MONEY
    MONTH
    NAMES
    NATIONAL
    NATURAL
    NCHAR
    NO
    NOT
    NULL
    NUM_LOG_BUFFERS
    NUMERIC
    OF
    ON
    ONLY
    OPTION
    OR
    ORDER
    OUTER
    OUTPUT_TYPE
    OVERFLOW
    PAGE_SIZE
    PAGE
    PAGES
    PARAMETER
    PASSWORD
    PLAN
    POSITION
    POST_EVENT
    PRECISION
    PROCEDURE
    PROTECTED
    PRIMARY
    PRIVILEGES
    RAW_PARTITIONS
    RDB$DB_KEY
    READ
    REAL
    RECORD_VERSION
    REFERENCES
    RESERV
    RESERVING
    RETAIN
    RETURNING_VALUES
    RETURNS
    REVOKE
    RIGHT
    ROLLBACK
    SECOND
    SEGMENT
    SELECT
    SET
    SHARED
    SHADOW
    SCHEMA
    SINGULAR
    SIZE
    SMALLINT
    SNAPSHOT
    SOME
    SORT
    SQLCODE
    STABILITY
    STARTING
    STARTS
    STATISTICS
    SUB_TYPE
    SUBSTRING
    SUM
    SUSPEND
    TABLE
    THEN
    TIME
    TIMESTAMP
    TIMEZONE_HOUR
    TIMEZONE_MINUTE
    TO
    TRAILING
    TRANSACTION
    TRIGGER
    TRIM
    UNCOMMITTED
    UNION
    UNIQUE
    UPDATE
    UPPER
    USER
    VALUE
    VALUES
    VARCHAR
    VARIABLE
    VARYING
    VIEW
    WAIT
    WHEN
    WHERE
    WHILE
    WITH
    WORK
    WRITE
    YEAR

    AşağıdaYerel SQL'de bulunan operatörlerleri görüyorsunuz.Bu operatörler kesinlikle hiç bir referansın yada ismin içinde kullanılamazlar.

    | |
    -
    *
    /
    <>
    <
    >
    ,
    =
    <=
    >=
    ~=
    !=
    ^=
    (
    )

    Yerel SQL'in Desteklemediği Elementler:
    Aşağıdaki SQL-92 elementleri Yerel SQL'de kullanılamazlar.

    ALLOCATE CURSOR (Komut)
    ALLOCATE DEscriptOR (Komut)
    ALTER DOMAIN (Komut)
    CASE (Deyim)
    CHECK (Sabit)
    CLOSE (Komut)
    COALESCE (Deyim)
    COMMIT (Komut)
    CONNECT (Komut)
    CONVERT (Fonksiyon)
    CORRESPONDING BY (Deyim)
    CREATE ASSERTION (Komut)
    CREATE CHARACTER SET (Komut)
    CREATE COLLATION (Komut)
    CREATE DOMAIN (Komut)
    CREATE SCHEMA (Komut)
    CREATE TRANSLATION (Komut)
    CREATE VIEW (Komut)
    CROSS JOIN (İlişki Operatörü)
    CURRENT_DATE (Fonksiyon)
    CURRENT_TIME (Fonksiyon)
    CURRENT_TIMESTAMP (Fonksiyon)
    DEALLOCATE DEscriptOR (Komut)
    DEALLOCATE PREPARE (Komut)
    DECLARE CURSOR (Komut)
    DECLARE LOCAL TEMPORARY TABLE (Komut)
    DESCRIBE (Komut)
    DISCONNECT (Komut)
    DROP ASSERTION (Komut)
    DROP CHARACTER SET (Komut)
    DROP COLLATION (Komut)
    DROP DOMAIN (Komut)
    DROP SCHEMA (Komut)
    DROP TRANSLATION (Komut)
    DROP VIEW (Komut)
    EXCEPT (İlişki Operatörü)
    EXECUTE (Komut)
    EXECUTE IMMEDIATE (Komut)
    FETCH (Komut)
    FOREIGN KEY (Sabit)
    GET DEscriptOR (Komut)
    GET DIAGNOSTICS (Komut)
    GRANT (Komut)
    INTERSECT (İlişki Operatörü)
    MATCH (Yüklem)
    NATURAL (İlişki Operatörü)
    NULLIF (Deyim)
    OPEN (Komut)
    OVERLAPS (Yüklem)
    PREPARE (Komut)
    REFERENCES (Sabit)
    REVOKE (Komut)
    ROLLBACK (Komut)
    Row value constructorsSET CATALOG (Komut)
    SET CONNECTION (Komut)
    SET CONSTRAINTS MODE (Komut)
    SET DEscriptOR (Komut)
    SET NAMES (Komut)
    SET SCHEMA (Komut)
    SET SESSION AUTHORIZATION (Komut)
    SET TIME ZONE (Komut)
    SET TRANSACTION (Komut)
    TRANSLATE (Fonksiyon)
    UNIQUE (Yüklem)
    USING (İlişki Operatörü)
    __________________

      Forum Saati Perş. Kas. 15, 2018 9:21 am