5 Aralık 2013 Perşembe

Cookie Nedir Ne İşe Yarar ?

Cookie Kelimesi "Web Sayfası Sunucusunun Sizin Bilgisayarınızın Hard Diskine Yerleştirdiği Ufak Bir Text Dosyası" için Kullanılmaktadır. Yani, o Web Sitesinin Sizin Bir Sonraki Ziyarette Sizi Tanıması İçin Geçerli Bir Bilgidir. Bu Text Dosyası Bir komut Dosyası Olmadığı Gibi, Virüs de Değildir. Size Özel Bir Tanımlamadır Ve Sadece Bu Kodu Tanımlayan Web Sunucusu Tarafından Okunabilir.

Cookie'nin Amacı; Sizin o Siteyi Yeniden Ziyaret Ettiğinizi Web Sunucuya Bildirmekten İbarettir.

Ne İşe Yarar ; Sizi Zaman Kaybından Korur Kendinize Kişselleştirdiğiniz Bir Sayfanız Varsa Bu Cookiler Sizi Hatırlar.Bir Web Sayfasına Bir Sonraki Dönüşünüzde İstediğiniz Bilgiler Ekrana Gelir ( Şifrenisin Otomatik Hatırlanması Gibi )

 

22 Ağustos 2013 Perşembe

MySQL: Access denied for user: ‘user@localhost’ (Using password: YES) xetası

Görmüş olduğunuz bu error ile çoxunuz dbForgeStudio -da connection qurduğunuz zaman qarşılaşmısınız.Bu zaman ilk önce MySql kompyuterinize qurduğunuz zaman root userine verdiyiniz parolu düzgün qeyd etmelisiniz.Eksi teqdirde bu xeta qarşınıza çıxacaq.Yox eger yenede xatirlaya bilmirsinizse root userine verdiyiniz parolu  deyismelisiniz.Nece?Aşağıdakı şekilde deyişe bilersiniz:

1) Ilk once services hisseden MySql serveri stop edirik.(Windows+R)

2)Daha sonra mysql-init.txt adinda 1 file yaradiriq.Ve icine bunlari yaziriq:
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('mammedova') WHERE User='root';
FLUSH PRIVILEGES;

//Burada update emri ile sifreni deyisirik ve flush ile etdiyimizin deyisikliklerin saxlanilmasi üçün servere cedvellerimizi tekrar yaddaşa yüklemesini deyirik.

Daha sonra bunu save edirik.

3)Start menudan  cmd-ni aciriq.

Buradan MySQL papkamizin oldugu yolu yaziriq.

1)cd "C:\Program Files\MySQL\MySQL Server 5.5" yazib enter vururuq.
2)dir yazaraq papkanin icine giririk.
3)Daha sonra bin papkasinin icine giririk   cd bin     yazib enter vuraraq.
4)Ve dir yazaraq papkanin icini aciriq.
5)cd .. enter
6)bin\mysqld.exe --defaults-file="my-ini" --init-file="C:\\Documents and Settings\\naclach\\Desktop\\mysql=init.txt" --console yazib enter vururuq.
7)Sonra services hisseden MySQL-i start edirik.
8)MySQL Command Line Client-den istifade ederek Enter password hisseye yeni yazdigim mammedova sifresini yazaraq daxil oluram.


Bu qeder.Çalışın birde şifrenizi unutmayasız.Olmasa yeniden yuxarıda yazdığım merheleleri etmek zorunda qalassız.Helelik ;)

BLOGUMA GERI DÖNDÜM :)

Salam.Uzun müddet fasileden sonra yeniden bloqumu yazmağa davam etmek qerarina geldim.Ümüd ediremki yazacaqlarım hamınıza kömek olacaq...)

30 Ocak 2013 Çarşamba

SQL SELECT INTO ISTIFADESI

SQL SELECT INTO ifadesi cedvellerin kopyasini yaratmaq ucun istifade olunur.Yeni,1 cedveldeki secilen melumatlar 1 basqa cedvelin icine daxil edilir.Esasen cedvellerinin kopyasinin alinmasi ucun istifade olunur.
SYNTAX-i:

