SQL/MySQL/Select Clause/Like

Материал из SQL эксперт
Перейти к: навигация, поиск

Pattern match with LIKE

   <source lang="sql">

/* mysql> select * from employee; +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ | id | firstname | lastname | title | age | yearofservice| salary | perks | email | +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ | 1 | John | Chen | Senior Programmer | 31 | 3| 120000 | 25000 | j@hotmail.ru | | 2 | Jan | Pillai | Senior Programmer | 32 | 4| 110000 | 20000 | g@yahoo.ru | | 3 | Ane | Pandit | Web Designer | 24 | 3| 90000 | 15000 | a@gmail.ru | | 4 | Mary | Anchor | Web Designer | 27 | 2| 85000 | 15000 | m@mail.ru | | 5 | Fred | King | Programmer | 32 | 3| 75000 | 15000 | f@net.ru | | 6 | John | Mac | Programmer | 32 | 4| 80000 | 16000 | j@hotmail.ru | | 7 | Arthur | Sam | Programmer | 28 | 2| 75000 | 14000 | e@yahoo.ru | | 8 | Alok | Nanda | Programmer | 32 | 3| 70000 | 10000 | a@yahoo.ru | | 9 | Susan | Ra | Multimedia Programmer | 32 | 4| 90000 | 15000 | h@gmail.ru | | 10 | Paul | Simon | Multimedia Programmer | 23 | 1| 85000 | 12000 | ps@gmail.ru | | 11 | Edward | Parhar | Multimedia Programmer | 30 | 2| 75000 | 15000 | a@hotmail.ru | | 12 | Kim | Hunter | Senior Web Designer | 32 | 4| 110000 | 20000 | kim@coolmail.ru | | 13 | Roger | Lewis | System Administrator | 32 | 3| 100000 | 13000 | roger@mail.ru | | 14 | Danny | Gibson | System Administrator | 31 | 2| 90000 | 12000 | danny@hotmail.ru | | 15 | Mike | Harper | Senior Marketing Executive | 36 | 1| 120000 | 28000 | m@gmail.ru | | 16 | Mary | Sunday | Marketing Executive | 31 | 5| 90000 | 25000 | monica@bigmail.ru | | 17 | Jack | Sim | Marketing Executive | 27 | 1| 70000 | 18000 | hal@gmail.ru | | 18 | Joe | Irvine | Marketing Executive | 27 | 1| 72000 | 18000 | joseph@hotmail.ru | | 19 | Henry | Ali | Customer Service Manager | 32 | 3| 70000 | 9000 | shahida@hotmail.ru | | 20 | Peter | Champion | Finance Manager | 32 | 2| 120000 | 25000 | peter@yahoo.ru | +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ 20 rows in set (0.02 sec) mysql> select firstname, lastName from employee where firstname LIKE "J%"; +-----------+----------+ | firstname | lastName | +-----------+----------+ | John | Chen | | Jan | Pillai | | John | Mac | | Jack | Sim | | Joe | Irvine | +-----------+----------+ 5 rows in set (0.00 sec)

  • /

Drop table employee; CREATE TABLE employee (

   id int unsigned not null auto_increment primary key,
   firstname varchar(20),
   lastname varchar(20),
   title varchar(30),
   age int,
   yearofservice int,
   salary int,
   perks int,
   email varchar(60)

);

INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("John", "Chen", "Senior Programmer", 31, 3, 120000, 25000, "j@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Jan", "Pillai", "Senior Programmer", 32, 4, 110000, 20000, "g@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Ane", "Pandit", "Web Designer", 24, 3, 90000, 15000, "a@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mary", "Anchor", "Web Designer", 27, 2, 85000, 15000, "m@mail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Fred", "King", "Programmer", 32, 3, 75000, 15000, "f@net.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("John", "Mac", "Programmer", 32, 4, 80000, 16000, "j@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Arthur", "Sam", "Programmer", 28, 2, 75000, 14000, "e@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Alok", "Nanda", "Programmer", 32, 3, 70000, 10000, "a@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Susan", "Ra", "Multimedia Programmer", 32, 4, 90000, 15000, "h@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Paul", "Simon", "Multimedia Programmer", 23, 1, 85000, 12000, "ps@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Edward", "Parhar", "Multimedia Programmer", 30, 2, 75000, 15000, "a@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Kim", "Hunter", "Senior Web Designer", 32, 4, 110000, 20000, "kim@coolmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Roger", "Lewis", "System Administrator", 32, 3, 100000, 13000, "roger@mail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Danny", "Gibson", "System Administrator", 31, 2, 90000, 12000, "danny@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mike", "Harper", "Senior Marketing Executive", 36, 1, 120000, 28000, "m@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mary", "Sunday", "Marketing Executive", 31, 5, 90000, 25000, "monica@bigmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Jack", "Sim", "Marketing Executive", 27, 1, 70000, 18000, "hal@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Joe", "Irvine", "Marketing Executive", 27, 1, 72000, 18000, "joseph@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Henry", "Ali", "Customer Service Manager", 32, 3, 70000, 9000, "shahida@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Peter", "Champion", "Finance Manager", 32, 2, 120000, 25000, "peter@yahoo.ru"); select * from employee; select firstname, lastName from employee where firstname LIKE "J%";

      </source>
   
  


Use LIKE

   <source lang="sql">

/* mysql> select * from employee; +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ | id | firstname | lastname | title | age | yearofservice| salary | perks | email | +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ | 1 | John | Chen | Senior Programmer | 31 | 3| 120000 | 25000 | j@hotmail.ru | | 2 | Jan | Pillai | Senior Programmer | 32 | 4| 110000 | 20000 | g@yahoo.ru | | 3 | Ane | Pandit | Web Designer | 24 | 3| 90000 | 15000 | a@gmail.ru | | 4 | Mary | Anchor | Web Designer | 27 | 2| 85000 | 15000 | m@mail.ru | | 5 | Fred | King | Programmer | 32 | 3| 75000 | 15000 | f@net.ru | | 6 | John | Mac | Programmer | 32 | 4| 80000 | 16000 | j@hotmail.ru | | 7 | Arthur | Sam | Programmer | 28 | 2| 75000 | 14000 | e@yahoo.ru | | 8 | Alok | Nanda | Programmer | 32 | 3| 70000 | 10000 | a@yahoo.ru | | 9 | Susan | Ra | Multimedia Programmer | 32 | 4| 90000 | 15000 | h@gmail.ru | | 10 | Paul | Simon | Multimedia Programmer | 23 | 1| 85000 | 12000 | ps@gmail.ru | | 11 | Edward | Parhar | Multimedia Programmer | 30 | 2| 75000 | 15000 | a@hotmail.ru | | 12 | Kim | Hunter | Senior Web Designer | 32 | 4| 110000 | 20000 | kim@coolmail.ru | | 13 | Roger | Lewis | System Administrator | 32 | 3| 100000 | 13000 | roger@mail.ru | | 14 | Danny | Gibson | System Administrator | 31 | 2| 90000 | 12000 | danny@hotmail.ru | | 15 | Mike | Harper | Senior Marketing Executive | 36 | 1| 120000 | 28000 | m@gmail.ru | | 16 | Mary | Sunday | Marketing Executive | 31 | 5| 90000 | 25000 | monica@bigmail.ru | | 17 | Jack | Sim | Marketing Executive | 27 | 1| 70000 | 18000 | hal@gmail.ru | | 18 | Joe | Irvine | Marketing Executive | 27 | 1| 72000 | 18000 | joseph@hotmail.ru | | 19 | Henry | Ali | Customer Service Manager | 32 | 3| 70000 | 9000 | shahida@hotmail.ru | | 20 | Peter | Champion | Finance Manager | 32 | 2| 120000 | 25000 | peter@yahoo.ru | +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ 20 rows in set (0.02 sec) mysql> select firstname, lastName from employee

   -> where lastName like "%a";

+-----------+----------+ | firstname | lastName | +-----------+----------+ | Alok | Nanda | | Susan | Ra | +-----------+----------+ 2 rows in set (0.00 sec)

  • /

Drop table employee; CREATE TABLE employee (

   id int unsigned not null auto_increment primary key,
   firstname varchar(20),
   lastname varchar(20),
   title varchar(30),
   age int,
   yearofservice int,
   salary int,
   perks int,
   email varchar(60)

);

INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("John", "Chen", "Senior Programmer", 31, 3, 120000, 25000, "j@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Jan", "Pillai", "Senior Programmer", 32, 4, 110000, 20000, "g@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Ane", "Pandit", "Web Designer", 24, 3, 90000, 15000, "a@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mary", "Anchor", "Web Designer", 27, 2, 85000, 15000, "m@mail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Fred", "King", "Programmer", 32, 3, 75000, 15000, "f@net.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("John", "Mac", "Programmer", 32, 4, 80000, 16000, "j@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Arthur", "Sam", "Programmer", 28, 2, 75000, 14000, "e@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Alok", "Nanda", "Programmer", 32, 3, 70000, 10000, "a@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Susan", "Ra", "Multimedia Programmer", 32, 4, 90000, 15000, "h@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Paul", "Simon", "Multimedia Programmer", 23, 1, 85000, 12000, "ps@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Edward", "Parhar", "Multimedia Programmer", 30, 2, 75000, 15000, "a@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Kim", "Hunter", "Senior Web Designer", 32, 4, 110000, 20000, "kim@coolmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Roger", "Lewis", "System Administrator", 32, 3, 100000, 13000, "roger@mail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Danny", "Gibson", "System Administrator", 31, 2, 90000, 12000, "danny@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mike", "Harper", "Senior Marketing Executive", 36, 1, 120000, 28000, "m@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mary", "Sunday", "Marketing Executive", 31, 5, 90000, 25000, "monica@bigmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Jack", "Sim", "Marketing Executive", 27, 1, 70000, 18000, "hal@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Joe", "Irvine", "Marketing Executive", 27, 1, 72000, 18000, "joseph@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Henry", "Ali", "Customer Service Manager", 32, 3, 70000, 9000, "shahida@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Peter", "Champion", "Finance Manager", 32, 2, 120000, 25000, "peter@yahoo.ru"); select * from employee; select firstname, lastName from employee where lastName like "%a";

      </source>
   
  


Use LIKE for matching substring

   <source lang="sql">

/* mysql> select * from employee; +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ | id | firstname | lastname | title | age | yearofservice| salary | perks | email | +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ | 1 | John | Chen | Senior Programmer | 31 | 3| 120000 | 25000 | j@hotmail.ru | | 2 | Jan | Pillai | Senior Programmer | 32 | 4| 110000 | 20000 | g@yahoo.ru | | 3 | Ane | Pandit | Web Designer | 24 | 3| 90000 | 15000 | a@gmail.ru | | 4 | Mary | Anchor | Web Designer | 27 | 2| 85000 | 15000 | m@mail.ru | | 5 | Fred | King | Programmer | 32 | 3| 75000 | 15000 | f@net.ru | | 6 | John | Mac | Programmer | 32 | 4| 80000 | 16000 | j@hotmail.ru | | 7 | Arthur | Sam | Programmer | 28 | 2| 75000 | 14000 | e@yahoo.ru | | 8 | Alok | Nanda | Programmer | 32 | 3| 70000 | 10000 | a@yahoo.ru | | 9 | Susan | Ra | Multimedia Programmer | 32 | 4| 90000 | 15000 | h@gmail.ru | | 10 | Paul | Simon | Multimedia Programmer | 23 | 1| 85000 | 12000 | ps@gmail.ru | | 11 | Edward | Parhar | Multimedia Programmer | 30 | 2| 75000 | 15000 | a@hotmail.ru | | 12 | Kim | Hunter | Senior Web Designer | 32 | 4| 110000 | 20000 | kim@coolmail.ru | | 13 | Roger | Lewis | System Administrator | 32 | 3| 100000 | 13000 | roger@mail.ru | | 14 | Danny | Gibson | System Administrator | 31 | 2| 90000 | 12000 | danny@hotmail.ru | | 15 | Mike | Harper | Senior Marketing Executive | 36 | 1| 120000 | 28000 | m@gmail.ru | | 16 | Mary | Sunday | Marketing Executive | 31 | 5| 90000 | 25000 | monica@bigmail.ru | | 17 | Jack | Sim | Marketing Executive | 27 | 1| 70000 | 18000 | hal@gmail.ru | | 18 | Joe | Irvine | Marketing Executive | 27 | 1| 72000 | 18000 | joseph@hotmail.ru | | 19 | Henry | Ali | Customer Service Manager | 32 | 3| 70000 | 9000 | shahida@hotmail.ru | | 20 | Peter | Champion | Finance Manager | 32 | 2| 120000 | 25000 | peter@yahoo.ru | +----+-----------+----------+----------------------------+------+---------------+--------+-------+---------------------+ 20 rows in set (0.00 sec) mysql> select firstname, lastName, title from employee

   -> where title like "%senior%";

+-----------+----------+----------------------------+ | firstname | lastName | title | +-----------+----------+----------------------------+ | John | Chen | Senior Programmer | | Jan | Pillai | Senior Programmer | | Kim | Hunter | Senior Web Designer | | Mike | Harper | Senior Marketing Executive | +-----------+----------+----------------------------+ 4 rows in set (0.00 sec)

  • /

Drop table employee; CREATE TABLE employee (

   id int unsigned not null auto_increment primary key,
   firstname varchar(20),
   lastname varchar(20),
   title varchar(30),
   age int,
   yearofservice int,
   salary int,
   perks int,
   email varchar(60)

);

INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("John", "Chen", "Senior Programmer", 31, 3, 120000, 25000, "j@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Jan", "Pillai", "Senior Programmer", 32, 4, 110000, 20000, "g@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Ane", "Pandit", "Web Designer", 24, 3, 90000, 15000, "a@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mary", "Anchor", "Web Designer", 27, 2, 85000, 15000, "m@mail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Fred", "King", "Programmer", 32, 3, 75000, 15000, "f@net.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("John", "Mac", "Programmer", 32, 4, 80000, 16000, "j@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Arthur", "Sam", "Programmer", 28, 2, 75000, 14000, "e@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Alok", "Nanda", "Programmer", 32, 3, 70000, 10000, "a@yahoo.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Susan", "Ra", "Multimedia Programmer", 32, 4, 90000, 15000, "h@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Paul", "Simon", "Multimedia Programmer", 23, 1, 85000, 12000, "ps@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Edward", "Parhar", "Multimedia Programmer", 30, 2, 75000, 15000, "a@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Kim", "Hunter", "Senior Web Designer", 32, 4, 110000, 20000, "kim@coolmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Roger", "Lewis", "System Administrator", 32, 3, 100000, 13000, "roger@mail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Danny", "Gibson", "System Administrator", 31, 2, 90000, 12000, "danny@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mike", "Harper", "Senior Marketing Executive", 36, 1, 120000, 28000, "m@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Mary", "Sunday", "Marketing Executive", 31, 5, 90000, 25000, "monica@bigmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Jack", "Sim", "Marketing Executive", 27, 1, 70000, 18000, "hal@gmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Joe", "Irvine", "Marketing Executive", 27, 1, 72000, 18000, "joseph@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Henry", "Ali", "Customer Service Manager", 32, 3, 70000, 9000, "shahida@hotmail.ru"); INSERT INTO employee (firstname, lastName, title, age, yearofservice, salary, perks, email) values ("Peter", "Champion", "Finance Manager", 32, 2, 120000, 25000, "peter@yahoo.ru"); select * from employee; select firstname, lastName, title from employee where title like "%senior%";

      </source>
   
  


Use LIKE in where clause

   <source lang="sql">

/* mysql> select * from Student; +-----------+------------+-----------+ | StudentID | first_name | last_name | +-----------+------------+-----------+ | 1 | John | Jones | | 2 | Gary | Burton | | 3 | Emily | Scarlett | | 4 | Bruce | Lee | | 5 | Anna | Wolff | | 6 | Vic | Andrews | | 7 | Steve | Alaska | +-----------+------------+-----------+ 7 rows in set (0.01 sec) mysql> select * from Student WHERE first_name LIKE "Bru%" OR last_name LIKE "A%"

OR
   ->                                   last_name LIKE "Wo%";

+-----------+------------+-----------+ | StudentID | first_name | last_name | +-----------+------------+-----------+ | 4 | Bruce | Lee | | 5 | Anna | Wolff | | 6 | Vic | Andrews | | 7 | Steve | Alaska | +-----------+------------+-----------+ 4 rows in set (0.00 sec)

  • /

Drop table Student; CREATE TABLE Student (

  StudentID INT NOT NULL PRIMARY KEY,
  first_name      VARCHAR(50) NOT NULL,
  last_name      VARCHAR(50) NOT NULL
  

)TYPE = InnoDB;

INSERT INTO Student (StudentID,first_name, last_name) VALUES (4,"Bruce", "Lee"); INSERT INTO Student (StudentID,first_name, last_name) VALUES (1,"John", "Jones"); INSERT INTO Student (StudentID,first_name, last_name) VALUES (2,"Gary", "Burton"); INSERT INTO Student (StudentID,first_name, last_name) VALUES (7,"Steve", "Alaska"); INSERT INTO Student (StudentID,first_name, last_name) VALUES (5,"Anna", "Wolff"); INSERT INTO Student (StudentID,first_name, last_name) VALUES (6,"Vic", "Andrews"); INSERT INTO Student (StudentID,first_name, last_name) VALUES (3,"Emily", "Scarlett"); select * from Student; select * from Student WHERE first_name LIKE "Bru%" OR last_name LIKE "A%" OR

                                 last_name LIKE "Wo%";
 
          
      </source>
   
  


Where clause: like and %

   <source lang="sql">

/* mysql> Drop table Sale; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE Sale

   -> (
   ->    ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ->    Name VARCHAR(50) NOT NULL,
   ->    InStock SMALLINT UNSIGNED NOT NULL,
   ->    OnOrder SMALLINT UNSIGNED NOT NULL,
   ->    Reserved SMALLINT UNSIGNED NOT NULL,
   ->    Department ENUM("Classical", "Popular") NOT NULL,
   ->    Category VARCHAR(20)
   -> );

Query OK, 0 rows affected (0.05 sec) mysql> INSERT INTO Sale (Name, InStock, OnOrder, Reserved, Department, Cate gory)

   -> VALUES          ("Bloodshot", 11,      6,       1,        "Popular",  "Ro

ck"),

   ->                 ("Opera",     12,      5,       2,        "Classical","Op

era"),

   ->                 ("Jazz",      13,      4,       3,        "Popular",  "Ja

zz"),

   ->                 ("Music",     4,       3,       4,        "Classical","Da

nce"),

   ->                 ("Violin",    25,      2,       5,        "Classical", NU

LL),

   ->                 ("Toscana",   16,      1,       6,        "Classical", NU

LL),

   ->                 ("Blues",     7,       22,      7,        "Popular",   "B

lues"),

   ->                 ("Pure",      38,      5,       11,       "Popular",   NU

LL),

   ->                 ("Mud",       19,      11,      12,       "Popular",  "Co

untry"),

   ->                 ("Essence",   5,       23,      12,       "Popular", "New
Age"),
   ->                 ("Embrace",   21,      12,      14,       "Popular", "New
Age"),
   ->                 ("Satie",     42,      17,      15,       "Classical", NU

LL),

   ->                 ("Lake",      23,      47,      28,       "Classical", "D

ance"),

   ->                 ("Favorites", 34,      15,      12,       "Classical", "G

eneral"),

   ->                 ("Boheme",    25,      12,       5,       "Classical", "O

pera"),

   ->                 ("Cantatas",  26,      13,      8,        "Classical", "G

eneral"),

   ->                 ("Road",      27,      13,      17,       "Popular", "Cou

ntry"),

   ->                 ("Paris",     18,      25,      10,       "Popular", "Jaz

z"),

   ->                 ("Woman",     29,      4,        7,       "Popular", "Blu

es"),

   ->                 ("Bach",      21,      13,      16,       "Classical", "G

eneral"),

   ->                 ("Opera",     12,      32,      12,       "Classical", "O

pera"),

   ->                 ("Soul",      13,      30,      14,       "Popular", NULL

),

   ->                 ("Stages",    44,      0,       8,        "Popular", "Blu

es"),

   ->                 ("Bach",      15,      1,       8,        "Classical", "G

eneral"); Query OK, 24 rows affected (0.01 sec) Records: 24 Duplicates: 0 Warnings: 0 mysql> select * from Sale; +----+-----------+---------+---------+----------+------------+----------+ | ID | Name | InStock | OnOrder | Reserved | Department | Category | +----+-----------+---------+---------+----------+------------+----------+ | 1 | Bloodshot | 11 | 6 | 1 | Popular | Rock | | 2 | Opera | 12 | 5 | 2 | Classical | Opera | | 3 | Jazz | 13 | 4 | 3 | Popular | Jazz | | 4 | Music | 4 | 3 | 4 | Classical | Dance | | 5 | Violin | 25 | 2 | 5 | Classical | NULL | | 6 | Toscana | 16 | 1 | 6 | Classical | NULL | | 7 | Blues | 7 | 22 | 7 | Popular | Blues | | 8 | Pure | 38 | 5 | 11 | Popular | NULL | | 9 | Mud | 19 | 11 | 12 | Popular | Country | | 10 | Essence | 5 | 23 | 12 | Popular | New Age | | 11 | Embrace | 21 | 12 | 14 | Popular | New Age | | 12 | Satie | 42 | 17 | 15 | Classical | NULL | | 13 | Lake | 23 | 47 | 28 | Classical | Dance | | 14 | Favorites | 34 | 15 | 12 | Classical | General | | 15 | Boheme | 25 | 12 | 5 | Classical | Opera | | 16 | Cantatas | 26 | 13 | 8 | Classical | General | | 17 | Road | 27 | 13 | 17 | Popular | Country | | 18 | Paris | 18 | 25 | 10 | Popular | Jazz | | 19 | Woman | 29 | 4 | 7 | Popular | Blues | | 20 | Bach | 21 | 13 | 16 | Classical | General | | 21 | Opera | 12 | 32 | 12 | Classical | Opera | | 22 | Soul | 13 | 30 | 14 | Popular | NULL | | 23 | Stages | 44 | 0 | 8 | Popular | Blues | | 24 | Bach | 15 | 1 | 8 | Classical | General | +----+-----------+---------+---------+----------+------------+----------+ 24 rows in set (0.01 sec) mysql> SELECT Name, InStock+OnOrder-Reserved AS Available

   -> FROM Sale
   -> WHERE Name LIKE "%bach%"
   -> ORDER BY Name;

+------+-----------+ | Name | Available | +------+-----------+ | Bach | 18 | | Bach | 8 | +------+-----------+ 2 rows in set (0.03 sec)

  • /

Drop table Sale;

CREATE TABLE Sale (

  ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Name VARCHAR(50) NOT NULL,
  InStock SMALLINT UNSIGNED NOT NULL,
  OnOrder SMALLINT UNSIGNED NOT NULL,
  Reserved SMALLINT UNSIGNED NOT NULL,
  Department ENUM("Classical", "Popular") NOT NULL,
  Category VARCHAR(20)

);

INSERT INTO Sale (Name, InStock, OnOrder, Reserved, Department, Category) VALUES ("Bloodshot", 11, 6, 1, "Popular", "Rock"),

               ("Opera",     12,      5,       2,        "Classical","Opera"),
               ("Jazz",      13,      4,       3,        "Popular",  "Jazz"),
               ("Music",     4,       3,       4,        "Classical","Dance"),
               ("Violin",    25,      2,       5,        "Classical", NULL),
               ("Toscana",   16,      1,       6,        "Classical", NULL),
               ("Blues",     7,       22,      7,        "Popular",   "Blues"),
               ("Pure",      38,      5,       11,       "Popular",   NULL),
               ("Mud",       19,      11,      12,       "Popular",  "Country"),
               ("Essence",   5,       23,      12,       "Popular", "New Age"),
               ("Embrace",   21,      12,      14,       "Popular", "New Age"),
               ("Satie",     42,      17,      15,       "Classical", NULL),
               ("Lake",      23,      47,      28,       "Classical", "Dance"),
               ("Favorites", 34,      15,      12,       "Classical", "General"),
               ("Boheme",    25,      12,       5,       "Classical", "Opera"),
               ("Cantatas",  26,      13,      8,        "Classical", "General"),
               ("Road",      27,      13,      17,       "Popular", "Country"),
               ("Paris",     18,      25,      10,       "Popular", "Jazz"),
               ("Woman",     29,      4,        7,       "Popular", "Blues"),
               ("Bach",      21,      13,      16,       "Classical", "General"),
               ("Opera",     12,      32,      12,       "Classical", "Opera"),
               ("Soul",      13,      30,      14,       "Popular", NULL),
               ("Stages",    44,      0,       8,        "Popular", "Blues"),
               ("Bach",      15,      1,       8,        "Classical", "General");
 

select * from Sale;

SELECT Name, InStock+OnOrder-Reserved AS Available FROM Sale WHERE Name LIKE "%bach%" ORDER BY Name;


      </source>
   
  


Where clause: regular expression 2

   <source lang="sql">

/* mysql> Drop table Sale; Query OK, 0 rows affected (0.01 sec) mysql> CREATE TABLE Sale

   -> (
   ->    ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ->    Name VARCHAR(50) NOT NULL,
   ->    InStock SMALLINT UNSIGNED NOT NULL,
   ->    OnOrder SMALLINT UNSIGNED NOT NULL,
   ->    Reserved SMALLINT UNSIGNED NOT NULL,
   ->    Department ENUM("Classical", "Popular") NOT NULL,
   ->    Category VARCHAR(20)
   -> );

Query OK, 0 rows affected (0.08 sec) mysql> INSERT INTO Sale (Name, InStock, OnOrder, Reserved, Department, Cate gory)

   -> VALUES          ("Bloodshot", 11,      6,       1,        "Popular",  "Ro

ck"),

   ->                 ("Opera",     12,      5,       2,        "Classical","Op

era"),

   ->                 ("Jazz",      13,      4,       3,        "Popular",  "Ja

zz"),

   ->                 ("Music",     4,       3,       4,        "Classical","Da

nce"),

   ->                 ("Violin",    25,      2,       5,        "Classical", NU

LL),

   ->                 ("Toscana",   16,      1,       6,        "Classical", NU

LL),

   ->                 ("Blues",     7,       22,      7,        "Popular",   "B

lues"),

   ->                 ("Pure",      38,      5,       11,       "Popular",   NU

LL),

   ->                 ("Mud",       19,      11,      12,       "Popular",  "Co

untry"),

   ->                 ("Essence",   5,       23,      12,       "Popular", "New
Age"),
   ->                 ("Embrace",   21,      12,      14,       "Popular", "New
Age"),
   ->                 ("Satie",     42,      17,      15,       "Classical", NU

LL),

   ->                 ("Lake",      23,      47,      28,       "Classical", "D

ance"),

   ->                 ("Favorites", 34,      15,      12,       "Classical", "G

eneral"),

   ->                 ("Boheme",    25,      12,       5,       "Classical", "O

pera"),

   ->                 ("Cantatas",  26,      13,      8,        "Classical", "G

eneral"),

   ->                 ("Road",      27,      13,      17,       "Popular", "Cou

ntry"),

   ->                 ("Paris",     18,      25,      10,       "Popular", "Jaz

z"),

   ->                 ("Woman",     29,      4,        7,       "Popular", "Blu

es"),

   ->                 ("Bach",      21,      13,      16,       "Classical", "G

eneral"),

   ->                 ("Opera",     12,      32,      12,       "Classical", "O

pera"),

   ->                 ("Soul",      13,      30,      14,       "Popular", NULL

),

   ->                 ("Stages",    44,      0,       8,        "Popular", "Blu

es"),

   ->                 ("Bach",      15,      1,       8,        "Classical", "G

eneral"); Query OK, 24 rows affected (0.00 sec) Records: 24 Duplicates: 0 Warnings: 0 mysql> select * from Sale; +----+-----------+---------+---------+----------+------------+----------+ | ID | Name | InStock | OnOrder | Reserved | Department | Category | +----+-----------+---------+---------+----------+------------+----------+ | 1 | Bloodshot | 11 | 6 | 1 | Popular | Rock | | 2 | Opera | 12 | 5 | 2 | Classical | Opera | | 3 | Jazz | 13 | 4 | 3 | Popular | Jazz | | 4 | Music | 4 | 3 | 4 | Classical | Dance | | 5 | Violin | 25 | 2 | 5 | Classical | NULL | | 6 | Toscana | 16 | 1 | 6 | Classical | NULL | | 7 | Blues | 7 | 22 | 7 | Popular | Blues | | 8 | Pure | 38 | 5 | 11 | Popular | NULL | | 9 | Mud | 19 | 11 | 12 | Popular | Country | | 10 | Essence | 5 | 23 | 12 | Popular | New Age | | 11 | Embrace | 21 | 12 | 14 | Popular | New Age | | 12 | Satie | 42 | 17 | 15 | Classical | NULL | | 13 | Lake | 23 | 47 | 28 | Classical | Dance | | 14 | Favorites | 34 | 15 | 12 | Classical | General | | 15 | Boheme | 25 | 12 | 5 | Classical | Opera | | 16 | Cantatas | 26 | 13 | 8 | Classical | General | | 17 | Road | 27 | 13 | 17 | Popular | Country | | 18 | Paris | 18 | 25 | 10 | Popular | Jazz | | 19 | Woman | 29 | 4 | 7 | Popular | Blues | | 20 | Bach | 21 | 13 | 16 | Classical | General | | 21 | Opera | 12 | 32 | 12 | Classical | Opera | | 22 | Soul | 13 | 30 | 14 | Popular | NULL | | 23 | Stages | 44 | 0 | 8 | Popular | Blues | | 24 | Bach | 15 | 1 | 8 | Classical | General | +----+-----------+---------+---------+----------+------------+----------+ 24 rows in set (0.00 sec) mysql> SELECT Name, InStock

   -> FROM Sale
   -> WHERE Name REGEXP "^[mn].*[sz]$"
   -> ORDER BY Name;

Empty set (0.00 sec)

  • /

Drop table Sale;

CREATE TABLE Sale (

  ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Name VARCHAR(50) NOT NULL,
  InStock SMALLINT UNSIGNED NOT NULL,
  OnOrder SMALLINT UNSIGNED NOT NULL,
  Reserved SMALLINT UNSIGNED NOT NULL,
  Department ENUM("Classical", "Popular") NOT NULL,
  Category VARCHAR(20)

);

INSERT INTO Sale (Name, InStock, OnOrder, Reserved, Department, Category) VALUES ("Bloodshot", 11, 6, 1, "Popular", "Rock"),

               ("Opera",     12,      5,       2,        "Classical","Opera"),
               ("Jazz",      13,      4,       3,        "Popular",  "Jazz"),
               ("Music",     4,       3,       4,        "Classical","Dance"),
               ("Violin",    25,      2,       5,        "Classical", NULL),
               ("Toscana",   16,      1,       6,        "Classical", NULL),
               ("Blues",     7,       22,      7,        "Popular",   "Blues"),
               ("Pure",      38,      5,       11,       "Popular",   NULL),
               ("Mud",       19,      11,      12,       "Popular",  "Country"),
               ("Essence",   5,       23,      12,       "Popular", "New Age"),
               ("Embrace",   21,      12,      14,       "Popular", "New Age"),
               ("Satie",     42,      17,      15,       "Classical", NULL),
               ("Lake",      23,      47,      28,       "Classical", "Dance"),
               ("Favorites", 34,      15,      12,       "Classical", "General"),
               ("Boheme",    25,      12,       5,       "Classical", "Opera"),
               ("Cantatas",  26,      13,      8,        "Classical", "General"),
               ("Road",      27,      13,      17,       "Popular", "Country"),
               ("Paris",     18,      25,      10,       "Popular", "Jazz"),
               ("Woman",     29,      4,        7,       "Popular", "Blues"),
               ("Bach",      21,      13,      16,       "Classical", "General"),
               ("Opera",     12,      32,      12,       "Classical", "Opera"),
               ("Soul",      13,      30,      14,       "Popular", NULL),
               ("Stages",    44,      0,       8,        "Popular", "Blues"),
               ("Bach",      15,      1,       8,        "Classical", "General");
 

select * from Sale; SELECT Name, InStock FROM Sale WHERE Name REGEXP "^[mn].*[sz]$" ORDER BY Name;


      </source>
   
  


Where clause: regular expressions

   <source lang="sql">

/* mysql> Drop table Sale; Query OK, 0 rows affected (0.00 sec) mysql> CREATE TABLE Sale

   -> (
   ->    ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ->    Name VARCHAR(50) NOT NULL,
   ->    InStock SMALLINT UNSIGNED NOT NULL,
   ->    OnOrder SMALLINT UNSIGNED NOT NULL,
   ->    Reserved SMALLINT UNSIGNED NOT NULL,
   ->    Department ENUM("Classical", "Popular") NOT NULL,
   ->    Category VARCHAR(20)
   -> );

Query OK, 0 rows affected (0.16 sec) mysql> INSERT INTO Sale (Name, InStock, OnOrder, Reserved, Department, Cate gory)

   -> VALUES          ("Bloodshot", 11,      6,       1,        "Popular",  "Ro

ck"),

   ->                 ("Opera",     12,      5,       2,        "Classical","Op

era"),

   ->                 ("Jazz",      13,      4,       3,        "Popular",  "Ja

zz"),

   ->                 ("Music",     4,       3,       4,        "Classical","Da

nce"),

   ->                 ("Violin",    25,      2,       5,        "Classical", NU

LL),

   ->                 ("Toscana",   16,      1,       6,        "Classical", NU

LL),

   ->                 ("Blues",     7,       22,      7,        "Popular",   "B

lues"),

   ->                 ("Pure",      38,      5,       11,       "Popular",   NU

LL),

   ->                 ("Mud",       19,      11,      12,       "Popular",  "Co

untry"),

   ->                 ("Essence",   5,       23,      12,       "Popular", "New
Age"),
   ->                 ("Embrace",   21,      12,      14,       "Popular", "New
Age"),
   ->                 ("Satie",     42,      17,      15,       "Classical", NU

LL),

   ->                 ("Lake",      23,      47,      28,       "Classical", "D

ance"),

   ->                 ("Favorites", 34,      15,      12,       "Classical", "G

eneral"),

   ->                 ("Boheme",    25,      12,       5,       "Classical", "O

pera"),

   ->                 ("Cantatas",  26,      13,      8,        "Classical", "G

eneral"),

   ->                 ("Road",      27,      13,      17,       "Popular", "Cou

ntry"),

   ->                 ("Paris",     18,      25,      10,       "Popular", "Jaz

z"),

   ->                 ("Woman",     29,      4,        7,       "Popular", "Blu

es"),

   ->                 ("Bach",      21,      13,      16,       "Classical", "G

eneral"),

   ->                 ("Opera",     12,      32,      12,       "Classical", "O

pera"),

   ->                 ("Soul",      13,      30,      14,       "Popular", NULL

),

   ->                 ("Stages",    44,      0,       8,        "Popular", "Blu

es"),

   ->                 ("Bach",      15,      1,       8,        "Classical", "G

eneral"); Query OK, 24 rows affected (0.00 sec) Records: 24 Duplicates: 0 Warnings: 0 mysql> select * from Sale; +----+-----------+---------+---------+----------+------------+----------+ | ID | Name | InStock | OnOrder | Reserved | Department | Category | +----+-----------+---------+---------+----------+------------+----------+ | 1 | Bloodshot | 11 | 6 | 1 | Popular | Rock | | 2 | Opera | 12 | 5 | 2 | Classical | Opera | | 3 | Jazz | 13 | 4 | 3 | Popular | Jazz | | 4 | Music | 4 | 3 | 4 | Classical | Dance | | 5 | Violin | 25 | 2 | 5 | Classical | NULL | | 6 | Toscana | 16 | 1 | 6 | Classical | NULL | | 7 | Blues | 7 | 22 | 7 | Popular | Blues | | 8 | Pure | 38 | 5 | 11 | Popular | NULL | | 9 | Mud | 19 | 11 | 12 | Popular | Country | | 10 | Essence | 5 | 23 | 12 | Popular | New Age | | 11 | Embrace | 21 | 12 | 14 | Popular | New Age | | 12 | Satie | 42 | 17 | 15 | Classical | NULL | | 13 | Lake | 23 | 47 | 28 | Classical | Dance | | 14 | Favorites | 34 | 15 | 12 | Classical | General | | 15 | Boheme | 25 | 12 | 5 | Classical | Opera | | 16 | Cantatas | 26 | 13 | 8 | Classical | General | | 17 | Road | 27 | 13 | 17 | Popular | Country | | 18 | Paris | 18 | 25 | 10 | Popular | Jazz | | 19 | Woman | 29 | 4 | 7 | Popular | Blues | | 20 | Bach | 21 | 13 | 16 | Classical | General | | 21 | Opera | 12 | 32 | 12 | Classical | Opera | | 22 | Soul | 13 | 30 | 14 | Popular | NULL | | 23 | Stages | 44 | 0 | 8 | Popular | Blues | | 24 | Bach | 15 | 1 | 8 | Classical | General | +----+-----------+---------+---------+----------+------------+----------+ 24 rows in set (0.00 sec) mysql> SELECT Name, InStock+OnOrder-Reserved AS Available

   -> FROM Sale
   -> WHERE Name REGEXP "^[a-f]"
   -> ORDER BY Name;

+-----------+-----------+ | Name | Available | +-----------+-----------+ | Bach | 18 | | Bach | 8 | | Bloodshot | 16 | | Blues | 22 | | Boheme | 32 | | Cantatas | 31 | | Embrace | 19 | | Essence | 16 | | Favorites | 37 | +-----------+-----------+ 9 rows in set (0.03 sec)

  • /

Drop table Sale;

CREATE TABLE Sale (

  ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  Name VARCHAR(50) NOT NULL,
  InStock SMALLINT UNSIGNED NOT NULL,
  OnOrder SMALLINT UNSIGNED NOT NULL,
  Reserved SMALLINT UNSIGNED NOT NULL,
  Department ENUM("Classical", "Popular") NOT NULL,
  Category VARCHAR(20)

);

INSERT INTO Sale (Name, InStock, OnOrder, Reserved, Department, Category) VALUES ("Bloodshot", 11, 6, 1, "Popular", "Rock"),

               ("Opera",     12,      5,       2,        "Classical","Opera"),
               ("Jazz",      13,      4,       3,        "Popular",  "Jazz"),
               ("Music",     4,       3,       4,        "Classical","Dance"),
               ("Violin",    25,      2,       5,        "Classical", NULL),
               ("Toscana",   16,      1,       6,        "Classical", NULL),
               ("Blues",     7,       22,      7,        "Popular",   "Blues"),
               ("Pure",      38,      5,       11,       "Popular",   NULL),
               ("Mud",       19,      11,      12,       "Popular",  "Country"),
               ("Essence",   5,       23,      12,       "Popular", "New Age"),
               ("Embrace",   21,      12,      14,       "Popular", "New Age"),
               ("Satie",     42,      17,      15,       "Classical", NULL),
               ("Lake",      23,      47,      28,       "Classical", "Dance"),
               ("Favorites", 34,      15,      12,       "Classical", "General"),
               ("Boheme",    25,      12,       5,       "Classical", "Opera"),
               ("Cantatas",  26,      13,      8,        "Classical", "General"),
               ("Road",      27,      13,      17,       "Popular", "Country"),
               ("Paris",     18,      25,      10,       "Popular", "Jazz"),
               ("Woman",     29,      4,        7,       "Popular", "Blues"),
               ("Bach",      21,      13,      16,       "Classical", "General"),
               ("Opera",     12,      32,      12,       "Classical", "Opera"),
               ("Soul",      13,      30,      14,       "Popular", NULL),
               ("Stages",    44,      0,       8,        "Popular", "Blues"),
               ("Bach",      15,      1,       8,        "Classical", "General");
 

select * from Sale;

SELECT Name, InStock+OnOrder-Reserved AS Available FROM Sale WHERE Name REGEXP "^[a-f]" ORDER BY Name;


      </source>