Selective delete in SQL

Hi All

This might be a weird query but its related to deleting specific details in database.

Bascially I had built a database using a set of files

seq1 of 300 mb
seq2 of 200 mb
seq3 of 350 mb
seq4 of 300 mb

and after building the database i realized that i didn't need the whole data. i am required to not only delete content of database related to seq2 to seq4 but also delete content related to last 200 bytes in seq1

Basically i am required to retain only first 100 mb of data in seq1.

without going through the whole procedure of rebuilding the db could i delete contents of database corresponding to these requirements.
i know its a little unusal but could some one give a direction.

Thanks
:confused:

What is the database(i.e.oracle, db2, etc.)?
Which tables in the database do you want to remove rows for?
What is the structure(i.e. columns, indexes) of these tables?
Which rows do you want to remove?

Hi,

I thought about it and realized that i could delete all unwanted entries in the mysql databaseb by using a select and delete command
i want to retain only those seq1 entries whose stop_id is less than or equal to 1000000( ie from 0 to 1000000 )

I want to delete all other sequences from seq2 to 13 and also other entries having name VCC and QAC

id start_id stop_id
seq1 3333 66663
seq1 213267 723560
seq1 900000 1000000
seq1 12348965 19968965
seq2 2333 5623
seq1 2033333 2279800
seq3 213267 723560
seq2 900000 1000000
QAC 203333 229800
seq1 4532113 7633115
VCC 33333 3421111

I want only seq1 in the database having stop id<=1000000 .

required o/p looks like :

seq1 3333 66663
seq1 213267 723560
seq1 900000 1000000

Is there a way to delete all entries other than that required?

---------- Post updated at 07:42 PM ---------- Previous update was at 07:24 PM ----------

Also another question is to reduce the file size. Is there any command to check the count size of a file.

I am asking this because I have to retain the first 100Mb of data in seq1 and then deleting the remaining bits in that file.

What command should I use to retain the first 100 mb of file and delete the remaining bits using vi or awk?

Sorry for so many posts .Thanks ALL for your help

Yes, of course there is a way to perform DB operations.

What have you tried? What is the table structure?

What are your SQL queries you have executed and the results?

I used :
"delete from tablename
where seq_id = 'seq2'
i deleted all the other sequences.

and after that
delete from tablename
where stop_id>=1000000 ;

i dont know how to reduce the original file size
its 300mb and i want to retain the first 100mb .

could some1 suggest?

---------- Post updated 02-26-13 at 07:59 PM ---------- Previous update was 02-25-13 at 09:54 PM ----------

hi
is there any command to count the number of bits in a file ?

Anything that i can use to retain the first 1000 or 100mb bits in a file and delte the remaining?

There most likely is a way to find out what is in the first 100 mb of the file, but that is not how databases work. One reason database systems were invented is that you do not have to bother with this kind of things, so the documentation for this is hard to find and understand.
I could tell you how to do this for Oracle systems if I'd know the exact version, but there would be a LOT research you'd have to do and I'm not sure if recreating the database wouldn't be less straining on your resources.
A quick google search revealed that shrinking mysql datafiles is not a built in feature for that database system, but there are tools that can do it. The native approach would be to add a datafile of the desired size, move all data there and drop the old ones (and I guess that is what those tools do).
Edit: Using tools like vi or awk on database files usually is a bad idea and will most likely corrupt your database.

Count the bytes and multiply by 8.

Seriously - I'd propose you learn some basics on databases.
Deleting anything from the outside will corrupt the database rendering it totally unusable.
Deleting sequences does not really save space - they are just metadata worth a few bytes, counters that have a start and end value, and e.g. a step width, all recorded in the DB management structures.
Retaining the "first" 100 MB (= deleting 200 MB above) is pointless as consistent data are spread all over tablespaces/files.

Do as cero proposed - create a new datafile/tablespace, move all relevant data there, and then drop the old structures. Or, seriously consider recreating.