Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Измение источника поля таблицы

всем добрый день.

подскажите, реально ли изменять программно свойства полей таблицы? в частности интересует реально ли изменить источник поля таблицы. получил список свойств поля таблицы через ADOX, не нашел нужного свойства. Есть еще способы обратиться к свойствам полей?

Спасибо за ответ.

К сообщению приложен файл. Размер - 71Kb
Ответ:
Ганов Александр
получил список свойств поля таблицы через ADOX, не нашел нужного свойства. Есть еще способы обратиться к свойствам полей?
Почему-то у ADOX очень ограниченный набор доступных свойств поля (даже нет некоторых основных).
Это лучше делать через DAO и коллекцию Properties поля.
Вопрос: "SELECT * FROM." не получает все поля таблицы

Помогите, пожалуйста.
Есть таблица с полями:
1. zone_id
2. country_id
3. regioncode
4. name
5. code
6. status
Делаю запрос: "SELECT * FROM zone WHERE status = '1' AND country_id = '176' ORDER BY name ASC"
далее пытаюсь прочитать записи из поля "code" на PHP: echo $row['code']; - без проблем выводит все записи
если пытаюсь прочитать записи из поля "regioncode": echo $row['regioncode']; - ошибка: "Undefined index: regioncode in..."
поля все заполнены в таблице -пустых нет
такое ощущение, что запрещено чтение из этого поля
Как исправить?
Ответ: Спасибо за ответ.
Да, в массиве этого поля нет - потому что из базы оно не приходит. Только не пойму почему.
Как попробовать через консоль отправить запрос в базу? Вы имеете ввиду консоль phpmyadmin?

Блин, база творит что хочет, то разрешает писать и читать из поля, то запрещает.
В phpmyadmin все поля есть, есть данные, пишу и читаю что хочу.
PHP
1
2
$this->db->query("UPDATE " . DB_PREFIX . "product SET calculator='1' WHERE product_id = '1' "); //нормально пишет и читает это поле из базы
$this->db->query("UPDATE " . DB_PREFIX . "product SET parametres='gggggggggg' WHERE product_id = '1' "); //Ошибка - в базу ничего не пишется, причём сегодня и читалось и писалось
Я немного в недоумении.
Может ли движок (работаю с Opencart) запрещать запись в базу определённых полей?
Или может кэширование какое-то непонятное?
Как проверить запрос с удалённой машины?
Вопрос: Правильность заполнения полей таблиц. Как правильнее их заполнить

то ли я что-то намудрила... то ли не пойму, что делать дальше..нужна помощь редкостному чайнику
было следующее задание:

У міськводоканалі ведеться БД “Водопостачання” для обліку щомісячної сплати за постачання холодної та послуги каналізації.
До БД входять таблиці:
тКвартири(Код квартири, Квартира, План, Площа);
тОплата факт (Код оплати факт, Дата оплати, Оплачено);
тОплата план(Код оплати план, Рік,Місяць, Кількість мешканців, Нараховано);
тБудинки(Код будинку,Адреса);
тТарифи (Код тарифу, Дата встановлення, Тарифік1люд).
Визначити відсоток заборгованості по квартирі та будинку за звітне півріччя




Ну и я начала действовать часть текста из моей работы)
Для большей практичности, дополним или немного изменим существующие таблицы:
• в таблице тБудинки видоизменим столбец Адреса на столбец №будинку и №квартири;
• в таблицу тКвартири добавим столбец Кількість_мешканців;
• в таблице тОплата_план Рік,місяць считаем как один столбец( графу) с датой;
• добавим таблицу тМешканці( в которой будут содержаться более раскрытые данные о жителях квартиры);


Отношения между этими объектами могут быть определены простыми терминами:
тДома к тКвартиры:В доме может быть одна или несколько квартир(1 ко многим);
тКвартири к тМешканці: в каждой квартире может быть, проживать(быть прописанным) один или несколько жителей(1 ко многим);
тТарифи к тОплата_план: начисленная сумма (оплата по плану) зависит от количества жителей в квартире и установленного тарифа,т.е. один действует тариф на несколько квартир и возникает несколько планируемых оплат(1 ко многим);
тОплата_план к тКвартири: каждой квартире соответствует одна оплата водоснабжения по установленному тарифу (1 ко многим);
тОплата_факт к тКвартири: по каждой квартире в доме совершается только один платеж по оплате водоснабжения (тОплата_факт)( 1 ко многим);