SELECT *
INTO yeni_cedvel[IN xaricidatabase]
FROM kohne_cedvel


Cedveli basqa 1 database-e kopyalamaq ucun IN ifadesinden istifade olunur.

Eger butun sutunlarin yoxda bezi sutunlarin kopyasini almaq istesek:

SELECT ad,soyad
INTO Kisiler_Backup
FROM Kisiler


Eger 1den cox cedvelden istenilen sutunlari secib kopyasini almaq istesek:

SELECT cedvel1.ad,cedvel2.no
INTO cedve1_cedvel2_backup
FROM cedvel1
INNER JOIN cedvel2
ON cedvel1.c1_id=cedvel2.c1_id

SQL UNION ISTIFADESI

SQL UNION operatoru 1den cox Select ifadesinin birlesdirilmesi yeni kombinasiyasi  ucun istifade olunur.UNION ile istifade olunan Select ifadelerinin eyni sayida sutun sayisi ve eyni data tiplerinde ve sutunlarinda eyni sirada olmasi lazimdir.
SYNTAX-i:

SELECT sutun_adi(ları) FROM cedvel1
UNION
SELECT sutun_adi(ları) FROM cedvel2



Bu operator default olaraq tekrarlanmayan deyerleri secer.Tekrarlanan deyerleri secmek ucun UNION ALL operatorundan istifade etmek lazimdir.
SYNTAX-i:

SELECT sutun_adi(ları) FROM cedvel1
UNION ALL
SELECT sutun_adi(ları) FROM cedvel2


SQL JOINLER

SQL Joinler,1den cox cedvel arasindaki elaqeye dayanaraq sorgu elde etmek ucun istifade olunur.Esasen,database-deki cedveller key ile elaqelendirilir.1 veya 1den sutun primary key ola biler.Bu zaman icindeki melumatlar eyni olmamalidir.Yeni tekrarlanmis ola bilmez.
Joinlerin 1 cox novleri vardir:
-Left Join-Sol cedvelden butun melumatlari,sagdan ise sadece onlarla elaqeli olanlari siralayir.
-Right Join-Sag cedvelden butun melumatlari,soldan ise onlarla elaqeli olanlari siralayir.
-Full Join-Cedvellerden her hansi 1-i ile elaqeli olanlari siralayir.Hemcinin cedvel1 ve cedvel2 deki elaqeli olmayan melumatlari bele cixarir.

SQL INNER JOIN Keyword

Inner join her 2 cedveldede en az 1 elaqeli olan key varsa onlari siralayir.
SYNTAX-i:

SELECT sutun_adi(ları)
FROM cedvel1
INNER JOIN cedvel2
ON cedvel1.sutun_adi=cedvel2.sutun_adi


Meselen:

SELECT cedvel1.ad, cedvel1.soyad, cedvel2.yas
FROM cedvel1
INNER JOIN cedvel2
ON cedvel1.c1_id=cedvel2.c1_id
ORDER BY cedvel1.ad


Inner join ile Join eynidir.
Eger 1-1 ile elaqeli melumatlar olmasa o zaman siralama olmayacaqdir.

SQL LEFT JOIN Keyword

Left Join sag cedvelde elaqeli melumat olmasa bele sol cedveldeki(cedvel1) butun melumatlari cixarir.

SQL RIGHT JOIN Keyword

RIGHT JOIN sol cedvelde elaqeli melumat olmasa bele sag cedveldeki(cedvel2) butun melumatlari cixarir.

SQL SERVERDE CHECK CONSTRAINT ISTIFADESI

CHECHK constraint vasitesile istenilen sutunda istediyimiz formata uygun melumatin daxil edilmesini mueyyen ede bilerik.

CREATE TABLE Student
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

Burada CHECK constraint P_Id sutununda yalniz 0-dan boyuk integer reqemler daxil olunmasini mueyyen edir.Eger 0 daxil etsek o zaman error ile qarsilacagiq.CHECK hemcinin muxtelif sutunlar uzerinede qoyula biler.Meselen:

