За последние 24 часа нас посетили 35465 программистов и 1818 роботов. Сейчас ищут 1990 программистов ...

Быстро выучить MySQL

Тема в разделе "MySQL", создана пользователем mirosas, 6 авг 2015.

  1. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Специально проверил. Не работает. Если какую-то эмуляцию отключить, то работает.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Наоборот: это возможно только при включенном режиме эмуляции. И только с настоящими целыми значениями.
    http://stackoverflow.com/a/2269931/272885

    Добавлено спустя 2 минуты 13 секунд:
    Вот из-за подобных нюансов новичек всегда будет обсираться на реальных задачах. Чуйка постепенно накапливается, её учебники не дают.
     
  3. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Я так понял PDO дает в итоге 2 достаточно разных интерфейса по вставке данных. Их можно смешать, и тогда в одном случае пройдет SQL-инъекция, а в другом запросы не будут исполняться. Потенциальные места для ошибок.
     
  4. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Вы устарели, лет на 5 ;)
    Обёртка к тому же драйверу, только более новая, имеющая дополнительные/новые возможности.
    На любителя. Такая же обёртка, только сразу для нескольких драйверов.
    По моему мнению, её не стоит использовать, если не пишите некий универсальный движок, который должен работать с несколькими базами равнозначно. Т.е. если Вы планируете писать код, который будет работать только с mySQL (годами), то используйте mysqli. В любом случае, лет через 5-10 придётся переписывать - всё движется, всё развивается со временем.

    Добавлено спустя 6 минут 54 секунды:
    Хотите быть нормальным разрабом? Тогда никогда такого не говорите, не думайте и даже не мечтайте.
    Изучать SQL (стандарт) нужно обязательно, особенно начинающим. Писать запросы надо в "сыром" виде, особенно начинающим. Использовать всякие навороты, типа генераторов кода, только если Хозяин требует или под дулом пистолета.
    И вообще, не ленитесь изучать документацию - это очень, очень полезно. Её чтение исключает 99,9% вопросов.

    Добавлено спустя 28 минут 12 секунд:
    Понимание. Как минимум Вы должны знать все основные параметры основных запросов (select,insert,update,delete,create и т.п.).
    Как минимум, для начала нужно прочесть стандарт раза два (или столько, сколько нужно) и запомнить основные возможности SQL-языка, процентов на 50 хотя бы.
    Командная строка - на любителя. Давно существуют обёртки (для Вин рекомендую SQLyog, - я пользую её и под линуксом).

    См. выше. Стандарт, на котором основан движок, как минимум. Думаю знания процентов 50 возможностей (по стандарту) вполне достаточно для начинающего по SQL, при условии, что это основные возможности. Тонкости движка это уже уровень мидла/гуру.
    Мы все ленивые. :) Но "всё хорошо что в меру" (с) народная мудрость.
    Нельзя дать точный список - каждый работодатель индивидуален (почти). Список всегда будет приблизительный. Просто внимательно прочтите стандарт - в 90% случаев этого будет достаточно для начинающего. В подробностях изучайте по мере необходимости. Плюс нужна практика, чтобы "закрепить"/почувствовать прочитанное, - напишите с полсотни-сотню разных запросов. Пусть они будут простые, но разные. И они должны работать без ошибок, естественно.
    А вообще... Например, я до сих пор не знаю всех возможностей ПХП и всех возможностей mySQL, хотя работаю с этим уже много лет. Пару раз в неделю приходится "нырять" в доку, чтобы найти ответы. Это нормально. (Где-то писал, что тех, кто всё знает, можно по пальцам пересчитать. Остальным приходится "нырять", кому чаще, кому реже.)
     
  5. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    Chushkin, )) спасибо)

    Хм.. а как транзакционная БД, например InnoDB, защищена от
    а) потери питания в момент записи жестким диском изменений.
    аа) тоже что и (а), но у жесткого диска включен write-cache, а запросов идет в него много, и они там томятся в его 64 мегабайтной очереди.
    б) от падения сервера БД ? (или он не падает никогда)
    - с точки зрения целостности транзакций?
     
  6. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    Также, как и остальные движки. Можете хоть банковскую систему на ней делать, надёжность будет не принципиально хуже, чем у старших братьев. Ибо самое ненадёжное звено - железо.
    Принципиально есть два режима:
    - сброс данных на диск каждой транзакции по "commit' (работает со скоростью диска) - потеряются транзакции, во время которых произошёл сбой. Целостность сохраняется.
    - задержка сброса на N секунд (работает со скоростью файлового кеша) - потеряются данные, которые в кеше. Целостность может быть нарушена (в теории, - на практике не помню такого случая).
    Как-то так...
     
  7. mirosas

    mirosas Активный пользователь

    С нами с:
    17 июл 2015
    Сообщения:
    236
    Симпатии:
    5
    InnoDB она маркеры на транзакции пишет в оперативку или на диск? Если в оперативку то потеряется целостность. Если на диск, то интересны примерные накладные расходы на такое веселье.

    Я имел ввиду не файловый кэш, а дисковый (физической железки такой). Я как-то даже не уверен что его у всех дисков отключить можно. По дефолту он обычно включен в целях высоких оценок в бенчмарках.

    Да и без SQL-транзакций наверное не часто на практике теряется целостность
     
  8. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    1) Без понятия, что и куда он пишет. Я "объектник" и подхожу к внешним объектам как к чёрному ящику - вход/выход. А что там внутри - по барабану. Если Вам интересна внутренняя "кухня" движка, возьмите исходники и посмотрите.
    2) Да пофиг, файловый/дисковый, - оно или может скидываться или нет. Это не проблемы движка, это проблемы железа и ОС.
    Про два режима, о которых писал выше, описаны в доке, поэтому знаю. Естественно, для обычных HD-дисков скоростя между ними будут отличаться на пару порядков. Но и надёжность на отказ тоже, естественно. Каждый пользователь выбирает, что ему нужно. Для inet-а оптимален второй режим. Для систем, требующих высокой надёжности записи, - первый.
    3). Не часто.
    Вообще, тут вопрос не в "частоте", а в требуемой надёжности. Например, для обычного сайта допустима потеря записей за последние несколько секунд.
     
  9. Fraiman

    Fraiman Новичок

    С нами с:
    7 авг 2015
    Сообщения:
    4
    Симпатии:
    0
    Коллеги, подскажите, пожалуйста:
    создал я таблицу, обозначил колонку (тип - int) как первичный ключ, а вот свойство auto_increment прописать забыл. Как исправить ошибку?

    И еще вопрос. Создал я таблицу, сделал какую-то колонку первичным ключом и потом понял, что это был не лучший выбор. Как "забрать" у этой колонки свойство первичного ключа и как в таблицу добавить новую колонку-первичный ключ?

    Спасибо)
     
  10. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Fraiman, структуру таблицы меняют с помощью оператора ALTER TABLE.
     
  11. Fraiman

    Fraiman Новичок

    С нами с:
    7 авг 2015
    Сообщения:
    4
    Симпатии:
    0
    Всем привет!
    Пожалуйста, помогите. Хочу научиться пакетной загрузке данных с помощью оператора Load. Для этого в корне жесткого диска С создал папочку DataInsert, в которую вложил файлик с данными data.txt.
    После этого ввел в консоль команду
    LOAD DATA INFILE 'C:\DataInsert\data.txt' INTO TABLE goods;
    Но система выдала ошибку ERROR 29 (HY000): File 'C:\ProgramData\MySQL\MySQL Server 5.1\Data\DataInsertdata.txt' not found (Errcode: 2)
    Потом попробовал другую команду LOAD DATA LOCAL INFILE 'C:\DataInsert\data.txt' INTO TABLE goods;
    Но также получил ошибку ERROR 2 (HY000): File 'C:DataInsertdata.txt' not found (Errcode: 2)

    Подскажите, пожалуйста, что не так?
     
  12. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Посмотри, сервер хочет грузить файл из папки data, попробуй от туда