Работала как препод сказала - в erwin. создала связи между таблицами. она не сказала что не правильно - а сказала что делай дальше. при помощи sql запросов в access творить значит надо далее все.. сделала по созданному коду в erwin таблицы.. и пару запросов создала на заполнение полей таблицы.. и тут возник ступор.. запуталась как делать - заполнять поля дальше..

вот, допустим, если дан только один дом и несколько квартир в нем..
КАК правильно сформулировать запрос, чтоб код_будинку, №квартири передавался соответственно из таблицы тБудинки в тКвартири ???при помощи select в запросах как-то??чего-то запуталась, хотя наверное все не так сложно как кажется...

мои наработки все в архивчике... плииз , подскажите что и как здесь лучше сделать, чтоб все таблички были заполненны для начала..
Ответ: правильно ли я делаю запрос, чтоб данные для таблицы тКвартири(№квартири, код_будинку)
передались из тБудинки??
Код SQL
1
2
3
INSERT INTO тКвартири(№квартири, код_будинку) 
SELECT * 
FROM тБудинки;
выбивает следующую ошибку на картинке. и не пойму почему - каких-то данных в запросе не хватает???
Вопрос: SELECT в UPDATE (Запрос в запросе). Умножение полей таблиц между собой

Привет уважаемые посетители этого форума!
Не раз он меня выручал в сложных ситуациях)
Надеюсь, что и в этот раз выручит)
Есть запрос:
К примеру нужно выбрать два поля таблицы (одно с одной, другое с другой) и нужно перемножить значения этих полей между собой и вернуть в нужное поле ТОЛЬКО с помощью UPDATE.
Вот как это я пытаюсь сделать:
SQL
1
2
3
4
5
"UPDATE grocery_supermarket_manager.stock AS stock, " + 
                "(SELECT price_for_one FROM grocery_supermarket_manager.products WHERE id_products = 1) AS products, " +
                "(SELECT quantity FROM grocery_supermarket_manager.stock WHERE id_stock = 1) AS st, " +
                           " SET stock.price = products.price_for_one * st.quantity" +
                          " WHERE stock.id_stock = 1"
Выдаёт следующую ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET stock.price = products.price_for_one * st.quantity WHERE stock.id_stock = 1' at line 1

Что мне посоветуете (только адекватные решения для этого вопроса)?
Что использую MySQL, C#, .NET, SQLconnector for NET.
В программе нету ошибок только в запросе.
Ответ: К примеру нашёл вот это:

UPDATE tbl AS a
INNER JOIN tbl AS b ON ....
SET a.col = b.col

---------------------------------------------

UPDATE tbl SET col = (
SELECT ... FROM (SELECT.... FROM) AS x);

Как второй попытаться написать?

Добавлено через 2 минуты
Error Code: 1093. You can't specify target table 'tbl' for update in FROM clause

Добавлено через 2 минуты
или 1 вариант

Добавлено через 2 часа 51 минуту
Решено!
Но ещё усовершенствовать буду)))
SQL
1
2
3
4
5
6
UPDATE grocery_supermarket_manager.stock AS T1,
      (SELECT price_for_one
        FROM grocery_supermarket_manager.products
        WHERE id_products = 1) AS T2 
  SET T1.price = T2.price_for_one + T1.quantity
WHERE T1.id_stock = 1;
Добавлено через 16 минут
Итак, что делает этот запрос?!
Выбираем таблицу в которой необходимо посчитать нужное нам поле.
Потом выбираем конкретную строку поля с одной таблицу
А затем выбираем конкретную строку поля с другой таблицы
В SET пишем нужное нам поле (ячейку) столбца для которой нужно посчитать значение
MySQL
1
2
3
4
5
6
7
8
9
UPDATE grocery_supermarket_manager.stock AS T1,
      (SELECT price_for_one
        FROM grocery_supermarket_manager.products
        WHERE id_products = 1) AS T2,
      (SELECT quantity
        FROM grocery_supermarket_manager.stock
        WHERE id_stock = 1) AS T3
  SET T1.price = T2.price_for_one * T3.quantity
