Sütun Tipleri
MySQL Sütun Tipleri yazısına taşıdım.
Constraint
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Case + When
gender alanı 'Male' değilse ne döner bilmiyorum. Şöyle yaparız.
Şöyle yaparız.
Charset
Tabloyu yaratırken verilir. Şöyle yaparız.
Açıklaması şöyle
Açıklaması şöyle
Create Trigger
Yeni eklenen kayıt dosyaya şöyle yazılır.
Date_Sub
MySQL Date ve Time Metodları yazısına taşıdım.
Exists
Inner Join yerine kullanılabilir. Şöyle yaparız.
Sorguların Execution Plan detayını gösterir. Şöyle yaparız.
Bu alanın eqref olması iyi bir şeydir. Belirtilen kaydı aramak için Primary Key veya Unique Key kullanıldığını gösterir. Yani nokta atışı yapılıyor. rows sütununun 1 görünmesi gerekir.
Type sütunu - index
Bu alanın index olması her zaman çok iyi bir şey değildir. Tüm index'in dolaşıldığı anlamına gelir. rows sütunu ile birlikte bakılarak kaç tane satırın index ile dolaşıldığı görülebilir.
Rows Sütunu
Kaç tane satırın dolaşıldığını gösterir.
Grant All
Şöyle yaparız.
Grant Execute
Şöyle yaparız.
MySQL genellikle sadece localhost'tan bağlanılacak şekilde ayarlı oluyor. Uzaktan bağlanma imkanı tanımak için şöyle yapabiliriz.
Having Count gruplama yapılan sütun için kullanılabilir. Şöyle yaparız.
Söz dizimi şöyle
Aynı anda birden fazla satır eklemek için şöyle yaparız.
MySQL Join yazısına taşıdım.
Load Data
Şöyle yaparız.
Şöyle yaparız.
Elimizde şöyle bir tablo olsun
MySQL If Koşulu yazısına taşıdım.
In
Şöyle yaparız.
Inner Join yerine Exists kullanılabilir. Şöyle yaparız.
Şöyle yaparız.
Is Null
Şöyle yaparız.
İlk 4 ve sonr 4 karakteri seçip birleştirmek için şöyle yaparız.
Aranacak metin %...% karakterleri arasına alınır. Eğer aranacak metin içinde de % karakteri varsa \% şeklinde escape edilir. 1% şöyle yapılır.
Şöyle yaparız.
5. sıradan başlayarak 10 satırı dönmek için şöyle yaparız.
Sıralama yönü belirtilmiyorsa ASC olduğu kabul edilir.
Belirtilen string'i başka bir şey ile değiştirir. 1% string'indeki % karakterini \% ile değiştirmek için şöyle yaparız.
Şöyle yaparız.
İlk 4 ve sonr 4 karakteri seçip birleştirmek için şöyle yaparız.
MySQL Aggregate Meodları yazısına taşıdım.
Tables tablosu
Şöyle yaparız
MySQL Date ve Time Metodları yazısına taşıdım.
Truncate
Tüm tabloyu siler. Ayrıca AUTO INCREMENT alanları da sıfırlar. Şöyle yaparız.
Şöyle yaparız.
Örnek 1
Şöyle bir tablo olsun çıktısı isteyelim.
row_id özelliğini kendimiz yapmak isteyelim. Şöyle yaparız.
MySQL Sütun Tipleri yazısına taşıdım.
Constraint
Şöyle yaparız.
CONSTRAINT my_table_ibfk_1 FOREIGN KEY (group_id) REFERENCES groups (id)
Primary Key Şöyle yaparız.
PRIMARY KEY (id)
Unique KeyŞöyle yaparız.
UNIQUE KEY uix_key1 (name,group_id),
Key Şöyle yaparız.
KEY group_id (group_id),
Case + When
gender alanı 'Male' değilse ne döner bilmiyorum. Şöyle yaparız.
SELECT
year_added,
COUNT(case when gender='Male' then 1 end) as malecount,
COUNT(case when gender='Female' then 1 end) as femalecount,
COUNT(*) as totalcount
FROM tbl WHERE status = 1 GROUP BY year_added
Case + When + ElseŞöyle yaparız.
CASE
WHEN qty_1 <= '23' THEN price
WHEN ... THEN ...
WHEN ... THEN ...
WHEN ... THEN ...
ELSE 1
END
Charset
Tabloyu yaratırken verilir. Şöyle yaparız.
CREATE TABLE StationTimezone (
...
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Şöyle yaparız.CREATE TABLE file_server (
...
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Şöyle yaparız.CREATE TABLE my_table (...)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
Tabloya veya sütuna verilir. Şöyle yaparız.
CREATE TABLE StationTimezone (
Timezone varchar(50) NOT NULL COMMENT 'Name of the timezone',
...
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='CityCode to Timezone mapping';
Concat
İki veya üç string'i birleştirir. Şöyle yaparız.SELECT CONCAT('MY NUMBER ', T.NUM, ' IS MINE') AS 'ERR'
FROM YourTable T
WHERE ...
Concat_WsAçıklaması şöyle
Girdi null ise birleştirme yapmaz. Şöyle yaparız.CONCAT_WS() does not skip empty strings. However, it does skip any NULL values after the separator argument.
SELECT
id,
CONCAT_WS(',',
IF(`field1` = 'no', 'field1', null),
IF(`field2` = 'no', 'field2', null),
IF(`field3` = 'no', 'field3', null)
) AS fields
FROM `your_table`
Count (*)Açıklaması şöyle
Şöyle yaparız.The COUNT() function returns the number of rows that matches a specified criteria.
select count(*) from tab1;
Create Event
Şöyle yaparız.DELIMITER $$
CREATE EVENT test ON SCHEDULE EVERY 2 MINUTE
DO
BEGIN
SELECT 1;
SELECT 2;
END $$
DELIMITER;
Delimiter'ın neden kullanıldığının açıklaması şöyleIf you use the mysql client program to define a stored program containing semicolon characters, a problem arises. By default, mysql itself recognizes the semicolon as a statement delimiter, so you must redefine the delimiter temporarily to causemysql
to pass the entire stored program definition to the server.
Yeni eklenen kayıt dosyaya şöyle yazılır.
create trigger ins_transaction AFTER INSERT ON tbl
select new into outfile filename.txt;
Create View
Şöyle yaparız.create view SalesData as
select orders.order_id, items.item_id from orders
join order_details
on orders.order_id = order_details.order_id
...;
Date_Format
MySQL Date ve Time Metodları yazısına taşıdım.Date_Sub
MySQL Date ve Time Metodları yazısına taşıdım.
Exists
Inner Join yerine kullanılabilir. Şöyle yaparız.
DELETE FROM dataproc e
WHERE EXISTS(SELECT 1 FROM unsubscribers j WHERE e.EMAIL = j.EMAIL);
ExplainSorguların Execution Plan detayını gösterir. Şöyle yaparız.
mysql> EXPLAIN SELECT * FROM sentence WHERE sentence_lang_id = "AMH"\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: sentence
type: ref
possible_keys: sentence_lang_id
key: sentence_lang_id
key_len: 153
ref: const
rows: 442
Extra: Using where
Type sütunu - eqrefBu alanın eqref olması iyi bir şeydir. Belirtilen kaydı aramak için Primary Key veya Unique Key kullanıldığını gösterir. Yani nokta atışı yapılıyor. rows sütununun 1 görünmesi gerekir.
Type sütunu - index
Bu alanın index olması her zaman çok iyi bir şey değildir. Tüm index'in dolaşıldığı anlamına gelir. rows sütunu ile birlikte bakılarak kaç tane satırın index ile dolaşıldığı görülebilir.
Rows Sütunu
Kaç tane satırın dolaşıldığını gösterir.
Grant All
Şöyle yaparız.
GRANT All ON *.* TO 'root'@'localhost';
Şöyle yaparız.
GRANT EXECUTE ON dbname.* TO 'username'@'localhost';
Grant - Uzaktan bağlanmaMySQL genellikle sadece localhost'tan bağlanılacak şekilde ayarlı oluyor. Uzaktan bağlanma imkanı tanımak için şöyle yapabiliriz.
GRANT ALL PRIVILEGES ON database.*
TO 'youruser'@'%'
IDENTIFIED BY 'yourpassword';
Group By + Having CountHaving Count gruplama yapılan sütun için kullanılabilir. Şöyle yaparız.
SELECT group_id FROM my_table GROUP BY group_id HAVING count(group_id) > 100;
Having Count başka sütunlar için de kullanılabilir. Şöyle yaparız.Select student_id from STUDENT group by student_id having count(assignment_done) =
max(assignment_done);
Insert IntoSöz dizimi şöyle
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...)]
[(col_name [, col_name] ...)]
{VALUES | VALUE} (value_list) [, (value_list)] ...
[ON DUPLICATE KEY UPDATE assignment_list]
ÖrnekAynı anda birden fazla satır eklemek için şöyle yaparız.
insert into user(username,password,email,created,last_updated)
values
('...','...','...',current_timestamp(),current_timestamp()),
('...','...','...',current_timestamp(),current_timestamp());
Left JoinMySQL Join yazısına taşıdım.
Şöyle yaparız.
mysql> LOAD DATA LOCAL INFILE 'Desktop/tr.txt'
INTO TABLE employee_data;
Lock TablesŞöyle yaparız.
use mydb ;
lock table user write;
insert into user(username,password,email,created,last_updated) values
('...','...','...',current_timestamp(),current_timestamp())
unlock tables;
Sum ve Group ByElimizde şöyle bir tablo olsun
TABLE orders
userid | theorder | price
-------------------------------
20 | Cigar | 5.00
20 | Beer | 6.00
20 | Whiskey | 20.00
20 | Bacon | 10.00
21 | Beer | 10.00
21 | Bacon | 10.00
22 | Cigar | 10.00
Gruplayıp toplamı görmek için şöyle yaparız.SELECT
GROUP_CONCAT(theorder SEPARATOR ', '),
userid,
sum(price)
FROM orders
GROUP BY userid
Çıktı olarak şunu alırız.userid | list | price
-------------------------------------------------
20 | Cigar, Beer, Whiskey, Bacon | 41.00
21 | Beer, Bacon | 20.00
22 | Cigar | 10.00
IfMySQL If Koşulu yazısına taşıdım.
In
Şöyle yaparız.
SELECT * FROM sentence WHERE sentence_lang_id in ("AMH")
Inner JoinInner Join yerine Exists kullanılabilir. Şöyle yaparız.
DELETE e FROM dataproc e
INNER JOIN unsubscribers j ON e.EMAIL = j.EMAIL;
Insert IntoŞöyle yaparız.
insert into T(...,...) select ...,... from S where ...;
Bu cümle S tablosunun tüm satırlarına kilit koyar.Is Null
Şöyle yaparız.
select * from table where (order_id != 1 or order_id is null)
Left ve Rightİlk 4 ve sonr 4 karakteri seçip birleştirmek için şöyle yaparız.
select concat(left(col, 4), right(col, 4))
LikeAranacak metin %...% karakterleri arasına alınır. Eğer aranacak metin içinde de % karakteri varsa \% şeklinde escape edilir. 1% şöyle yapılır.
ProductName LIKE '%1\%%'
LimitŞöyle yaparız.
SELECT *
FROM receipts AS R
WHERE R.date_id IS NOT NULL
ORDER BY R.id ASC
LIMIT 20
Offset5. sıradan başlayarak 10 satırı dönmek için şöyle yaparız.
select * from template_master
where status='active' and id >= 5
order by id asc LIMIT 10 OFFSET 5;
Order BySıralama yönü belirtilmiyorsa ASC olduğu kabul edilir.
ORDER BY average, votes DESC
Şuna çevrilir.ORDER BY average ASC, votes DESC
ASC kullanıyorsak null değerler önce gelir. Açıklaması şöyleİki sütüna göre sıralamak için şöyle yaparız."When doing an ORDER BY, NULL values are presented first if you do ORDER BY ... ASC and last if you do ORDER BY ... DESC."
ORDER BY NAME ASC, EMAIL ASC
ReplaceBelirtilen string'i başka bir şey ile değiştirir. 1% string'indeki % karakterini \% ile değiştirmek için şöyle yaparız.
WHERE data LIKE CONCAT('%',REPLACE('1%', '%', '\%'),'%');
Set SessionŞöyle yaparız.
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
Substrİlk 4 ve sonr 4 karakteri seçip birleştirmek için şöyle yaparız.
select concat( substr(yourField, 1, 4 ), substr(yourField, -4 ) )
SumMySQL Aggregate Meodları yazısına taşıdım.
Tables tablosu
Şöyle yaparız
SHOW TABLES WHERE Tables_in_db REGEXP '^table_2[0-9]'
TimeStampDiff metoduMySQL Date ve Time Metodları yazısına taşıdım.
Truncate
Tüm tabloyu siler. Ayrıca AUTO INCREMENT alanları da sıfırlar. Şöyle yaparız.
TRUNCATE TABLE yourTable;
Union AllŞöyle yaparız.
SELECT * from sales a
UNION ALL
SELECT times,payment_amount from transaction
User Defined VariableÖrnek 1
Şöyle bir tablo olsun çıktısı isteyelim.
+-----------+--------------+---------------+
| DEBIT | CREDIT | BALANCE |
+-----------+--------------+---------------+
| 0.00 | 700.00 | -700.00 |
| 0.00 | 700.00 | -1400.00 |
| 400.00 | 0.00 | -1000.00 |
| 2000.00 | 500.00 | 500.00 |
+-----------+--------------+---------------+
Yeni bir değişkeni sütun olarak hesaplamak için şöyle yaparız.SELECT debit,credit, @balance := debit - credit AS balance
FROM balancetable,
Örnek 2row_id özelliğini kendimiz yapmak isteyelim. Şöyle yaparız.
select
@i:=@i+1 as iterator, t.*
from
big_table as t, (select @i:=0) as foo
Hiç yorum yok:
Yorum Gönder