MySQL Fonksiyonlar: String, Sayısal, Kullanıcı Tanımlı, Saklanan
İşlevler nelerdir?
MySQL verileri depolamak ve almaktan çok daha fazlasını yapabilir. biz de yapabiliriz veriler üzerinde manipülasyonlar gerçekleştirmek almadan veya kaydetmeden önce. Bu nerede MySQL Fonksiyonlar devreye girer. Fonksiyonlar, bazı işlemleri gerçekleştiren ve ardından bir sonuç döndüren basit kod parçalarıdır. Bazı fonksiyonlar parametre kabul ederken, diğerleri parametre kabul etmez.
Kısaca bir örneğe bakalım MySQL işlev. Varsayılan olarak, MySQL tarih veri türlerini “YYYY-AA-GG” formatında kaydeder. Diyelim ki bir uygulama geliştirdik ve kullanıcılarımız tarihin “GG-AA-YYYY” formatında döndürülmesini istiyor, bunu kullanabiliriz. MySQL Bunu başarmak için yerleşik DATE_FORMAT işlevi. DATE_FORMAT en çok kullanılan işlevlerden biridir MySQLDersi işledikçe buna daha detaylı bakacağız.
Neden işlevler kullanılmalı?
Girişte verilen örnekten yola çıkarak bilgisayar programlama tecrübesi olan kişiler şöyle düşünebilir: “Neden uğraşayım ki? MySQL İşlevler mi? Aynı etki betik/programlama diliyle de elde edilebilir mi?” Uygulama programına bazı prosedürler/işlevler yazarak bunu başarabileceğimiz doğrudur.
Girişteki DATE örneğimize dönecek olursak, kullanıcılarımızın verileri istenilen formatta alabilmesi için iş katmanının gerekli işlemleri yapması gerekecektir.
Uygulamanın diğer sistemlerle entegre olması gerektiğinde bu durum sorun haline gelir. Kullandığımızda MySQL DATE_FORMAT gibi işlevleri kullanırsak, bu işlevin veritabanına yerleştirilmesini sağlayabiliriz ve verilere ihtiyaç duyan herhangi bir uygulama, verileri gerekli formatta alır. Bu iş mantığındaki yeniden çalışmayı azaltır ve veri tutarsızlıklarını azaltır.
Kullanmayı düşünmemiz için başka bir neden MySQL işlevlerin nedeni, istemci/sunucu uygulamalarındaki ağ trafiğini azaltmaya yardımcı olabilmesidir. İş Katmanının, verileri değiştirmeye gerek kalmadan yalnızca depolanan işlevlere çağrı yapması gerekecektir. Ortalama olarak, işlevlerin kullanımı genel sistem performansını büyük ölçüde artırmaya yardımcı olabilir.
Fonksiyon türleri
Dahili işlevler
MySQL bir dizi yerleşik işlevle birlikte gelir. Yerleşik işlevler, yalnızca önceden uygulanmış olarak gelen işlevlerdir. MySQL sunucu. Bu işlevler, veriler üzerinde farklı türde manipülasyonlar gerçekleştirmemize olanak tanır. Dahili işlevler temel olarak aşağıdaki en çok kullanılan kategorilere ayrılabilir.
- Dize işlevleri – dize veri türleri üzerinde çalışır
- sayısal fonksiyonlar – sayısal veri türleri üzerinde çalışın
- Tarih işlevleri – tarih veri türlerinde çalışın
- Toplama işlevleri – yukarıdaki tüm veri türleri üzerinde çalışın ve özetlenmiş sonuç kümeleri üretin.
- diğer fonksiyonlar - MySQL ayrıca diğer yerleşik fonksiyon türlerini de destekler, ancak dersimizi yalnızca yukarıda adı geçen işlevlerle sınırlayacağız.
Şimdi yukarıda bahsedilen işlevlerin her birine ayrıntılı olarak bakalım. En çok kullanılan fonksiyonları “Myflixdb”mizi kullanarak anlatacağız.
Dize işlevleri
String fonksiyonlarının ne işe yaradığına zaten baktık. Bunları kullanan pratik bir örneğe bakacağız. Filmler tablomuzda film başlıkları küçük ve büyük harf kombinasyonları kullanılarak saklanır. Film başlıklarını büyük harflerle döndüren bir sorgu listesi almak istediğimizi varsayalım. Bunun için “UCASE” fonksiyonunu kullanabiliriz. Parametre olarak bir string alır ve tüm harfleri büyük harfe çevirir. Aşağıda gösterilen komut dosyası “UCASE” fonksiyonunun kullanımını göstermektedir.
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
İŞTE
- UCASE(`title`), başlığı parametre olarak alan ve onu `upper_case_title` takma adıyla büyük harflerle döndüren yerleşik işlevdir.
Yukarıdaki betiğin çalıştırılması MySQL Myflixdb'ye karşı workbench'ü test ettiğimizde aşağıdaki sonuçlar ortaya çıkıyor.
movie_id | title | UCASE('title') |
---|---|---|
16 | 67% Guilty | 67% GUILTY |
6 | Angels and Demons | ANGELS AND DEMONS |
4 | Code Name Black | CODE NAME BLACK |
5 | Daddy's Little Girls | DADDY'S LITTLE GIRLS |
7 | Davinci Code | DAVINCI CODE |
2 | Forgetting Sarah Marshal | FORGETTING SARAH MARSHAL |
9 | Honey mooners | HONEY MOONERS |
19 | movie 3 | MOVIE 3 |
1 | Pirates of the Caribean 4 | PIRATES OF THE CARIBEAN 4 |
18 | sample movie | SAMPLE MOVIE |
17 | The Great Dictator | THE GREAT DICTATOR |
3 | X-Men | X-MEN |
MySQL bir dizi dize işlevini destekler. Tüm yerleşik dize işlevlerinin tam listesi için bu bağlantıya bakın http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL https://serdartavaslioglu.com sitesi üzerinden ücretsiz erişebilirseniz.
sayısal fonksiyonlar
Daha önce de belirtildiği gibi bu işlevler sayısal veri türleri üzerinde çalışır. SQL ifadelerindeki sayısal veriler üzerinde matematik hesaplamalar yapabiliriz.
Aritmetik operatörler
MySQL SQL ifadelerinde hesaplamalar yapmak için kullanılabilen aşağıdaki aritmetik operatörleri destekler.
İsim | Açıklama |
---|---|
DIV | Tam sayı bölümü |
/ | Bölünme |
- | Çıkarma |
+ | Ek |
* | Çarpma |
% veya MOD | modül |
Şimdi yukarıdaki operatörlerin her birinin örneklerine bakalım
Tamsayı Bölümü (DIV)
SELECT 23 DIV 6 ;
Yukarıdaki betiği çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
3
Bölme operatörü (/)
Şimdi bölme operatörü örneğine bakalım. DIV örneğini değiştireceğiz.
SELECT 23 / 6 ;
Yukarıdaki betiği çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
3.8333
Çıkarma operatörü (-)
Şimdi çıkarma operatörü örneğine bakalım. Önceki iki örnektekiyle aynı değerleri kullanacağız
SELECT 23 - 6 ;
Yukarıdaki betiği çalıştırmak bize 17 değerini verir
Toplama operatörü (+)
Şimdi toplama operatörü örneğine bakalım. Önceki örneği değiştireceğiz.
SELECT 23 + 6 ;
Yukarıdaki betiği çalıştırmak bize 29 değerini verir
Çarpma operatörü (*)
Şimdi çarpma operatörü örneğine bakalım. Önceki örneklerdeki değerlerin aynısını kullanacağız.
SELECT 23 * 6 AS `multiplication_result`;
Yukarıdaki betiği çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
çarpma_sonucu |
---|
138 |
Modulo operatörü (-)
Modulo operatörü N'yi M'ye böler ve bize kalanı verir. Şimdi modulo operatörü örneğine bakalım. Önceki örneklerdeki değerlerin aynısını kullanacağız.
SELECT 23 % 6 ;
OR
SELECT 23 MOD 6 ;
Yukarıdaki betiği çalıştırmak bize 5 değerini verir
Şimdi bazı yaygın sayısal işlevlere bakalım. MySQL.
Kat – bu fonksiyon bir sayıdan ondalık basamakları kaldırır ve onu en yakın en düşük sayıya yuvarlar. Aşağıda gösterilen betik kullanımını göstermektedir.
SELECT FLOOR(23 / 6) AS `floor_result`;
Yukarıdaki betiği çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
Kat_sonucu |
---|
3 |
yuvarlak – bu fonksiyon ondalık basamaklı bir sayıyı en yakın tam sayıya yuvarlar. Aşağıda gösterilen betik kullanımını göstermektedir.
SELECT ROUND(23 / 6) AS `round_result`;
Yukarıdaki betiği çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
Round_result |
---|
4 |
Güney Afrika parası – bu fonksiyon rastgele bir sayı üretmek için kullanılır, fonksiyon her çağrıldığında değeri değişir. Aşağıda gösterilen komut dosyası kullanımını göstermektedir.
SELECT RAND() AS `random_result`;
Saklanan işlevler
Saklanan işlevler, saklanan işlevi kendinizin tanımlamanız gerekmesi dışında yerleşik işlevler gibidir. Saklanan bir işlev oluşturulduktan sonra, diğer işlevler gibi SQL ifadelerinde kullanılabilir. Saklanan bir işlevi oluşturmaya yönelik temel sözdizimi aşağıda gösterildiği gibidir
CREATE FUNCTION sf_name ([parameter(s)]) RETURNS data type DETERMINISTIC STATEMENTS
İŞTE
- “FONKSİYON OLUŞTUR sf_adı ([parametre(ler)])” zorunludur ve söyler MySQL parantez içinde tanımlanan isteğe bağlı parametrelerle `sf_name' adlı bir işlev oluşturmak için sunucuya gidin.
- “İADE veri türü” zorunludur ve işlevin döndürmesi gereken veri türünü belirtir.
- “DERMİNİSTİK” aynı argümanlar sağlandığında fonksiyonun aynı değerleri döndüreceği anlamına gelir.
- "İFADELER" işlevin yürüttüğü prosedür kodudur.
Şimdi yerleşik bir işlevi uygulayan pratik bir örneğe bakalım. Hangi kiralanmış filmlerin dönüş tarihini geçtiğini bilmek istediğimizi varsayalım. Dönüş tarihini parametre olarak kabul eden ve ardından bunu geçerli tarihle karşılaştıran saklı bir işlev oluşturabiliriz. MySQL sunucu. Geçerli tarih dönüş filmi tarihinden küçükse "Hayır" değerini döndürürüz, aksi halde "Evet" değerini döndürürüz. Aşağıda gösterilen komut dosyası bunu başarmamıza yardımcı olur.
DELIMITER | CREATE FUNCTION sf_past_movie_return_date (return_date DATE) RETURNS VARCHAR(3) DETERMINISTIC BEGIN DECLARE sf_value VARCHAR(3); IF curdate() > return_date THEN SET sf_value = 'Yes'; ELSEIF curdate() <= return_date THEN SET sf_value = 'No'; END IF; RETURN sf_value; END|
Yukarıdaki betiğin çalıştırılması, saklanan `sf_past_movie_return_date` fonksiyonunu yarattı.
Şimdi saklı fonksiyonumuzu test edelim.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
Yukarıdaki betiğin çalıştırılması MySQL workbench'ü myflixdb'ye karşı çalıştırdığımızda aşağıdaki sonuçlar ortaya çıkıyor.
movie_id | membership_number | return_date | CURDATE() | sf_past_movie_return_date('return_date') |
---|---|---|---|---|
1 | 1 | NULL | 04-08-2012 | NULL |
2 | 1 | 25-06-2012 | 04-08-2012 | yes |
2 | 3 | 25-06-2012 | 04-08-2012 | yes |
2 | 2 | 25-06-2012 | 04-08-2012 | yes |
3 | 3 | NULL | 04-08-2012 | NULL |
Kullanıcı tanımlı işlevler
MySQL ayrıca genişleyen kullanıcı tanımlı işlevleri de destekler MySQL. Kullanıcı tanımlı işlevler, aşağıdaki gibi bir programlama dili kullanarak oluşturabileceğiniz işlevlerdir. C, C++ vb. ve ardından bunları ekleyin MySQL sunucu. Bir kez eklendikten sonra diğer işlevler gibi kullanılabilirler.
ÖZET
- Fonksiyonlar yeteneklerimizi geliştirmemize olanak sağlar. MySQL.
- İşlevler her zaman bir değer döndürür ve isteğe bağlı olarak parametreleri kabul edebilir.
- Yerleşik işlevler, birlikte gönderilen işlevlerdir. MySQLBunlar, üzerinde işlem yaptıkları veri türlerine göre kategorilere ayrılabilir; yani dizeler, tarih ve sayısal yerleşik fonksiyonlar.
- Saklanan işlevler kullanıcı tarafından oluşturulur. MySQL sunucusudur ve SQL ifadelerinde kullanılabilir.
- Kullanıcı tanımlı işlevler dışarıda oluşturulur MySQL ve içine dahil edilebilir MySQL sunucusu.