Daha çox

SQL Hesabatında Dəyişən kimi Çox Dəyərli İstifadəçi Girişi


Bir istifadəçi seçimini parametr olaraq götürən və SelectByAttributes funksiyasının bir hissəsi kimi istifadə edən bir skript yazmağa çalışıram. Parametr sahə xüsusiyyətlərini təmsil edir və çox dəyərlidir və istifadəçi bir və ya birdən çoxunu seçə bilər.

Beləliklə, bu nöqtədə olan bütün mövcud xüsusiyyətlərin siyahısı və hər biri defalt olaraq seçilmişdir.

Ayrıca, alət doğrulama kodu və Parametr Xüsusiyyətləri:

idxal arcpy sinfi ToolValidator (obyekt): "" "Alətin parametr dəyərlərini təsdiqləmək və alət dialoqunun davranışını idarə etmək üçün sinif." "" def __init __ (self): "" "Arcpy və alət parametrlərinin siyahısını qurun." " "self.params = arcpy.GetParameterInfo () def initializeParameters (self):" "" Alətin parametrlərinin xüsusiyyətlərini dəqiqləşdirin. Bu metod alət açıldıqda deyilir. "" "def updateParameters (self)": "return" Daxili doğrulama həyata keçirilməzdən əvvəl parametrlərin dəyərlərini və xüsusiyyətlərini dəyişdirin. Bu metod bir parametr dəyişdirildikdə çağırılır. "" "Shape =" G:  _ DPD  STEVEN  FIELD.shp "rows = arcpy.SearchCursor (shape) self .params [0] .filter.list = sorted (list (set (r.getValue ('DPD_FLD_TY') r for r in катар))) all = self.params [0] .filter.list self.params [0]. value = all del rows return def updateMessages (self): "" "Hər bir alət parametri üçün daxili doğrulama ilə yaradılan mesajları dəyişdirin. Bu metod daxili yoxlamadan sonra adlanır." "" return

İstədim ki, aləti birdən çox atribut seçilmiş və ya yalnız bir seçilmiş atributu işə salmaq və bunu SelectByAttribute funksiyası daxilində SQL ifadəsinin bir hissəsi kimi istifadə etmək seçiminə sahib olsun. Məsələn, istifadəçi "GAS" və "UNNNNN" seçirsə, SelectByAttributes funksiyası belə görünür

arcpy.SelectLayerByAttribute_management (lyr, "NEW_SELECTION", "" "" DPD_FLD_TY "= 'GAZ' OR" DPD_FLD_TY "= 'BİLMƏZ'" "")

Beləliklə, əsas sualım budur: nə qədər atribut seçildiyini və buna əsaslanaraq yoxlanılması üçün kod nədir, SQL ifadəsində lazımi miqdarda "OR" ifadəsi var? Ayrıca, parametr yalnız bir sayılırdı və ya birdən çox parametr olardı, yəni GetParameterAsText (0) ilə GetParameterAsText (0)… GetParameterAsText (3)

Bu qarışıqdırsa üzr istəyirəm, amma bu problemlə harada başlayacağımı dəqiq bilmirəm.

Mən bu təbəqəyə istinad edirəm:

import arcpy mxd = arcpy.mapping.MapDocument ('CURRENT') mm = arcpy.mapping.ListDataFrames (mxd, "Layers") [0] lyr = arcpy.mapping.ListLayers (mxd, 'FIELD') [0] field = arcpy.GetParameterAsText (0)