WHERE T1.id_stock = 1;
Надеюсь кому-то пригодиться)
Вопрос: Максимальный размер поля таблицы Oracle

Каков максимальный размер поля таблицы Oracle?
Ответ: -2-,

ЛИМИТ [французское limite от латинского limes — предел], предельная норма, дозволенное количество чего-либо, ограничение, предел, грань.
Лимиты в Oracle существуют на нескольких уровнях. Обычно существует жёстко запрограммированное ограничение в базе данных, которое не может быть превышено. Но, в то же самое время, оно может быть еще более ограниченно, для какой либо операционной системы.
Ограничения базы данных разделены на четыре основные категории:
• Ограничения типов данных
• Физические ограничения
• Логические ограничения
• Ограничения процессов и времени выполнения
Ограничения типов данных
Тип данных Лимит Комментарий
BFILE Максимальный размер: 4 GB

Максимальный размер имени файла: 255 символов

Максимальный размер имени директории: 30 символов

Максимальное число открытых BFILEs: комментарий Максимальное число BFILEs лимитируется значением инициализационного параметра SESSION_MAX_OPEN_FILES, которое в свою очередь ограничивается максимально возможным числом открытых файлов в операционной системе.
BLOB Максимальный размер: (4 GB - 1) * DB_BLOCK_SIZE инициализационный параметр (8 TB to 128 TB) Число LOB столбцов ограничено только максимальным количеством столбцов на таблицу, то есть, 1000
CHAR Максимальный размер: 2000 байт
CHAR VARYING Максимальный размер: 4000 байт
СLOB Максимальный размер: (4 GB - 1) * DB_BLOCK_SIZE инициализационный параметр (8 TB to 128 TB) Число LOB столбцов ограничено только максимальным количеством столбцов на таблицу, то есть, 1000
Литералы (символы или числа в SQL или PL/SQL) Максимальный размер: 4000 символов
LONG Максимальный размер: 2 GB – 1 Таблица может иметь только один LONG столбец.
NCHAR Максимальный размер: 2000 символов
NCHAR VARYING Максимальный размер: 4000 символов
NCLOB Максимальный размер: (4 GB - 1) * DB_BLOCK_SIZE инициализационный параметр (8 TB to 128 TB) Число LOB столбцов ограничено только максимальным количеством столбцов на таблицу, то есть, 1000
NUMBER Положительные числа в диапазоне 1 x 10-130 до 9.99... 9 x 10125 с 38 значимыми цифрами Точность может быть задана в диапазоне от 1 до 38 десятичных цифр. Масштаб может варьироваться от -84 (слева от десятичной точки) до 127 (справа от десятичной точки).
Положительные числа в диапазоне 1 x 10-130 до 9.99... 9 x 10125 с 38 значимыми цифрами
RAW Максимальный размер: 2000 байтов
VARCHAR Максимальный размер: 4000 байтов
VARCHAR2 Максимальный размер: 4000 байтов
Физические ограничения
Пункт Тип лимита Значение лимита
Размер блока базы данных Минимум 2048 байт; должно быть кратно размеру физического блока операционной системы
Максимум Зависит от операционной системы; не более чем 32 Kбайт
Блоки базы данных Минимальное количество в начальном экстенте сегмента 2 блока
Максимальное количество в файле данных Зависит от системы; типично 222 - 1 блоков
Контрольные файлы Число контрольных файлов Один минимум. Настоятельно рекомендуется два или больше (на отдельных устройствах).
Размер контрольных файлов В зависимости от операционной системы и параметров создания базы данных; максимум 20000 х (размер блока данных)
Файлы данных Максимальное количество в табличном пространстве Зависит от системы; обычно 1022.
Максимальное количество в базе данных 65533

Может быть меньше на некоторых операционных системах

