UPDATE JOIN бичих нь: MsSQL, MySQL, pgSQL

Хааяа UPDATE JOIN хийх хэрэгцээ гардаг. Заримдаа хэрхэн бичихээ мартчих юм. T-SQL-ийн хувьд хэд хэдэн арга бий, гэхдээ би доор бичсэн хувилбарыг ашиглаад сурчихсан.

T-SQL

UPDATE blog_tagging AS bt
	SET bt.tag = t.tag_name
	FROM tbl_tags AS t
	WHERE bt.tag_id = t.tag_id

MySQL

UPDATE blog_tagging AS bt
	LEFT JOIN tbl_tags AS t ON bt.tag_id = t.tag_id
	SET bt.tag = t.tag_name

pgSQL

UPDATE blog_tagging bt
	SET tag= t.tag_name
	FROM tbl_tags t
	WHERE bt.tag = t.tag_name

ЖИЧ: pgSQL UPDATE JOIN нэмэв.

Advertisements

Хэрэв NULL бол ISNULL, IFNULL, NVL

Датабаз дээр null утга бүхий талбар дээр хэрхэн ажиллах талаар тэмдэглээд авая.

Жишээгээр:

SELECT field_mungu + field_tatvar AS niit_mungun_dun FROM tbl_husnegt WHERE ... GROUP BY ... ORDER BY ....

field_mungu нь NULL эсвэл field_tatvar нь NULL утга бол niit_mungun_dun нь NULL гарна. Харин NULL-ийг 0, эсвэл өөр ямар нэгэн тоон /int, double, decimal/ утгаар сольвол эцсийн үр дүн NULL биш тоо гарна.

SELECT ISNULL(field_mungu,0) + ISNULL(field_tatvar,0) AS niit_mungun_dun FROM tbl_husnegt WHERE ... GROUP BY ... ORDER BY ....

Тоон утгууд дээр ажиллахаас гадна тэмдэгтэн /char, string, varchar, nvarchar, text/ утгууд дээр ч ажиллаж болно. Овгийн эхний үсгийг аваад цэг залгаад нэрийг залган /А. Бат/ хэрэглэх үед овог байхгүй бол NULL гарч ирээд байдаг.  Гэх мэтчилэн ямар ч зүйлд ашиглаж болно.

T-SQL буюу MS-SQL : ISNULL( талбарын_нэр, солих утга )

PL-SQL буюу Oracle: NVL( талбарын_нэр, солих утга )

MySQLIFNULL( талбарын_нэр, солих утга )

Visual Studio дээрээс Oracle руу холбогдох нь (3 алхам)

За ASP.NET / C# / Visual Basic гэх мэт Visual Studio дээрээс Oracle датабаз руу холбох алхамуудыг доор жагсаав.

  • Алхам 1. Oracle connector (ODAC) суулгах
  • Алхам 2. TNS (Transparent Network Substrate) тохиргоо
  • Алхам 3. Visual Studio дээр connection үүсгэх

1. Oracle connector (ODAC) суулгах

Ер нь аливаа датабаз руу холбогдохын тулд холбогч багаж заавал хэрэгтэй. Энэхүү холбох багажыг Oracle-н үндсэн сайтнаас үнэгүй татаж авах боломжтой. Java бол JDBC, Visual Studio бол ODAC 11.2 Release 3 (11.2.0.2.1) with Oracle Developer Tools for Visual Studio татаж аваад суулгана. (Суулгасны дараа PC restart хийвэл найдвартай байх.)

2. TNS тохируулах

Oracle-ийн connecter суулгасаны дараа TNS тохиргоо буюу датабаз руу холбох тохиргоог хийнэ. Ингэхдээ “… product\11.1.0\client_1\Network\Admin” файл доторх tnsnames.ora файл дээр холболтын тохиргоог дараах бичнэ.

Жишээ нь Windows дээр бол C:\Program Files\Oracle\product\11.1.0\client_1\Network\Admin дотор tnsnames.ora файл байгаа. Хэрэв файл байхгүй бол Network\Admin\Sample хавтас доторх tnsnames.ora файлыг хуулж Network\Admin хавтас дотор tnsnames.ora нэртэйгээр хуулна.
Холболтын тохиргоог дараах форматаар бичнэ.

data_source_ner1=
 (DESCRIPTION=
 (ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
 (CONNECT_DATA=(SERVICE_NAME=database_ner))
 )

data_source_ner2=
 (DESCRIPTION=
 (ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))
 (CONNECT_DATA=(SERVICE_NAME=database_ner2))
 )

3. Visual Studio

Жишээ нь ASP.NET дээр бол ер нь бол web.config дээр бичихэд болно.

<connectionStrings>

дотор/дараа

<add name="ConnectionString_ner1" 
connectionString="DATA SOURCE=data_source_ner1;USER ID=user_ner;PASSWORD=nuuts_ug; PERSIST SECURITY INFO=True;"  
providerName="Oracle.DataAccess.Client" />

гэж бичээд гүйцээ.

ASP.NET биш C# / Visual basic эсвэл найдвартай нь дээр гэж үзвэл (бүр эсвэл анх удаа) бол форм эсвэл хуудас дээрээ Toolbox хэсгээс SqlDataSource чирч байрлуулна. Configure Data source сонгоод Add New connection товч дараад Oracle Database гэж сонгоод Continue дарна. Add Connection нэртэй цонх гарч ирэхэд Data Source гэсэн хэсгээс Data_source_ner1 сонгоод Use a specific user name and password сонгоод user_ner, nuuts_ug бөглөнө. За тэгээд Test Connection дарахад холбогдож болж байгаа эсэхийг үзүүлнэ. Тэгээд л Ok дараад, connection string-ээ хадгалаад болоо. (Хэрэв ямар нэгэн алдаа гарвал үзүүлсэн алдааны дагуу алдааг засна даа.) Ингэж тохируулахад ASP.NET бол автоматаар web.config дээр connection string биччигдэх буйза.