CREATE TABLE Student
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)

Cedvel yarandiqdan sonra check constrainti daxil etmek istesek:

ALTER TABLE Student
ADD CHECK (P_Id>0)

Muxtelif sutunlara qoymaq istesek:

ALTER TABLE Student
ADD CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')

Constrainti silmek istesek:

ALTER TABLE Student
DROP CONSTRAINT chk_Person

SQL SERVERDE DEFAULT CONSTRAINT ISTIFADESI

Default funksiyasi varsayilan deyer demekdir.Yeni cedveldeki sutunu bos qoysaq yazilmasini istediyimiz sahedir.Meselen,cedvelimizde 1 mail sahemiz olsun.Eger istifadeci varsayilan deyer girmese yeni bos saxlasa varsayilan deyer olaraq bizim istediyimiz 1 deyerin girilmesini mueyyen ede bilerik.Meselen:

CREATE TABLE Student
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),mail varchar(50) DEFAULT('adsiz@box.az')
)

Varsayilan deyeri deyismek istesek o zaman asagidaki kimi yaza bilerik:

ALTER TABLE Student
ALTER COLUMN mail SET DEFAULT 'hale@box.az'

Oracle ucun:

ALTER TABLE Student
MODIFY mail DEFAULT 'hale@box.az'

Constrainti silmek istesek:

ALTER TABLE Student
ALTER COLUMN mail DROP DEFAULT

SQL SERVERDE INDEXLEME

Index ne ucun yaradilir?
Database-ler melumatlarimizi saxlayir ve 1 database icinde olan melumatlar coxaldiqca artiq performansda zeiflik yaranir.Bize ise sorgularimizi cox tez 1 sekilde calisdirmaq ve melumatlari elde etmek lazimdir.Meselen:
Select ad form Hale where ad like a%
Bele 1 sorgu yazdigimiz zaman sql server cedvelimiz icinde olan butun melumatlari tek tek axtarmaga baslayir ve adi a herfi ile baslayanlari siyahilayir.Bu zaman axtaris cedvelin en basindan baslanir ve buda performansi asagi salir.Indexleme yaratsaq bu zaman sql server sorgu calisdirilanda ilk once 1 index olub olmadigini yoxlayir.
Tutaqki PhoneBook adinda 1 cedvelimiz var ve icerisinde 6 milyona qeder melumatlarimiz var.


Texminen 1 GB-a qeder yer tutan bu cedvelimizde axtaris etmemin ne qeder vaxt alacagini ve ne qeder yaddas istifade edeceyini gormek ucun asagdiaki kimi 1 test edek.:

Altindan xett cekilen hissede gorduyumuz kimi texminen 160.000-e qeder logical read edildi.Bu zamanda 547ms kimi 1 CPU zamani istifade olundu.Sade 1 sorguda bu qeder 1 netice oldugunu gorduysek minlerle istifadecinin sorgularini elde etmek ucun ne qeder vaxt lazim olacagini yeqinki dusune bilersiniz.

Umumiyyetle,cedvellerimiz sql serverde page-ler ile saxlanilir.melumatalrimiz ise her page icinde sutunlar icinde saxlanilir.Her page page number,page icinde olan bos sahe ve page tipini tutan 96 byte-liq 1 header saxlayir.
Indexleme sql serverde 2 yere ayrilir:
-Clustered Index
-Non-Clustered Index

Cedveller uzerinde index yaratmaq ucun CREATE INDEX ifadesinden istifade olunur.Indexler melumatlari daha suretli tapmaq ucun yaradilirlar.Bu zaman cedvelde olan butun melumatlar oxunmur.Istifadeciler indexleri gore bilmirler sadece olaraq sorgulari suretlendirmek ucun istifade edirler.Index qoyulmus cedvellerin update-i index qoyulmayan cedvellerin update-inden cox vaxt aparir.Cunku indexlerin ozleride update olunmaga ehtiyac duyurlar.
SYNTAX-i:
CREATE INDEX index_adi
ON table_adi (sutun_adi)