Лимит ограниченн также размером блока базы данных и параметром инициализации DB_FILES для конкретного случая
Экстенты базы данных Максимальное количество в табличном пространстве управляемом по словарю 4 GB * физический размер блока (с модификатором K/M ); 4 GB (с модификатором K/M)
Максимальное количество в локально управляемом табличном пространстве 2 GB * физический размер блока (с модификатором K/M ); 2 GB (с модификатором K/M)
Размер файла базы данных Максимум В зависимости от операционной системы. Ограничен максимальным размером файла оперативной системы; типично 222 байт или 4 Мб (4,194,304) блоков
Общее количество экстентов (MAXEXTENTS) Значение по умолчанию Производное от значения по умолчанию параметра хранения табличного пространства или инициализационного параметра DB_BLOCK_SIZE
Максимум Неограниченно
Журнальные файлы Максимальное количество Лимит задаётся значением параметра MAXLOGFILES в операторе CREATE DATABASE.
Максимальное количество в группе Неограниченно
Размер журнального файла Минимальный 4 Мбайт
Максимальный Лимит операционной системы; обычно 2 GB
Табличные пространства Максимальное количество на одну базу данных 64 К

Количество табличных пространств, не может превышать количества файлов базы данных, поскольку каждое табличное пространство должно включать в себя по крайней мере один файл
Табличные пространства с большими файлами (Bigfile) Количество блоков Табличное пространство с большими файлами(Bigfile) может содержать только один файл данных или временный файл, который в свою очередь может содержать примерно до 4 млрд (232) блоков. Максимальный размер одного файла данных или временного файла составляет 128 терабайт (ТБ) в табличном пространствес 32 Кб. блоками и 32 Тбайт для табличного пространства с 8 Кб. блоками.
Табличные пространства с маленькими файлами (Smallfile) Количество блоков Табличное пространство с маленькими файлами (Smallfile) традиционное табличное пространство Oracle. Может содержать 1022 файлов данных или временных файлов, при этом каждый из файлов может содержать приблизительно до 4 миллионов (222) блоков.
Файл внешних таблиц Максимальный размер В зависимости от операционной системы. Внешняя таблица может состоять из нескольких файлов.
Логические ограничения
Пункт Тип лимита Значение лимита
GROUP BY оператор Максимальная длина Выражение GROUP BY и все of the неотличные агрегатные функции (для примера SUM, AVG) должны поместиться в пределах одного блока базы данных.
Индексы Максимум на таблицу Неограниченно
Общий размер индексированных столбцов 75% от размера блока базы данных, минус некоторые издержки
Столбцов на таблицу 1000 столбцов максимум
на индекс (или кластеризованный индекс) 32 столбца максимум
на индекс на основе битовой карты 30 столбцов максимум
Ограничения Максимум на столбец Неограниченно
Подзапросы Максимальный уровень подзапросов в SQL операторе Неограниченно во FROM выражении в верхнем уровне запроса
255 подзапросов в WHERE выражении
Секции Макимальная длина линейного секционного ключа 4 Кб. минус издержки
Макимальное количество столбцов в секционном ключе 16 столбцов
Макимальное количество секций на таблицу или индекс 1024Кб. - 1
Строк Максимальное количество на таблицу Неограниченно
Хранимые пакеты Максимальный размер Ограничения обычно составляет от 2000 до 3000 строк кода.
Лимит каскада триггеров Максимальное значение Зависит от операционной системы, обычно 32
Пользователи и роли Максимум 2 147 483 638
Таблицы Максимум на кластерную таблицу 32 таблицы
Максимум на базу данных Неограниченно
Ограничения процессов и времени выполнения
Пункт Тип лимита Значение лимита
Экземпляров на базу данных Максимальное количество кластеров экземпляров базы данных на базу данных Зависит от операционной системы
Блокировки Уровня строки Неограниченно
Диспетчер распределённых блокировок Зависит от операционной системы
Размер SGA Максимальное значение Зависит от операционной системы; обычно от 2 до 4 Гб для 32-разрядных операционных систем, и > 4 Гб для 64-разрядных операционных систем.
Процессы механизма обработки очередей (AQ) Максимум на экземпляр 10
Процессы очереди заданий (JQ) Максимум на экземпляр 1000
Подчинённые процессы ввода/вывода Максимум на фоновый процесс (DBWR, LGWR и так далее) 15
Максимум на сеанс резервного копирования 15
Сеансы Максимум на экземпляр 32 Кб; ограничивается инициализационными параметрами PROCESSES и SESSIONS
Процессы сервисов глобального кэша (LMSn) Максимум на экземпляр 10
Остальные ограничения
Пункт Тип лимита Значение лимита
Число включённых ролей Максимальное значение 148; в это значение входят и все коственно назначенные роли (роль на роль)
Верхние границы размеров программ PL/SQL
Тип кода Pl/SQL Версия сервера Максимальный размер дерева DIANA-кода (количество узлов) Оценка максимального размера исходного кода в байтах
Тело пакета или типа данных, отдельная функция или процедура 8.1.5 и выше 226 (67 108 864); примерно 6 000 000 строк кода 256 Мб.
Сигнатура (заголовок) отдельной функции или процедуры 8.0.x и выше 215 128 Кб.
Спецификация пакета или типа данных, анонимный блок 8.1.7 и выше 215 (от 213 до 214 на практике) 128 Кб. (от 32 Кб. до 64 Кб. на практике)
Ограничения PL/SQL
Пункт Лимит
Число связываемых переменных, передающихся с программным модулем 32768
Обработчиков исключений в программном модуле 65536
Полей в записи 65536
Уровней вложенности блоков 255
Уровней вложенности записей 32
Уровней вложенности подзапросов 254
Уровней вложенности меток 98
Уровней вложенности коллекций нет предопределённого ограничения
Величина значения PLS_INTEGER или BINARY_INTEGER -2147483648..2147483647
Число формальных параметров в явном курсоре, функции, или процедуре 65536
Количество объектов на которые ссылается программный модуль 65536
Точность значения FLOAT (бит) 126
Точноcть значения NUMBER (десятичные цифры) 38
Точноcть значения REAL (бит) 63
Размер идентификатора (символы) 30
Размер строкового литерала (байты) 32767
Размер значения CHAR (байты) 32767
Размер значения LONG (байты) 32760
Размер значения LONG RAW (байты) 32760
Размер значения RAW (байты) 32767
Размер значения VARCHAR2 (байты) 32767
Размер значения NCHAR (байты) 32767
Размер значения NVARCHAR2 (байты) 32767
Размер значения BFILE (байты) 4Гб. умноженное на значение параметра DB_BLOCK_SIZE
Размер значения BLOB (байты) 4Гб. умноженное на значение параметра DB_BLOCK_SIZE
Размер значения CLOB (байты) 4Гб. умноженное на значение параметра DB_BLOCK_SIZE
Размер значения NCLOB (байты) 4Гб. умноженное на значение параметра DB_BLOCK_SIZE
Размер триггера 32 Кб
Вопрос: MS SQL 2014 получить список полей таблицы с их описанием?

