Skip to main content

AccessTr.neT


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

mehmetdemiral
mehmetdemiral
SQL
6
6168

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

#1
SQL Sorgulama Dili,Yerel Sql ve Dil Takımı

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 ":pdox: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ü)

NOT: ALINTIDIR
İnadına, ille de Accesstr.net...
Cevapla
#2
Sn Mehmet Hocam elinize sağlık, emeğiniz için teşekkürler. Saygılar...
Bilgi paylaşıldıkça çoğalır....
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.


Access için her zaman lazım olacak konu başlıkları listesi


Cevapla
#3
emeğinize sağlık sizleri takip etmeye devam ama %0 öğrenmelerle
starturk, 20-06-2009 tarihinden beri AccessTr.neT üyesidir.
Cevapla
#4
Yeni başlayanlara çok faydalı olacağı muhakkak olan bu yazı dizisi bilenler açısından da hem bilgi tazeleme,tekrar etme ve bilinmeyen bazı noktaları görme olanağı verecektir. Teşekkürler.
Access ile yaşam çok güzel
Cevapla
#5
(23/07/2009, 12:23)starturk yazdı: emeğinize sağlık sizleri takip etmeye devam ama %0 öğrenmelerle

Img-cray Neden % 0 ki? Birçok insan burdan okuduklarıyla Access'te harika programlar yazıyor. Ben de önce excel.web.tr, sonra da accesstr.net sayesinde kendimi geliştirdim. Siz neden bu kadar karamsarsınız ki? Yapmaya çalıştığım şey işe yaramıyor mu diye düşünmeye başladım şimdi? Img-cray Img-cray Img-cray
İnadına, ille de Accesstr.net...
Cevapla
#6
Sayın hocam sayın starturk henüz cevap vermemiş ama herhalde cevap verseydi
sanırım %0'dan maksat sizin anlattıklarınızın işe yaramadığı anlamında değilde bizim bilgi birikimimizin ve alt yapımızın anlattıklarınızı anlıyacak seviyede olmadığıdır.
Sayın Hocam anlattıklarınızı bu gün anlamıyor olabiliriz ancak accesstr de her seviyedeki
konuları inceledikçe sayenizde bilgilerimiz arttıkça ve ihtiyaç hasıl oldukça anlamaya ve istifade etmeye başlayacağımızdan emin olabilirsiniz. Bu bilgi ve örneklerin ne kadar değerli ve önemli olduğunu o zaman anlıyacaz.
Paylaşımlarınız için çok teşekkür ederim.
Saygılarımla
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task