Home / Modifying Data / Delete a member from the cd.members table

Delete a member from the cd.members table

Question

We want to remove member 37, who has never made a booking, from our database. How can we achieve that?

Expected Results

memidsurnamefirstnameaddresszipcodetelephonerecommendedbyjoindate
0GUESTGUESTGUEST0(000) 000-0000NULLSun Jul 01 2012 00:00:00 GMT+0000 (Coordinated Universal Time)
1SmithDarren8 Bloomsbury Close, Boston4321555-555-5555NULLMon Jul 02 2012 12:02:05 GMT+0000 (Coordinated Universal Time)
2SmithTracy8 Bloomsbury Close, New York4321555-555-5555NULLMon Jul 02 2012 12:08:23 GMT+0000 (Coordinated Universal Time)
3RownamTim23 Highway Way, Boston23423(844) 693-0723NULLTue Jul 03 2012 09:32:15 GMT+0000 (Coordinated Universal Time)
4JopletteJanice20 Crossing Road, New York234(833) 942-47101Tue Jul 03 2012 10:25:05 GMT+0000 (Coordinated Universal Time)
5ButtersGerald1065 Huntingdon Avenue, Boston56754(844) 078-41301Mon Jul 09 2012 10:44:09 GMT+0000 (Coordinated Universal Time)
6TracyBurton3 Tunisia Drive, Boston45678(822) 354-9973NULLSun Jul 15 2012 08:52:55 GMT+0000 (Coordinated Universal Time)
7DareNancy6 Hunting Lodge Way, Boston10383(833) 776-40014Wed Jul 25 2012 08:59:12 GMT+0000 (Coordinated Universal Time)
8BootheTim3 Bloomsbury Close, Reading, 00234234(811) 433-25473Wed Jul 25 2012 16:02:35 GMT+0000 (Coordinated Universal Time)
9StibbonsPonder5 Dragons Way, Winchester87630(833) 160-39006Wed Jul 25 2012 17:09:05 GMT+0000 (Coordinated Universal Time)
10OwenCharles52 Cheshire Grove, Winchester, 2856328563(855) 542-52511Fri Aug 03 2012 19:42:37 GMT+0000 (Coordinated Universal Time)
11JonesDavid976 Gnats Close, Reading33862(844) 536-80364Mon Aug 06 2012 16:32:55 GMT+0000 (Coordinated Universal Time)
12BakerAnne55 Powdery Street, Boston80743844-076-51419Fri Aug 10 2012 14:23:22 GMT+0000 (Coordinated Universal Time)
13FarrellJemima103 Firth Avenue, North Reading57392(855) 016-0163NULLFri Aug 10 2012 14:28:01 GMT+0000 (Coordinated Universal Time)
14SmithJack252 Binkington Way, Boston69302(822) 163-32541Fri Aug 10 2012 16:22:05 GMT+0000 (Coordinated Universal Time)
15BaderFlorence264 Ursula Drive, Westford84923(833) 499-35279Fri Aug 10 2012 17:52:03 GMT+0000 (Coordinated Universal Time)
16BakerTimothy329 James Street, Reading58393833-941-082413Wed Aug 15 2012 10:34:25 GMT+0000 (Coordinated Universal Time)
17PinkerDavid5 Impreza Road, Boston65332811 409-673413Thu Aug 16 2012 11:32:47 GMT+0000 (Coordinated Universal Time)
20GentingMatthew4 Nunnington Place, Wingfield, Boston52365(811) 972-13775Sun Aug 19 2012 14:55:55 GMT+0000 (Coordinated Universal Time)
21MackenzieAnna64 Perkington Lane, Reading64577(822) 661-28981Sun Aug 26 2012 09:32:05 GMT+0000 (Coordinated Universal Time)
22CoplinJoan85 Bard Street, Bloomington, Boston43533(822) 499-223216Wed Aug 29 2012 08:32:41 GMT+0000 (Coordinated Universal Time)
24SarwinRamnaresh12 Bullington Lane, Boston65464(822) 413-147015Sat Sep 01 2012 08:44:42 GMT+0000 (Coordinated Universal Time)
26JonesDouglas976 Gnats Close, Reading11986844 536-803611Sun Sep 02 2012 18:43:05 GMT+0000 (Coordinated Universal Time)
27RumneyHenrietta3 Burkington Plaza, Boston78533(822) 989-887620Wed Sep 05 2012 08:42:35 GMT+0000 (Coordinated Universal Time)
28FarrellDavid437 Granite Farm Road, Westford43532(855) 755-9876NULLSat Sep 15 2012 08:22:05 GMT+0000 (Coordinated Universal Time)
29Worthington-SmythHenry55 Jagbi Way, North Reading97676(855) 894-37582Mon Sep 17 2012 12:27:15 GMT+0000 (Coordinated Universal Time)
30PurviewMillicent641 Drudgery Close, Burnington, Boston34232(855) 941-97862Tue Sep 18 2012 19:04:01 GMT+0000 (Coordinated Universal Time)
33TupperwareHyacinth33 Cheerful Plaza, Drake Road, Westford68666(822) 665-5327NULLTue Sep 18 2012 19:32:05 GMT+0000 (Coordinated Universal Time)
35HuntJohn5 Bullington Lane, Boston54333(899) 720-697830Wed Sep 19 2012 11:32:45 GMT+0000 (Coordinated Universal Time)
36CrumpetEricaCrimson Road, North Reading75655(811) 732-48162Sat Sep 22 2012 08:36:38 GMT+0000 (Coordinated Universal Time)

Your Answer

Your Results

Loading database...

Answers and Discussion

delete from cd.members where memid = 37;

This exercise is a small increment on our previous one. Instead of deleting all bookings, this time we want to be a bit more targeted, and delete a single member that has never made a booking. To do this, we simply have to add a WHERE clause to our command, specifying the member we want to delete. You can see the parallels with SELECT and UPDATE statements here.

There's one interesting wrinkle here. Try this command out, but substituting in member id 0 instead. This member has made many bookings, and you'll find that the delete fails with an error about a foreign key constraint violation. This is an important concept in relational databases, so let's explore a little further.

Foreign keys are a mechanism for defining relationships between columns of different tables. In our case we use them to specify that the memid column of the bookings table is related to the memid column of the members table. The relationship (or 'constraint') specifies that for a given booking, the member specified in the booking must exist in the members table. It's useful to have this guarantee enforced by the database: it means that code using the database can rely on the presence of the member. It's hard (even impossible) to enforce this at higher levels: concurrent operations can interfere and leave your database in a broken state.

PostgreSQL supports various different kinds of constraints that allow you to enforce structure upon your data. For more information on constraints, check out the PostgreSQL documentation on foreign keys