Подскажите откуда можно вытащить список полей с их описанием?
Описание добавляется таким скриптом:
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Тип документов ГК' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'Fct_0008', @level2type=N'COLUMN',@level2name=N'IdNci_0063'

Как его можно получить в запросе рядом с именем поля таблицы?
Все эти запросы:
SELECT * FROM INFORMATION_SCHEMA. COLUMNS WHERE TABLE_NAME = 'Fct_0008'
SELECT * FROM [sys].[columns] WHERE OBJECT_ID = OBJECT_ID('Fct_0008')
SELECT * FROM [sys].[all_columns] WHERE OBJECT_ID = OBJECT_ID('Fct_0008')

Не дают желаемого результата, в них нет описания. Подскажите как получить описание?
Ответ:
Minamoto
А где свойства для таблиц? ;)

Pvase
MS SQL 2014 получить список полей таблицы с их описанием

:P
Вопрос: Определить тип поля таблицы

День добрый.
Вопросик возник вот в чем, как определить действительный тип поля таблицы.
Пример:
-- Create table
create table F
( id INTEGER,
rate NUMBER(12,6) )
видим что id это integer
смотрим
SELECT F.*
FROM USER_TAB_COLUMNS F
WHERE F.TABLE_NAME = 'F'
и видим что ID это number !