Birdən çox VEYA yerinə DPD IN ('Qaz', 'Yağ', ") istifadə edin


@ FelixIP-in cavabına əsasən, harada olduğunuz bənddə bir IN operatorundan istifadə edin.

Çox dəyərli parametr, tək nöqtəli vergüllə ayrılmış bir sətir kimi ötürülür, yəni."dəyər1; dəyər2; dəyər3". Bunu IN operatoru üçün lazım olan formata çevirmək üçün python split / list anlama / qoşulma və ya dəyişdirmə istifadə edin.

bölmək / siyahı anlamaq / qoşulmaq:

fields = arcpy.GetParameterAsText (0) where_clause = '"DPD_FLD_TY" IN' + "({})". format (','. join (["'{}'". format (f) in f in fields.split (';')]))

yerdəyişmə:

fields = arcpy.GetParameterAsText (0) where_clause = '"DPD_FLD_TY" IN' + "('{}')". format (fields.replace (";", "','"))

Bu belə bir şeylə nəticələnir:

print where_clause "DPD_FLD_TY" IN ('dəyər1', 'dəyər2', 'dəyər3')

RED: Sahənizin adında boşluq varsa, ArcGIS, ssenarinizə keçmədən əvvəl onu tək tırnakla saracaq. Tək sitatları (bütün sahə adlarına yenidən əlavə etmədən əvvəl) aşağıdakı kimi bir şeylə soyun:

fields = arcpy.GetParameterAsText (0) fields = ["'{}'". format (f.strip ("'")) f for in fields.split ('; ')] DPD_FLD_TY "IN ({})". format (','. qoşulmaq (sahələr))

Nümunələr

Aşağıda SQL SELECT ifadələrinin nümunələri verilmişdir:

    Last_Name sütununun dəyəri üçün Smith olduğu satırlar üçün bir cədvəldən (Müştərilər) bütün sütunları seçmək üçün bu SELECT ifadəsini serverin arxasına göndərəcəksiniz:

Serverin arxa tərəfi buna bənzər bir nəticə dəsti ilə cavab verəcəkdir:

Sonrakı nəticə dəsti belə görünə bilər:

WHERE müddəasının qeyri-dəqiq uyğunluqlar tapması üçün nümunə uyğunlaşdırma operatorunu LIKE əlavə edin. LIKE operatoru sıfır və ya daha çox simvolu uyğunlaşdırmaq üçün% (faiz işarəsi) vəhşi kartı, tam olaraq bir simvolla uyğunlaşdırmaq üçün alt (_) işarəsini istifadə edir. Misal üçün:

    Dostlar cədvəlindən ləqəb sütununun "beyin" sətrini içərisindəki sətirlər üçün Ad və Ad taxma sütunlarını seçmək üçün bu ifadəni istifadə edin:

Sonrakı nəticə dəsti belə görünə bilər:

Nəticə dəsti belə görünə bilər:


Dəyişən bir Bəyanat necə

  • Toplu və ya prosedurda hər hansı bir dəyişəni istifadə etməzdən əvvəl etməlisiniz dəyişəni elan et.
  • DECLARE əmri, yaddaş yeri üçün yer tutucu rolunu oynayan dəyişəni DANIŞDIRMA üçün istifadə olunur.
  • Yalnız bəyannamə edildikdən sonra partiyanın və ya prosedurun sonrakı hissəsində bir dəyişən istifadə edilə bilər.

TSQL sözdizimi:

  • Başlanğıc elan edərkən isteğe bağlı bir şeydir.
  • Varsayılan olaraq, DECLARE dəyişəni NULL olaraq başlatır.
  • 'AS' açar sözünün istifadəsi isteğe bağlıdır.
  • Birdən çox lokal dəyişəni elan etmək üçün ilk lokal dəyişən tərifindən sonra vergüldən istifadə edin və sonra növbəti lokal dəyişən adını və məlumat növünü təyin edin.

Dəyişən elan edilməsinə nümunələr:

Sorğu: 'AS' ilə

Sorğu: 'AS' olmadan

Sorğu: iki dəyişən elan et


SQL Hesabatında Dəyişən Çox İstifadəçi Girişi - Coğrafi İnformasiya Sistemləri

İşlədi, lakin name_product dəyərinin uzunluğu 3 simvoldan çox olduqda, heç bir nəticə göstərmir.

Name_product dəyəri ASCII simvolu olduqda problem olmur, lakin dəyər Unicode olduqda problem yaranır.

Bu sintaksisdən istifadə etməyə çalışıram, amma bir səhv alıram. Nəyin səhv olduğunu anlamıram ??

DƏYİŞİK PROSEDUR [dbo]. [Sp_GetRecord_czs] @ Kampaniya varchar (30), @LASTREC int
AS
@ Sorğu NVARCHAR OLARAQ BƏYAN EDİN (200)
@ParamDefinition AS NVARCHAR kimi elan et (100)
@NVARCHAR OLARA Çağırış siyahısını elan et (100)

SET @CallList = 'CallList_' + @ Kampaniya
SET @LASTREC = LTRIM (STR (@LASTREC))

SET @query = 'TOP 30 ID, DEAL_REFERENCE, TELEFONUNU @CallList-dən KİMİ & gt @LASTREC SİFARİŞ İD ASC İLƏ SEÇİN' seçin

SET @ParamDefinition = '@CallList NVARCHAR (50), @LASTREC int')
@ParamDefinition yazdırın
@ Kampaniyanı çap edin
@CallList yazdırın
@ Sorğu yazdırın
Sp_Executesql @query, @ParamDefinition, @CallList, @LASTREC icra edin