Ilk olaraq cedvelimizde Clustered Index yaradaq.





Index yaratdiqdan sonra evvel yazdigimiz sorgunu yeniden calisdirsaq:











Yuxaridaki neticede aciq askar gormek olurki 4 logical read sayesinde neticeni elde etdik.Bu nece oldu?
Cedvelimizdeki melumatlar Clustered Index ile beraber yeniden gozden kecirilerek tree seklinde saxlanildi.Indexleme emeliyyatindan sonra emeliyyatlarimiz index olaraq mueyyen etdiyimiz sutuna gore tree uzerinde axtarilir.Clustered Index bize performans olaraq daha yaxsi 1 netice qazandirdi.Ancaq cox vaxt yalnizca Clustered Index istifade etmek yeterli olmur.Meselen,cedvelimizde id ile axtaris qeder tez tez istifade etmesekde "job" sutununa gorede axtaris etdiyimizi dusunek.Sadece 1 defe istifade ede bileceyimiz Clustered Index haqqimizi id sutunu ucun istifade etdik.Bu zaman komeyimize Non-Clustered Index gelecek.
StringField1 ucun Non-Clustered Index yaradaq:





Sorgumuzu calisdiraq:










Netice goz qabagindadir.Clustered Index ile Non-Clustered Index arasidnaki ferq nedir?
SQL SERVERDE olan cedvel ucun Clustered Index yalniz 1 dene yaradila biler.Bunun sebebi,Clustered Index yaratmagimizla beraber melumatlarimizin key olaraq siralanaraq yadda saxlanilir.
Non-Clustered Index ise cedvel basina 999 dene yaradila biler.(sql server 2005de 249 denedi).Non-Clustered Index  yaradildiginda melumatlar siralanmir ve oldugu yer ile elaqeli basqa deyisiklik olmur.Bu indexleme novunde key-imize gore 1 tree yaradilir ancaq cedvelimizin melumatlari bu tree icerisinde yerlesmir.Yeni,Non-Clustered Index ile axtaris etdiyimiz zaman ilk olaraq axtardigimiz sutunun Clustered Index ucun istifade olunan keyine access edirik.Bu key ile Clustered Index uzerinde axtaris ederek butun melumatlarimiza catiriq.

29 Ocak 2013 Salı

SQL DATATYPE

CHAR-Sabit uzunluqda deyerler saxlayir.Meselen,char(5).Bu o demekdirki,yalniz 5 character tutur.5den az character tuta bilmez.255-e qeder character saxlaya bilir.
VARCHAR-Mueyyen uzunluqda deyerler tutur.255-e qeder character saxlaya bilir.Eger 255-den boyuk deyerler qoyulsa o zaman o TEXT tipine cevrilecek.
TEXT-65,535 character uzunlugunda Stringler saxlaya biler.
CLOB(Character Large Object)-böyük həcmdə mətn tipli məlumatları saxlayir.
BLOB(Binary Large Object) -isə mətn tipli olmayan istənilən məlumatı(video, musiqi, şəkil, MS Office faylları, zip faylları və s.) bazada saxlamaq üçün istifadə olunur.

uniqueidentifier 

Eger web uzerinde applicationlar yaziriqsa cedvellere aid id sutunlarini int ve identity 1 sutun olaraq mueyyen etmisikse,bu zaman adress barda querystring olaraq verdiyimizde id-li melumat-i deyissek bu zaman basqa istifadecinin melumatina daxil olmus olariq.Meselen,?id=20 nomreli id-ni 21 ile deyisdikde bu zaman basqa istifadecinin melumatlarina daxil olmus olariq.Bunun qarsisini almaq ucun uniqueidentifier datatype-den istifade olunur. Default value hissede newid() yazsaq bu veziyetinq qarsisini almis olariq.yeni unique deyerler elde etmis olariq.
Meselen,1-ci setirin id-si=DA1B7C69-B087-4C33-9908-01869AF14E52, 2-ci setirin id-si ise =004BEE20-3189-4148-AB24-02823B51201C .Yeni 1-1den ferqlenen 2 id almis olariq.Belelikle,istifadeciler 1 sonraki deyeri mueyyen ede bilmezler.