Как определить действительный тип поля
Ответ:
Casper_ora
Fogel,

integer и number - это не синонимы), когда объявляем поле типа number и указываем значения поля, Оракл определяет его как integer, но прописанный нами тип number не подменяет под другие типы.


В постановке вопроса было наоборот - ставим integer, а получаем number - почему?

integer - тип данных стандарта SQL2003
number - тип данных вне станадарта SQL2003 (есть в Oracle, MSSQL и т.д. а в стандарте нет)
Oracle применяет свой стандарт для работы, конвертирует внешние (в том числе и "стандартные") аналоги в то, что заложено в логику своей работы, в "свои" типы.

SQL2003 не самая новая версия стандарта, поэтому могут быть накладки и споры в зависимости от версий, с которой работал тот или иной "докладчик"
Вопрос: Нужно ли именовать поля таблиц уникальными именами во всем проекте Аксесс 2003?(и затем, в MySQL)?

Доброго времени суток!

Вот такой возник вопрос:
Нужно ли именовать поля таблиц уникальными именами во всем проекте Аксесс 2003?(и затем, в MySQL)?
Какие могут быть "+" ?
Есть ли "-"?

Применяет ли кто -либо "Соглашение о наименовании Реддика" в полном объеме? см. вложение. стр 811. ?


У меня разделенная БД аксесс-2003 перевожу ее на MYSQL.
Спасибо за отклики!!!
Ответ:
Сообщение от texnik-san
Можно в тексте запросов лениться и не писать имя таблицы перед именем поля.
За меня это конструктор делает. Не барское это дело, писать, когда можно мышкой вставить.
Вопрос: получить структуру полей таблицы

Как в постгре получить структуру полей таблицы типа show columns from table из mysql?

/lider
Ответ: zeka04,

Перед публикацией творений неплохо было бы почитать документацию про системные таблицы pg_catalog и про наличествующие стандартные функции или, хотя бы, подсмотреть как это делает psql, благо тот предоставляет эту возможность.
Вопрос: Вывод полей таблицы

Есть некая таблица Table_name(spid,Name1,Name2,Name3)

Необходимо сформировать запрос выводящий готовый инсерт в эту таблицу. Переносим в другой спид значение текущего спида.
Делаю так

declare @spidN varchar(10), @table varchar(50)
select @table = 'Table_name'
select @spidN = '@spid1'

select 'declare '+@spidN+ ' int' +char(13)+
'select ' +@spidN+' = max(spid) + 1'+char(13)+
'from ' + @table+ '' +char(13)+
''+char(13)+
'select '+@spidN+' = IsNull(@spid1, 99990)' +char(13)+
'if ' +@spidN+' < 99990' +char(13)+
'select ' +@spidN+ ' = 99990' +char(13)+
''+char(13)+
'insert ' +@TABLE+ (select sc.name from sysobjects so
inner join syscolumns sc
on sc.id=so.id
where so.name='Table_name')+'' +char(13)+
'select ' +@spidN+ ','+(select sc.name from sysobjects so
inner join syscolumns sc
on sc.id=so.id
where so.name='Table_name')+char(13)+
'from ' +@TABLE+ ''+char(13)+
'where spid = @@spid' + '' +char(13)

Результатом работы запроса должен быть скрипт

declare @spid1 int
select @spid1 = max(spid) + 1
from Table_name

select @spid1 = IsNull(@spid1, 99990)
if @spid1 < 99990
select @spid1 = 99990

insert Table_name(spid,Name1,Name2,Name3)
select @spid1, Name1,Name2,Name3
from Table_name
where spid = @@spid

Весь затык в запросе
select sc.name from sysobjects so
inner join syscolumns sc
on sc.id=so.id
where so.name='Table_name'

Который должен начитать список полей таблицы и вставить их как надо, не понимаю, как по-человечески это все провернуть.
Ответ:
U_rtqwec
Какие еще способы можно придумать?


Oleksii Kovalov
вот тут даже есть рядом