@CallList NVARCHAR (50), @LASTREC int
AD_Format_10
CallList_AD_Format_10
@CallList-dən TOP 30 ID, DEAL_REFERENCE, TELEFONU SEÇİN KİMLİĞİ VERİLƏN ID & gt @LASTREC SİFARİŞİ ID ASC
Msg 1087, Səviyyə 16, Vəziyyət 1, Sətir 1
Cədvəl dəyişənini "@CallList" elan etməlidir.

Təklif olunan şəkildə etmək, paramallaşdırılmış sorğuların bütün üstünlüklərini aradan qaldırır və SQL Enjeksiyon hücumlarına açır.

Aşağıda konsepsiya istismarının əlavə bir sübutu.

@SQLSTRING dəyərinin MSSQL bəyanatından gəlməsi mümkündürmü?
məsələn, SET @SQLSTRING = (MYTABLE'DƏ SQLSTRING SEÇİN) - SQLSTRING, SQL hesabatını əhatə edir

Saxlanılan prosedurda bu kursor üçün sql imlecindən istifadə edirəm dinamik sql sorğusundan istifadə etməliyəm

üçün cursor_test elan edin
cədvəl 1-dən col1, col2 seçin - Bu dinamik sorğu olmalıdır

opn cursor_test
@ col1, @ col2 daxilinə cursor_test alın
while fetch_status = 0
başlamaq
.
son
yaxın kursor_testi
kursor_testini ayırın

Fərdi mağazaların prosedurlarını yaratmaq üçün saxlanılan bir prosedur yaratmaq istəyirəm,
bəzi parametrlərdən istifadə etmək

Bu barədə hər hansı bir nümunə var, xahiş edirəm?

Əvvəlcədən təşəkkürlər, hörmətlə.

Dinamik SQL sorğularının detallarını almaq yaxşıdır. Bəs niyə bunlardan istifadə edirik? Onları bir axtarış ssenarisində istifadə etdiyimizi söylədiniz, niyə dinamik sorğu yazmaqdan daha çox saxlanılan prosedurlardan istifadə etmirsiniz?

Bu metodla hiss etdiyim çatışmazlıqlar bunlardır

1 - Prosedur daxilində dinamik sorğuların yazılması SQL Enjeksiyon hücumlarına çox yaxındır.
2 - Saxlanılan prosedur ilk dəfə yerinə yetirildikdə, SQL Server icra planını önbelleğe alır və bu önbellekten gələn sorğuya xidmət edir. Bu çox performans fərqi verir. Lakin dinamik sorğular statik icra planı yaratmağa imkan verməyəcək və bu, hər istək üçün tərtib ediləcəkdir.
3 - Sorguları düzəltmək çox çətindir
4 - Sorğulardakı səhvləri gizlədir, çünki bir simli əlavə olunur

Yazımı oxumaq üçün vaxt ayırdığınıza və təklifinizi, şərhlərinizi göndərdiyiniz üçün təşəkkür edirik.

Bəli, bunun birdən çox saxlanılan prosedurlardan və ya saxlanılan bir prosedurda birdən çox SEÇMƏ sorğusundan istifadə edərək baş verə biləcəyinə dair xüsusi fikirlərinizlə razıyam. Çoxsaylı axtarış ssenarisi varsa. Bütün axtarış ssenarisini yerinə yetirmək üçün 5,10 və ya daha çox saxlanılan prosedurun yazılmasının çətinləşdiyinə razısınızmı? CODE sətirlərinin sayı artdıqda onu qorumağın KOMPLEKSİYASI da artır. 10 və ya daha çox əvəzinə bir saxlanılan proseduru saxlamaq və dəyişdirmək daha asandır.

Bəli, dediklərinizlə razıyam (çatışmazlıq - SQL Injection Attack). Ancaq bu (məqalədə izah etmədiyim) həll edilə bilər. Giriş parametrləri nümunədə göstərdiyim şəkildə istifadə olunursa, prosedur SQL Enjeksiyon Hücumuna meyllidir. Saxlanan proseduru aşağıdakı funksiyalardan istifadə edərək (REPLACE, ISNULL, TRIM.) İcazəsiz KOD tətbiq edilməsindən qorumaq üçün əlavə səy göstərməliyik. SQL sətirinə Giriş parametri əlavə edilərkən bu funksiyanın düzgün istifadəsi SP-ni qoruyacaqdır (inanıram) və SELECTClause, FROMClause, WHEREClause ayrı dəyişənlərdə qurulmalı və icraya başlamazdan əvvəl yekunlaşdırılmalıdır.

Sürət və performans prioritetdirsə, dinamik SQL istifadə etməkdən çəkinmək lazımdır.

Və Ayıklama - test üçün əlavə vaxt planlaşdırmalı və hissənin heç birinin sintaksis səhvləri ilə qurulmadığından əmin olmalıyıq.

Kodlaşdırdığım tətbiqdən asılıdır. Yüksək performansın gözlənildiyi bir tətbiqi kodlaşdırsaydım, birdən çox saxlanılan prosedurdan istifadə edərdim. Yoxsa tətbiqdə göstərilən bir əsas prosedurdan istifadə edərdim və bu prosedurdan axtarış şərtlərindən asılı olaraq bütün digər prosedurlar çağırılacaqdır. Bu əsas prosedur iç içə olacaqdır.

Beləliklə, SQL Server iç içə prosedurların icrası planını önbelleğe ala bilər və növbəti istəkdə yenidən istifadə edə bilər. Bu, SQL Performance.com-da tövsiyə olunan bir tətbiq olaraq yazılmışdır. Dediyiniz kimi, axtarış meyarlarımız çox olduqda bunu dəyişdirmək çətin olacaq, amma performans həqiqətən vacibdirsə, niyə bu xərcləri görməməzlikdən gəlmirik?

Performansla maraqlanmayan kiçik bir tətbiqdirsə və sorğunu sətir şəklində formalaşdırmaq üçün kifayət qədər vaxtımız varsa, metodunuzu 100% qəbul edəcəyəm.

Tamamilə razılaşa bilmirəm. Çünki hamımızın vaxtımız tükənir. Buna görə ümumiyyətlə SQL redaktoru tərəfindən edilən sintaktik səhvləri tapmaq üçün vaxt sərf etmək çox çətindir.

Mən səylərinizi tənqid etmirdim. Dinamik SQL sorğuları ilə əlaqədar çox pis təcrübələr yaşadım. Yeri gəlmişkən, prosedur və eyni işi görən normal bir sorğu üçün sorğu icra planına baxmaq yaxşı olacaq. Fərqi tapa bilərsiniz


- 23 oktyabr 2007-ci il, çərşənbə axşamı, 9: 52-də dəyişdirilmişdir

Ümumi Xəbər Təklif Sual Hata Cavab Zarafat Həmd Rant Admin

Mesajları dəyişdirmək üçün Ctrl + Sol / Sağ, mövzuları dəyişdirmək üçün Ctrl + Yuxarı / Aşağı, səhifələri dəyişdirmək üçün Ctrl + Shift + Sol / Sağ istifadə edin.


EXEC əmri, saxlanılan bir proseduru və ya ona ötürülmüş sətri icra edir. Zəhmət olmasa müraciət edin EXEC SQL-ə ümumi baxış və nümunələr EXEC əmrində daha çox məlumat və nümunə üçün.

Aşağıdakı misal giriş dəyişənindən istifadə edərək SQL ifadəsinin qurulmasını və EXEC əmrindən istifadə edərək SQL ifadəsinin yerinə yetirilməsini nümayiş etdirir.

SQL ifadəsini istifadəçi giriş dəyərlərindən sətirləri birləşdirərək qurduğunuzda SQL inyeksiya ehtimalı var. Gələcək məqalələrimdə SQL enjeksiyonunu və SQL Enjeksiyonunun qarşısını almaq üçün bəzi metodları əhatə edəcəyini ümid edirəm.

Parametrlərdən sətirləri ‘+’ operatorundan istifadə edərkən sıfır dəyərlərə diqqət yetirməliyik. Aşağıdakı nümunədə “dəyişənə bir dəyər verən ifadəni şərh etdim@pid”.

Varsayılan olaraq “dəyişən@pid”Heç bir dəyər təyin etmədiyimiz üçün NULL-dır. ‘+’ Operatoru sıfır dəyərləri idarə etmədiyi üçün birləşmədən sonra qurulmuş son ifadə boşdur. Zəhmət olmasa “@SQL” dəyişəninin yekun dəyərinin boş olduğunu göstərən aşağıdakı şəkilə baxın.

Bu vəziyyətdə istifadə edin ISLULL ‘+’ operatorundan istifadə edərək strings birləşdirərkən düzgün bir SQL ifadəsi qurmaq funksiyası.

EXEC əmri, plan önbelleğinde yığılmış planı yenidən istifadə etmir. Aşağıdakı sorğunu icra edin və önbelleğe alınan planları yoxlayın.


Sintaksis

    Giriş_Sətir
    Reduktorun bir sıra dəsti adına istinad və ya iç içə bir sıra dəsti ifadəsi kimi işləyəcəyi giriş sətirini müəyyənləşdirir:

Sintaksis

aşağıdakı semantikası ilə:

  • Sətir
    İki ən sadə sıra dəsti mənbəyi, skriptin əvvəlki bəyanatında müəyyən edilmiş @rowset kimi bir sıra dəsti dəyişənidir və ya hesabın kataloqunda yaradılan bir cədvəldir:

Sintaksis

Bir cədvələ ya tam ixtisaslı 3 hissəli adı ilə, cari verilənlər bazası kontekstində 2 hissəli adla, ya da cari verilənlər bazası və şema kontekstində tək hissəli adla müraciət edilə bilər.

  • Rowset_Expression
    U-SQL ayrıca iç içə sorğu ifadələrini, cədvəl dəyərli funksiya çağırışlarını azaltmaq və ya xarici satır sorğularını azaltmaq imkanı verir. Hər biri haqqında daha ətraflı məlumat üçün bağlantıları izləyin.

Sintaksis

UDO proqramlaşdırma modeli, reduktorun tətbiqi kontekstində həm giriş sətirinin dəyərlərini, həm də şemasını mövcud edir.

TƏKLİF
İsteğe bağlı PRESORT bəndində satırların verilmiş identifikator tərəfindən sıralanmasına zəmanət verilir.

BÜTÜN
Könüllü BÜTÜN bütün giriş sətirinin azaldılacaq qrupa çevriləcəyini göstərir. BÜTÜN BİR QRUP kimi.

Identifier_List-də
Bu seçim qrupları təyin edən sütunların siyahısını müəyyənləşdirir.

Sintaksis

Sütunlar giriş sətirinin sütunlarının bir hissəsi deyilsə və ya müqayisə olunmursa, səhv yaranır.

Sintaksis

  • Sütun_Tərif_List
    Bu siyahı reduktorun sxemini təyin edir. Qaytarılmış sütunlar bir cüt sütun adları və sütun növləri kimi müəyyən edilir:

Sintaksis

Hər bir sütunda bir sitat və ya alınmayan bir identifikator ola biləcək bir identifikator var. Reduktorun dəstəklədiyi U-SQL növlərindən biri ilə bir sütun yazılır.

UDO proqramlaşdırma modeli göstərilən sıra dəsti sxemini reduktorun tətbiqi üçün əlçatan edir. Reduktor göstərilən qayıtma sxeminə uyğun olmayan bir şema istehsal edirsə, bir səhv meydana çıxır.

Yalnız oxumaq_bənd
İsteğe bağlı READONLY maddəsi UDO proqramçısına daha səmərəli kod yazmağa kömək edə bilər. UDO proqramçısının bu ipucudan necə istifadə edə biləcəyi barədə daha çox məlumat üçün U-SQL C # Developer’nın təlimatına baxın.

İsteğe bağlı READONLY bəndində sütunların yalnız reduktor üçün oxunduğunu və eyni addan və ya mötərizədə göstərilən sütun adından istifadə edərək çıxışa ötürüldüyünü göstərir. Yalnız azaltmaq ifadəsinin ON bəndindəki sütunlar READONLY olaraq qeyd edilə bilər, əks təqdirdə “E_CSC_USER_UDOREADONLYNOTKEYCOLUMN: Sütun '...' READONLY olaraq qeyd edilə bilməz" xətası qaldırılır.

Sintaksis

Zəruri_Maddə
İsteğe bağlı TƏLƏB bənd UDO proqramçısına daha səmərəli kod yazmağa kömək edə bilər. UDO proqramçısının bu ipucudan necə istifadə edə biləcəyi barədə daha çox məlumat üçün U-SQL C # Developer’nın təlimatına baxın.

İsteğe bağlı TƏLƏB bəndində reduktor üçün girişdə bütün sütunların (* ilə göstərildiyi təqdirdə) tələb olunduğunu və ya göstərilən sütunların tələb olunduğunu göstərir. Müəyyən edilmiş bir sütunu mötərizədəki sütunların bir siyahısı izləyirsə, giriş sütunu yalnız həmin siyahıda olan sütunlara çıxışdan istinad edildikdə tələb olunur.

Sintaksis

    Use_Clause
    İSTİFADƏ maddəsi giriş sətirini çevirmək üçün hansı reduktorun istifadə olunacağını göstərir.

Sintaksis

USING müddəası IReducer nümunəsini qaytaran bir C # ifadəsini alır. İstifadəçilər bir IReducer tətbiq edərək özlərini yaza bilərlər (öz reduktorunuzu necə yazacağınıza dair daha ətraflı məlumat üçün U-SQL Proqramlaşdırma Bələdçisinə baxın: İstifadəçi tərəfindən müəyyən edilmiş reduktora baxın). Ən çox yayılmış, UDO ifadəsi ya formanın bir reduktor sinifinin hazırlanmasıdır

və ya fabrik üsulunun çağırılması

burada parametr reduktorun parametridir.

Nümunələr

  • Nümunələr, Azure Data Lake Tools eklentisi ilə Visual Studio'da icra edilə bilər.
  • Skriptlər yerli olaraq icra edilə bilər. Yerli icra edildikdə bir Azure abunəliyi və Azure Data Lake Analytics hesabına ehtiyac yoxdur.
  • Sadəlik üçün istifadəçi tərəfindən müəyyən edilmiş kodlu nümunə (lər) montaj idarəçiliyi üçün Code-Behind istifadə edir. Code-Behind-in əsas üstünlüyü ondan ibarətdir ki, alət montaj sənədini qeyd edəcək və REFERANS İCMASI ifadəsini avtomatik olaraq əlavə edəcəkdir. Code-Behind əvəzinə Məclis qeydiyyatından istifadə etmək üçün bkz. Assemblies istifadə: Code-Behind vs Assembly Qeydiyyat Yolu.

İstifadəçi tərəfindən müəyyən edilmiş azaldıcı - RangeReducer
Nümunə, U-SQL istifadə edərək üst-üstə düşən aralıqları necə birləşdirirəm? U-SQL Reduktor UDO və usql / Nümunələr / RangeReducer / RangeReducer / təqdim olunur. Xahiş olunur ətraflı məlumat üçün reduktor məqaləsini nəzərdən keçirin.
c # kodu əlaqəli Code-Behind .cs sənədinə yerləşdirilir. Növbəti hissədə istifadəyə baxın, aşağıda.

İstifadəçi Tərifli Redüktördən istifadə - RangeReducer
Əvvəlki hissədən Code-Behind istifadə edərək, yuxarıda.

İstifadəçi tərəfindən müəyyən edilmiş azaldıcı - SalesReducer
c # kodu əlaqəli Code-Behind .cs sənədinə yerləşdirilir. Növbəti hissədə istifadəyə baxın, aşağıda.

İstifadəçi Tərifli Redüktördən istifadə - SalesReducer
Əvvəlki hissədən Code-Behind istifadə edərək, yuxarıda.

SİFARİŞ VƏ FETCH ilə azaldıcı
FETCH ilə SİFARİŞ BY maddəsi göstərilən sifariş əsasında məhdud sayda sıra seçilməsinə imkan verir. Bu nümunələr əvvəllər təyin olunmuş SalesReducer istifadə etməyə davam edir.


& Quotİnsanlar & quot; cədvəlinə baxın:

Şəxsiyyət vəsiqəsi Soyad Ad Ünvan Şəhər
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borqvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

İndi & quotPersons & quot cədvəlinə & quotDateOfBirth & quot adlı bir sütun əlavə etmək istəyirik.

Aşağıdakı SQL ifadəsini istifadə edirik:

Diqqət yetirin ki, yeni & quotDateOfBirth & quot sütunu tip tarixlidir və bir tarix keçirəcəkdir. Məlumat növü, sütunun hansı məlumat tipini saxlaya biləcəyini göstərir. MS Access, MySQL və SQL Serverdə mövcud olan bütün məlumat növlərinə tam istinad etmək üçün tam Məlumat növləri istinadına keçin.

& Quotİnsanlar & quot cədvəli indi belə görünəcək:

Şəxsiyyət vəsiqəsi Soyad Ad Ünvan Şəhər Doğum tarixi
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borqvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Bir səhv barədə məlumat vermək istəyirsinizsə və ya bir təklif vermək istəyirsinizsə, bizə bir e-poçt göndərməkdən çəkinməyin:

Mesajınız W3Schools-a göndərildi.

Ən yaxşı dərslər

Əsas istinadlar

Üst Nümunələr

Veb kursları

W3Schools təlim və təlim üçün optimize edilmişdir. Nümunələr oxumağı və öyrənməyi yaxşılaşdırmaq üçün sadələşdirilə bilər. Dərsliklər, istinadlar və nümunələr səhvlərin qarşısını almaq üçün daim nəzərdən keçirilir, lakin bütün məzmunun tam düzgünlüyünə zəmanət verə bilmərik. W3Schools istifadə edərkən, istifadə şərtlərimizi, çərəzlərimizi və gizlilik siyasətimizi oxuduğunuzu və qəbul etdiyinizi qəbul edirsiniz.