SQL SERVER-DE VIEW YARATMAQ

View-lar virtual cedvellerdir.Real cedveller kimi setirlerden ve sutunlardan ibaretdir.View-da olan field-ler database-de real olan 1 veya coxlu cedvellerden goturulmus field-lerdir.View yaradarken meslehet goruremki view adlarini vw_ ile baslayasinizki onu cedvellerden ayird etmek daha asan olsun.
Edeceyimiz sql sorgularinda 1-den cox cedveli ve onlarin ayri -ayri sutunlarini istifade etmek ,bunlarin hamisini birlesdirmek ve lazim olan cedvelden sorgu gondermek isteyirikse bu zaman bunlari etmek evezine view yaradib lazimli sutunlari lazimli cedvellerden alib tek 1 cedvel uzerinden sorgu gondermek isimizi dahada asanlasdirar.yeni qarisiq olan sorgular daha asan 1 hala salinmis olar.
Syntax:

CREATE VIEW vw_Hale AS
SELECT Sutun1,Sutun2..
FROM Hale
WHERE condition

Gizli view-da yarada bilerik.Bu zaman heckim bizim yaratdigimiz view-nun hansi cedveller ile elaqeli oldugunu gore bilmez.Bu zaman view-nun uzerinde kilit sekili emele gelecek ve modify secimi aktiv olmayacaq.


CREATE VIEW vw_Hale
with encryption---modify secimi deaktiv olacaq
AS
SELECT Sutun1,Sutun2..
FROM Hale
WHERE condition


View hemise var olan melumati gosterir.View yaratmanin diger bir ustun cehetide security terefdendir.Eger cedvelimizde olan sutunlarin hamisinin gorunmesini istemirikse view yaradib cedvellerimizin hamisinin gorunmesinin qarsisini ala bilerik.
View-nu update etmekde mumkundur.Eger view-a yeni sutun daxil etmek istesek o zaman gerekki onu update edek.
Syntax-i asagidaki kimidir:

CREATE OR REPLACE VIEW vw_Hale AS
SELECT Sutun1,Sutun2..
FROM Hale
WHERE condition

Yaratdigimiz view-nu silmek ucun DROP VIEW ifadesinden istifade edirik:

DROP VIEW vw_Hale 


Ancaq view-lar ile bezi emeliyyatlar edile bilmez.Onlar asagidakilardir:
-Order by istifade oluna bilmez;
-Adsiz sutun istifade oluna bilmez.Meselen,SUM funksiyasini istifade etmek isteyirikse o zaman mutleq as ile ad vermeliyik;
-1den cox sorgu yazmaq olmaz.Yeni,sadece bir select ile baslayan sorgu yaza bilerik;
-Insert,Update veya Delete istifade ede bilmerik;
-Her hansi bir parametr gondere bilmerik.


SQL SERVER-DE IDENTITY SEED RESET ETMEK

DBCC CHECKIDENT (‘DATABASE_ADI.TABLE_ADI‘, RESEED,1)

yazdigimiz zaman bu T-SQL sorgusu mueyyen olunan database icindeki cedvele aid olan identity seed deyerini 1-e set edir.Yeni bu zaman eger auto increment olan sutunu  2 -2 artmasi ucun teyin etmisikse bu zaman cedvele elave olunan ilk deyerin id-si (identity seed ozelligi verilen sutun) 1-den baslayacaq.Sonra ise 2-2 artacaq.yeni 1,3,5 seklinde.

Bunu basqa cur asagidaki kimide yazmaq olar:

create table Hale
(
id int not null identity(10,5)
primary key(id)
)
Bu zaman Hale cedveline daxil edilen deyerin id-si 10-dan baslayacaq ve 5-5 artacaq.yeni,10,15 ve s.
Oracle-da ise bunun ucun sequence yaratmaliyiq.
CREATE SEQUENCE seq_id
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10