Oracle дата бааз руу холбох тохиргоо

Датабаз дээр trigger бичих нь: MsSQL ба MySQL

MySQL, MSSQL датабазын хүснэгт дээр trigger бичих нь.

MSSQL / T-SQL

Insert Trigger

CREATE TRIGGER trigger_insert1
ON table1
FOR INSERT
AS
BEGIN
UPDATE table2
    SET field_total = field_total + inserted.field_name1
END

Update Trigger

CREATE TRIGGER trigger_update1
ON table1
INSTEAD OF UPDATE
AS
BEGIN
SELECT t1.*, i.* FROM table1 t1
    JOIN inserted i ON t1.field_id = i.field_id
END

Delete Trigger

CREATE TRIGGER trigger_delete1
ON table1
FOR DELETE
AS
BEGIN
INSERT INTO logTableName
    SELECT * FROM deleted
END

Trigger Event

deleted – DELETE trigger үед дата нь deleted гэсэн хүснэгт хэлбэрээр байна.
inserted – INSERT, UPDATE trigger үед дата нь inserted гэсэн хүснэгт хэлбэрээр байна.

Trigger Time

FOR DELETE – Устгахаас өмнө
FOR INSERT – Нэмэхээс өмнө
FOR UPDATE – Засахаас өмнө
FOR INSERT, UPDATE – Нэмж, Засахаас өмнө

AFTER DELETE – Устгасаны дараа
AFTER INSERT – Нэмсэний дараа
AFTER UPDATE – Зассаны дараа
AFTER INSERT, UPDATE – Нэмж, Зассаны дараа

INSTEAD OF DELETE – Устгахын оронд
INSTEAD OF INSERT – Нэмэхийн оронд
INSTEAD OF UPDATE – Засахын оронд
INSTEAD OF INSERT, UPDATE – Нэмж, Засахын оронд

MySQL

Insert Trigger

CREATE TRIGGER trigger_insert1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
UPDATE table2
    SET field_total = field_total + NEW.field_name1
END;

Update Trigger

CREATE TRIGGER trigger_update1
AFTER UPDATE
ON table1
FOR EACH ROW
BEGIN
UPDATE table2
    SET field_total = field_total + NEW.field_name1
END

Delete Trigger

CREATE TRIGGER trigger_delete1
AFTER DELETE
ON table1
FOR EACH ROW
BEGIN
	INSERT INTO log_table_1 (id, field1, field2, field_date)
		values( old.id, old.field1, old.field2, NOW() );
END;

Trigger Event

OLD – DELETE trigger үед дата нь OLD гэсэн хүснэгт хэлбэрээр байна.
NEW – INSERT, UPDATE trigger үед дата нь NEW гэсэн хүснэгт хэлбэрээр байна.

Trigger Time
BEFORE DELETE – Устгахаас өмнө
BEFORE INSERT – Нэмэхээс өмнө
BEFORE UPDATE – Засахаас өмнө

AFTER DELETE – Устгасаны дараа
AFTER INSERT – Нэмсэний дараа
AFTER UPDATE – Зассаны дараа

PostgreSQL суулгасны дараа root (postgre) нууц үг солих нь

Би Ubuntu дээр шинэков хүн. Найзынхаа зөвлөснөөр apt-get -ээр postgresql-8.4 суулгав. Тэгээд PSQL комманд ашиглан датабаз руугаа орох гэсэн чинь орж чаддаггүй. Тэгээд default нууц үг байдаг юм байх гэж бодоод интернэтээс хайсан чинь тийм юм байдаггүй. Харин postgresql-д зориулсан системийн хэрэглэгчийг нь ашиглан нууц үгийг нь сольж болдог юм байна гэдийг мэдлээ.

  1. postgres” гэх system хэрэглэгчээр нэвтрэн орно. PostgreSQL нь систем дээр суух үед энэ system user автоматаар үүснэ. Хэрэв “postgres” болоход нууц үг асууж байгаа бол sudo su гэж root болж байгаад нууц үгийг нь солино.
  2. Postgres” систем хэрэглэгч болсоны дараа postgresql датабаз (PSQL) руу нэвтрэн орно. Ийн нэвтрэн ороход “postgres” нь postgresql-д зориулсан систем хэрэглэгч тул нууц үг асуухгүй.
  3. Postgresql-ийн датабаз хэрэглэгч (database user) болох “postgres“-гийн нууц үгийг сольно. (Дахиад л postgres, гэхдээ энэ бол датабаз хэрэглэгч, адилхан нэртэй, PostgreSQL-н root хэрэглэгч гэсэн үг.)
  4. Postgresql-(PSQL)-ээс гараад, postgres (su postgres) хэрэглэгчээс гарна.
  5. PSQL коммындаыг ашиглан postgreSQL рүү нэвтрэн орж туршиж болно.

$ su postgres ( <- postgres болох )
$ psql -d template1 ( <- PostgreSQL рүү postgres систеийн хэрэглэгчээр нэвтрэх )
=# ALTER USER postgres WITH PASSWORD ‘ШинэНууцҮг’; ( <- Нууц үг солих )
=# \q (<- psql-ээс гарах)
$ exit (<- postgres системийн хэрэглэгчээс гарах)
$ psql -h localhost -U postgres ( <- PostgreSQL рүү postgres датабаз хэрэглэгчээр нэвтрэх)

Хэрэв postgres системийн хэрэглэгчийн нууц үг солих хэрэгтэй бол:

$ sudo passwd postgres

%d bloggers like this: