Ответы пользователя по тегу MySQL
  • Почему не записывает значение в БД?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Может дело в символе & между Sapdragon&Time = 10.02.2002?

    Для проверки работы SQL кода не пробовали без PHP в редакторе SQL запроса
    INSERT INTO `u707651_forum`.`configs` (`CName`, `Username`, `Time`) VALUES ("Rage", "Sapdragon", "10.02.2002")
    Ответ написан
  • Как правильно составить запрос mySQL с выборкой данных из другой таблицы?

    @Miron11
    Пишу sql 20 лет. Срок :)
    select logs.id
    , logs.serial
    , logs.action
    , logs.ip
    , logs.date
    from owners owners
    inner join clients clients on clients.token = owners.token
    inner join logs logs on logs.serial = clients.serial
    where owners.token = 'abcd...'
    Ответ написан
  • Как сделать AUTO_INCREMENT в postgresql?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Мне больше нравятся секвенции. Около часа назад, когда нашел вопрос оказалось, что мой pgAdmin 4 серьёзно поотстал. Поставил новый, уже 64-х битовый, подсоединился к настольной службе, и только через GUI построил следующие объекты, никуда не торопясь. Все удивительно приятно и удобно. Надеюсь пригодится :)

    CREATE SEQUENCE public.testincrement_sequence
    INCREMENT 1
    START 1
    MINVALUE 1
    MAXVALUE 9223372036854775807
    CACHE 1;

    CREATE TABLE public.testincrement
    (
    i integer NOT NULL DEFAULT nextval('testincrement_sequence'::regclass),
    a character varying(250) COLLATE pg_catalog."default",
    dt timestamp without time zone,
    un character varying(128) COLLATE pg_catalog."default"
    )
    WITH (
    OIDS = FALSE
    )
    TABLESPACE pg_default;
    Ответ написан
  • Запрет на редактирование строки в Mysql по ID?

    @Miron11
    Пишу sql 20 лет. Срок :)
    снимите привилегии пользователей, которые сейчас созданы в базе данных. Оставьте им право читать. Особое внимание уделите административным учетным записям, например root. В моей практике мне не приходилось защищать конкретно MySQL, поэтому я не знаю, можно ли изменить имя пользователя root, если можно, сделайте это, конечно же изменив его пароль.
    Сделайте специальный логин, которому присвоено разрешение изменять данные. Запомните пароль этого пользователя и сложите его в сейф. Ключ от сейфа повесьте на шею и никому не давайте.
    Сделайте так, чтобы вход с паролем этого пользователя имел отдельный доступ к базе данных. Чтобы его не надо было выводить где - то в конфигурации программы, обеспечивающей работу сайта. Входите в этот счет с паролем через защищенное приложение так, чтобы никто не смог ни увидеть ваш пароль, ни считать его через какие - то устройства, в частности тех, которые слушают что передается по сети. В принципе все современные программы, которые приходят с продуктом защищают пароль логина. Но детали могут быть существенны, прочтите документацию, если есть сомнения. Там как правило описывается хорошо ли защищен сам процесс присоединения к базе данных тем или иным устройством.
    Ну и наконец, защитите таким же подходом машину на которой установлена база данных и сайт.
    В конце - концов, если с первой попытки не получится, и кто - то продолжит "безобразничать", повторите цикл, только теперь уже с некоторым опытом прежней тренировки.
    По мере работы над этой областью рано или поздно Вы столкнетесь с тем, что либо человек, либо какой - то процесс установленный либо на машине, либо в самом приложении сайта, выполняет подмену указателей адресов, либо заметив этот процесс и сличив временные метки записей - их изменений, либо заметив, что кто - то присоединился к базе данных без разрешения с высоко привилегированным пользователем. Обнаружить это можно так же установив триггеры на таблицах, фиксирующие изменения, включая время записи имя учетной записи и значение поля до изменения и после. Проблема в том, что Ваша база в данный момент эксплуатируется не по назначению неким третьим лицом, и это лицо может исказить и эти трассировочные записи, поэтому на начальном этапе необходимо все - таки изолировать пользовательские записи и засекретить вход имеющий привилегии менять данные и административно распоряжаться ресурсами.
    Ответ написан
  • Как запихнуть все столбцы из JOIN в один столбец?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Не пробовали поискать в яндексе?
    Я ввел запрос "MySQL for json" выражение "for json" поддерживается в SQL Server и это считается золотой стандарт СУБД, поэтому похожие функции в других СУБД можно искать по ключевым словам.
    Вот ответ, по - моему подходит.
    https://stackoverflow.com/questions/41758870/how-t...
    Ответ написан
  • Как сделать поиск по регулярному выражению SQL?

    @Miron11
    Пишу sql 20 лет. Срок :)
    У Вас есть 2 основных подхода
    1. через 2 выражения пользуясь операторами перечисленными здесь
    https://dev.mysql.com/doc/refman/8.0/en/regexp.html
    Возможно не всеми в любой комбинации, но существенно то, что один оператор должен найти часть последовательности символов, которые должны ответить, например
    SELECT *
    FROM `post`
    WHERE
    -- 1-е выражение
    `description` LIKE 'itemid=34543%'
    -- 2-е выражение
    AND
    `description` NOT RLIKE 'itemid=34543[0-9]+'

    2. через 1 регулярное выражение, очень похожее на то, которое Вы предложили, но видимо с \ ( backslash ) символом проведенным дважды, на той же странице объясняется почему: "Because MySQL uses the C escape syntax in strings (for example, \n to represent the newline character), you must double any \ that you use in your expr and pat arguments."
    Если по той или иной причине выражение артачится, наверное можно воспользоваться выражением на один символ длиннее, для выражения цифр [^0-9]
    Ну и наверное надо воспользоваться плюсом, а не звездочкой справа [^0-9]+, иначе эта часть становится не обязательной, и запрос может выбрать, например, значение 'itemid=34543'
    ---
    Всего хорошего!
    Ответ написан
  • Почему долго выполняется sql запрос?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Если Вам нужен очень быстрый ответ, разбиваете имена городов на буквы, создаёте XML индекс, и выбираете имена городов во временную таблицу после чего заканчиваете запрос по ключу города. В Постгрес столько расширений что я почти уверен, вы найдете все ответы за несколько запросов в Яндексе.
    Ответ написан
  • Дерево категорий Laravel. Как уменьшить количество запросов в БД?

    @Miron11
    Пишу sql 20 лет. Срок :)
    Для MySQL было бы хорошо подтвердить что таблица категорий создана с поддержкой InnoDB. Если так, то проверьте если есть, и если нет, то добавьте индекс
    CREATE INDEX IX_product_categories_NC1 ON product_categories ( parent_id, name, id );
    Ответ написан