Burada cache daha suretli access etmek ucun yaddasda ne qeder sequence deyerler yaradila bilineceyini mueyyen edir,Eger Hale cedveline melumat daxil etmek istesek o zaman nextval funksiyasindan istifade etmeliyik,
INSERT INTO Hale(id)
VALUES (seq_id.nextval)


8 Ocak 2013 Salı

SQL SERVER MANAGEMENT STUDIO-NUN GEC ACILMASI

Eger SSMS gec acilirsa bunu asagidaki yollarla hell ede bilerik:

1.SSMS-ni aciriq.
Tools->Options->Environment->Help->Online menyusunda " When loading help content " hisseden Eger SQL SERVERIN internetle hec bir elaqesi yoxdursa " Try local only,not online " secib OK duymesine vururuq.Bu zaman SQL SERVER help hissenin icini yuklerken sadece local diske baxacaq,internete baglanmaya calismayacaq.

Eger SQL SERVERIN internete baglantisi varsa (esasen bele olur) Bu zaman help hisseden " Try local first,then online" secimini sece bilerik.Bu zaman server ilk once local diske baxacaq,sonra internete baglanacaq.

2.Acilmani yavasladan sebeblerden biride asagidakidir:
Internet explore-i aciriq.
Tools->Internet options->Advanced->" Check for publisher's certificifate revocation " secimin isaresiz oldugundan emin olun.Eger secilidise secimi goturub OK vururuq.
Niye bele edirik? Cunku SQL SERVER MANAGEMENT STUDIO-da " Managed Code " istifade olunub.Yeni program yuklenende " Microsoftun " saytina baglanib bu kodlari tesdiq edir.Eger SQL SERVER-de internet baglantisi varsa o zaman bu emeliyyat daha tez heyata kecirilir.Eger internet baglantisi yoxdusa o zaman uzun bir muddet SSMS-nin acilmasini gozleyirik.

3.SSMS-nin normaldan 1-2 saniye daha tez acilmasini ise " Splash Screen " qaldiraraq temin ede bilerik.Splash Screen - 1 programin tam olaraq yuklenmeden evvel bir promotion (tanitim) ekrani gostermesidir.Bunu asagidaki kimi ede bilerik.

C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe -nosplash

Yeni Server harda yerlesirse onun URL-sinin sonuna gelib -nosplash yaziriq.

2. Secimi etsek yeni,Security-ni ignore edib SSMS-nin tez acilmasini istesek veya ignore etmeyib security-ni on plana kecirmek sizden asilidir.Bilirsiniz ,her seyin bir bedeli var :)

UGURLAR

SQL SERVERDE USERLERIN IP SIYAHISI

Bir SQL Server instance-na bagli olan istifadecilerin IP adreslerini asagidaki sorgunu yazmaqla gore bilerik:


Select client_net_address from sys.dm_exec_connections


"STRING OR BINARY DATA WOULD BE TRUNCATED." XETASI

Eger bir sutuna daxil etmeye calisdigimiz melumatin uzunlugu ,O sutun ucun mueyyen etdiyimiz uzunkuqdan daha uzun olarsa o zaman bu xeta mesaji ile qarsilasariq.
Meselen:
Create table test
(
ad nvarchar(9)
)
Yuxarida yazdigim table-a asagidaki kimi melumat daxil edek:

insert into test (ad) values ('Hale')

bu zaman hec bir problem olmayacaq,ancaq asagidaki kimi melumat daxil etsem:

insert into test (ad) values ('Azerbaycan')

o zaman bu xeta mesaji ile qarsilasariq.Cunku 'Azerbaycan' adi 10 herfden ibaretdir.,ancaq ad sutununda 9 character uzunlugunda teyin olunmusdur.

Bu xetanin qarsisini almaq ucun table-in strukturunu qurarken mueyyen etdiyimiz sutunlari duzgun sekilde qursaq o zaman problemimiz hell olunacaq.

Ugurlar.