22 wrz 2010 o 15:18 | T-SQL
Autor: admin |
Chcemy zmienić COLLATION dla naszej bazy danych, ale SQL Server zwraca nam komunikat:
The database could not be exclusively locked to perform the operation.
Możemy ominąć ten problem zmieniając przed wykonaniem operacji zmiany COLLATION przestawiamy tryb pracy bazy danych na single user, a po wykonaniu operacji z powrotem na multi user.
| 1 | ALTER DATABASE [nazwa bazy] SET SINGLE_USER WITH ROLLBACK IMMEDIATE |
| 2 | ALTER DATABASE [nazwa bazy] COLLATE [nazwa COLLATION] |
| 3 | ALTER DATABASE [nazwa bazy] SET MULTI_USER |
30 lip 2009 o 18:38 | T-SQL
Autor: admin |
Większość osób posługujących się SQL’em wie do czego służy UNION, mało tego często zdarza się, że go używa.
Jednak jak pokazuje doświadczenie, nie każdy wie jaka różnica jest pomiędzy
UNION, a
UNION ALL. W rezultacie przy pisaniu zapytania stosuje
UNION, chociażby z racji tego, iż jest krótsze

.
W skrócie
UNION ALL łączy wszystkie rekordy z zapytań, natomiast UNION dokonuje filtracji i odrzuca duplikujące się rekordy (
DISTINCT).
W przypadku zbioru danych, w którym nie występują duplikaty dane wynikowe będą takie same, jednak samo obciążenie wywołane zapytaniem jest inne, na niekorzyść
UNION.
Co z tego wynika? Jeżeli jesteśmy pewni, że dane znajdujące się w łączonych przez nas zapytaniach nie posiadają duplikatów / bądź też nie przeszkadza nam obecność duplikatów zawsze stosujmy
UNION ALL.
1 cze 2009 o 10:03 | T-SQL
Autor: admin |
Jak pobrać losowy rekord z tablicy w bazie danych ?
Np. tak:
| 1 | SELECT TOP (1) imie FROM obywatele |
| 2 | ORDER BY NEWID() |
| 3 | |
Przykład dla bazy danych MySql:
| 1 | SELECT imie FROM obywatele |
| 2 | ORDER BY RAND() |
| 3 | LIMIT 1 |
| 4 | |
Zapytanie w MS Access:
| 1 | SELECT TOP (1) imie |
| 2 | FROM obywatele |
| 3 | ORDER BY Rnd(kolumna_id) |
27 maj 2009 o 9:48 | T-SQL
Autor: admin |
Chcemy wstawić tekst zawierający znaki końca wiersza do pola typu varchar za pomocą zapytania T-SQL ?
Możemy to zrobić tak:
| 1 | INSERT INTO [dbo].[Teksty] ([Tresc]) |
| 2 | VALUES ('Pierwsza linia' + CHAR(13) + CHAR(10) + |
| 3 | 'druga linia' + CHAR(13) + CHAR(10) + 'trzecia linia.') |
albo po prostu:
| 1 | INSERT INTO [dbo].[Teksty] ([Tresc]) |
| 2 | VALUES ( |
| 3 | 'Pierwsza linia |
| 4 | druga linia |
| 5 | trzecia linia.') |