 Assalamu alaikum. Dear students, this is lecture number 27 of the database management system course. The course code is CS403. In the previous lecture, we were discussing the DDL, Data Definition Language. And out of this part of this SQL, we were studying the create command. Create command is used to create different sort of objects of a database schema. And we started by creating a database. And the database that we selected for our practice session was exam database of any education institution. So, we named our database as exam. After that, we studied how to create different types of tables, different forms of tables by using the create command. We created table with the attribute and their data types. We also created table by introducing different forms of constraints. And we also studied what are the practices, what is the method of studying the format of a command. Once you get used to with this type of understanding, so far, we have studied different formats of the create command. Today, we will move to the next commands of the DDLs. So, let us start to this lecture. Alter table statement. As I told you before that it is not very necessary. It is not compulsory that you imagine or you write down or you include all the possible things in the definition of the table right from the day one. Well, it is better obviously. It is not recommended that you make so many changes or so frequent changes in the structure of the table. So, it is recommended it is better that you that after the complete analysis and then through the physical database design, you define your table definition properly. But still, there may be the situations when you need to change the structure of the table. And when we say change the structure of the table, by that we mean that we need to add an attribute, we need to add a constraint, we need to change the definition of an attribute like we want to change the data type or we want to change the size anything. At the same time, we want to make the change in the constraint that we have defined. We want to delete a constraint and like that. So, Alter table statement is used basically to make changes in the structure of the tables and mind it. This is a serious activity because see making a change in the data is one thing and making the change in the structure is second thing. When you make a change in the data, only those records those attributes are affected on which you have performed the operation. For example, there is an employee let us say his name is Ahmad Abbas and his phone number is you have written some phone number there. Let us say you want to change the phone number of that employee. If you change the phone number of that employee, this change will affect only this record, the record of the employee whose telephone number you have changed. But when you make a change in the structure of the table, that change is implemented, that change affects all the records present in the table. If there is a one record, that record will be affected. If there are 1000, 100,000, millions of records, all of them they will be affected. This means that if you want to change the structure, then you have to be very sure of what you are doing. For example, if you have a record of an employee, you want to delete the phone number of that particular record. You can simply move the null value there. So what will happen? Only that particular record will have null value and only that record will be affected. But at the other hand, if you remove the telephone number from the structure of the table by using let us say alter table command, this change will affect all the records in the table, in the table yes. And say if there are 10 records, 200,000, millions of records from all those records, this particular attribute will be erased. It will be removed. So the purpose of all this discussion, all this emphasis is once you have created the table, you have populated the table. Populated means you have entered some data in the table 1, 2, 3, 4 or as many records. Then be very careful while using this alter table statement because once it is executed, it cannot be taken back. It cannot be rolled back. So you keep in mind that the effect of this statement is on the structure of the table. And the changes you make on the structure will be implemented on all the records. So be careful while using this statement. Purpose is to make changes in the definition of a table already created through create statement yes. We have just talked about this. Obviously you will alter only once the table exists. If the table does not exist, then there is no concept of altering it. Can add, drop, attributes or constraints, activate or deactivate constraints and the format is which we will see later. And here you are seeing two things that are written in this, add or drop constraints. At the same time you can activate and deactivate constraints. What is the difference? The difference is that if you drop a constraint, it means that it is not there anymore. It is removed. It is deleted from the definition of the table. So this means that next time let us say if you want to, if you need the same constraint again later, then you will have to add this constraint again. This is one thing. And second thing is you do not remove it. You simply deactivate it. Deactivate it means that it will not be affected but it will still be there. So if you need it later, then this time you will not need to add the constraint. You would simply activate the constraint. So this is the difference in adding, dropping or activating and deactivating. Now this is the format of the alter table command or alter table statement. Since we have discussed the format rules many times, so I will discuss it briefly. As you can see alter table, these two words are written in capital letter and so it means that you will write them as such and in the same order. Then table is in the written in the lower case. It means you will have to give the table name and this will be produced by you. Then next you see the curly braces. Curly braces means the things they are there. They are different options and you have to give one of them. For example, first is alter column, column name. If you want to make a change in the definition of a column, then you will use this option. And what is in it? You will see that if you use this option in that case, then you will get a new data type that you want to give. And then there is precision and scale. In precision and scale, for example, if you look at your real numbers, you will see that what is the total width and what is the decimal point in it. So precision and scale tell you these things. In addition, the next thing is null and not null. Let's say that first it was null, now you want to make it not null. When first it was not null, now you want to declare it as null, then you will give it here. So this first option is that you want to make a change in the definition of an attribute. So in this, you will use that you will give the name of the table and the particular column that you want to change. I have told you that you want to change its data type or its length and mind it. When you want to change the type of the attribute, then there are certain rules in it. So refer to it. For example, we are using SQL Server. So refer to its manual for online help. Because in certain types, there cannot be a change or there are just some rules. Anyway, the purpose of this is that if you want to make a change in the structure of a column, then after giving it an alter table, the name of the table, you will say the name of the column again and the name of the column that you want to change, you will do it here. After that, the next option, the first option is the name of the column. Next is if you want to add an attribute. For example, if we talk about the student, before this, we did not store the hobbies for the first time. Now the organization says that they want the data about the hobbies of the students as well. For that, first of all, obviously, we will have to add this attribute in the definition of the student table. So here we want to add. So we will use this add option and because add is written in the capital letters, it means you will give it as such at the same place. So add and then there is something in the angle brackets. It means this is something whose explanation will be followed. So column definition we will discuss later. See now if we want to calculate, if we want to store the total marks of the students, let us say the total marks are equal to the total marks and the final marks. So rather than asking the person who is entering the data that you enter all these 3 marks and you also sum all these 3 numbers and put the sum of these numbers as well in the total marks, what we can do? We can define the total marks as the sum of these 3 attributes of the same table. So when you are entering the data, you will simply have to enter the values in these 3 attributes, the sectional marks, the midterm marks and the final marks. And when you move to the next record, the DBMS will automatically sum these 3 attributes and the value obtained will be placed in the total marks automatically. So such an attribute, such a column is called the computed column. So here you can define it as a computed attribute or computed column. And then this optional is that you can give it many times, you can continue it. So this comma dot n shows that you can give as many attributes as you like. After that, the next option is drop key. If you want to drop something, then drop constraint or constraint name. Now the constraint is optional, writing the constraint is optional. And next is constraint name. But this is something that we discussed in the previous lecture, why do we give, why it is better to give a name to a constraint. See constraint name is optional, I told you. But the thing is like here in this situation, you want to let us say drop the constraint or you want to activate or deactivate it. In that case, definitely you need the name of the constraint. So if you have not given the name explicitly, specifically the DBMS will automatically assign a name to that constraint. So you will see the definition of the table and you will find the name of the particular constraint. For example, if it is a foreign key constraint or it is even primary key constraint or if it is a check constraint, all of them they can have the name either provided by you yourself or by the DBMS. So you will find that name and here you will give that name. You say drop constraint, optional obviously and then constraint name, whether user provided or the DBMS defined. Then if you want to drop a column, then you give column because if you drop a column, mind it, this column will be dropped from all the records in your database. I told you previously as well that this is a serious thing. When you start dropping a column, before dropping a column, you think a lot because when you develop an application, it is not that easy to keep track of which column it is referring to. Similarly, if you follow the proper rules of software engineering, then you can maintain the record. But still you can miss by mistake, you can miss some places where that column is referring. If you drop a column somewhere that is referring to an application, the problem is that when you run that application, that application will try to access this column. It will not find that column and it will generate an error and it will terminate. And believe me, it is very difficult to remove an error from an application. Therefore, dropping a column will be very careful. It is a very serious thing. After that, we have an option that check no check constraint. It is that you want to activate it or you do not want to activate it. All and constraints. You want all to be deactivated, so no check or all. If you want to deactivate a particular constraint, then you say no check or constant command. So how do you do this? These are some changes that you can do through the alter table command. And remember that what I have shown here is a sort of brief. There is much more into this. But I am simplifying so that you can understand it easily. When you get used to it, then you can also understand the other option provided by this statement. Now we are going to use the alter table command. Here are examples of the alter table command. The alter table command we gave the student, the name of the table. Then we have said add constraint. Add constraint and if you look here, we have given the name of the constraint. And this is a convention that I have adopted to name the constraint. And what I have given the name of the constraint, the basic idea is that I have told you repeatedly that whenever you name something, whether it is a table, an attribute, and constraint or anything, the name should be self-explanatory. When you see the name, it gives you some information, it gives you some idea about the thing. And one more thing is that if you name something else, and it does something else, then there is no harm in it. Your objective will be to confuse these people. But mind it, it will confuse you as well. For example, the same thing is that we are not a sheriff, we are not a sheriff. So keep the name as such that whatever you see, you can imagine what it will do. For example, if you see the name here of the constraint, we have named it as FK, FK means foreign key, then student means the table on which this foreign key is being defined, and then PR, the program. So if you look at these three, you can imagine that this is a foreign key between student and program table. So you can imagine the functionality of this, its role, and you can modify it, change it, delete it, activate it, deactivate it. It would be easier for you. Rather than digging into the meaning of definition of the constraint or from there, then obviously it would be helpful for you. After that, we have said that foreign key, we have said that the foreign key is required as such, and the bracket we have given is the program name. Now this program name is the name of the attribute in the student table. And then we have said references, but this is required. This is must. Why? Because obviously if you are defining the foreign key, you must link it with the attribute in its home relation, the primary key. That is why we have said references. And then you have given the name of the table. You have given the name of the table, which is in this case, you have a program. And then after that, you have given the brackets. The attribute name, the relevant attribute, that is the primary key in the program table. And when we discussed this format, we discussed that if the name of the foreign key and the primary key are the same, in that case you do not need to give the name of the primary key second time. Rather, if you just mention the name of the table, the DBMS will automatically link these two. But still, if even the name is same, if you give the name of the attribute of the primary key, it is not an objectionable thing. It is still okay. Let us move ahead. Now, here is another alter table command. We are making a change in the program table. That is alter table program. Then add constraint, check total semester. CK we have used for check. And it is not compulsory minded. You can make it CH. You can make it the complete CHEC if you like. Now, this is on you. Whatever you understand, and whatever it is easy to explain to someone, because obviously for the organization that you are developing, you will tell them, the DBMS there, you will tell them, that I have named these things. So, what you understand is the first thing. And what anyone can easily understand, and it will not be a layman. It will be a professional. This means that it will not be so difficult to understand. It is not like you are explaining to some layman, you have no idea what computer terminology is, or what is the check constraint. It is not like that. So, this is just a guideline, a recommendation. It is not like you always follow this. You define your naming convention yourself. But obviously it is not like you say, for example, like I have learned for the check, so you say that I keep for the check, that anything like I have kept for the check. I am using for the check. Well, this is something that you can understand in your mind, but it does not make any logic to explain to anyone. So, in this way, you keep naming convention, for which it is logical, according to you, and according to others. In addition, CK means that this is a constraint that is check. This is a check constraint. This will be the first thing from CK. After that, we called it totes hem. This means that this is a check that you are imposing on the total semester attribute. Now, here, like the last one that we defined, the constraint that we named, there we introduced the name of the table as well. Here, we missed the name of the table. Well, you can add the name of the table here as well. Like you can say CK underscore PR means program and underscore totes hem. This is a check on the program table and the total semester attribute. So, it may be possible that you have to type a little bit more, but the thing is this is very useful activity. And do not be afraid of extra botheration. In bigger systems, in such small things, they are very useful later. They become very important later. So, do not be afraid of this thing that I have to type extra here and I am getting so much trouble. So, why don't I name it XYZ? Well, XYZ is fine. As far as naming the constraint is concerned, no problem. XYZ is 100% legal name. But the thing is, if you want to activate or delete that constraint, you will not understand what XYZ is doing. You will have to put the word again in its definition. And from there, you will understand what it is. Anyway, this is the name of your constraint. After that, check. Well, this is required that this is a check constraint. And then in brackets, you have given the condition, the expression. In this case, you have given towards him less than 9. Once again, this is a very minor thing. But at the same time, this can be very crucial, very helpful, very important. Why? Because you see that the programs offered to us, they are either 2 or 4 years old. Well, if it is of 2 years, then it consists of 4 semesters. But if it is of 4 years, then it consists of 8 semesters. If it is of 3 years, then definitely it will be less than 8 semesters. If it is of 1 year, then obviously it will be less than 8 semesters. Well, even 8 is not necessary. If you are an institute, the institute for which you are developing the system, if they are offering some degree that is more than 8 semesters, maybe it is 10, 12, 14, 15, 16 semesters, fine, no problem. But the thing is, it is a bit of extra smartness that you impose a check on this attribute that in this institute, the programs that are being offered or in the future, in 1, 2, 3, 4 years, the programs that are being offered, their plan, obviously every institute has near future plans that we have to offer another one, we have to offer a degree. So, if you think that the maximum total semesters that can be of value, right now it is 8, but maybe in 1 or 2 years, they are offering a degree that is of let us say 10 semesters, then you have imposed a check that the value of this should be less than 9 or 10, 12, 15, whatever is the situation in your organization. Now, this is a small thing, but it is very important. Because when your detentory is happening, at that time, if you do a mistake, the person who is doing the detentory at some place, that is your BCS program, that is basically of 8 semesters, that person enters 18 or 20, that person is representing the inconsistency of your database. See, the mistake can also be that you say that there is a person who has entered the mistake that it was a BCS program, that was originally of 8 semesters, but you made a mistake of 7, 6, 4, but this also can be a mistake, but this mistake can also be checked in some other ways. But from this one check, at least, you made a possible mistake that in any program, it is an unreasonable value like 20 semesters, 25 semesters, it can be a mistake. You have controlled it. See, data type associate Karna, this is one form of imposing constraint on the attribute. Let us see what semester we have given that this is of type tiny int. Tiny int means that you have restricted the value for this attribute from 0 to 255. Now, if you want to enter, if someone enters a value like 300, no, dvms will not allow it. But the thing is, as far as the allowed, the legal data types are concerned, using them, you can restrict it only within this range, 0 to 255. But the thing is, if you want to further restrict it, see, now its one possibility was that even smaller than this, we have a data type. This is tiny int. It is a tiny int. Let us say 0 to 100. Another tiny int. Smaller than this. But that is another story. That is another option. Because we do not have a different structure based on different reasons. The smallest possible is tiny int. 0 to 255. The thing is, if you restrict it only with this data type, like if someone enters the value of the total semester as 200, then under that constraint, this is a legal, correct, fine value. This way, dvms will not allow it. But the thing is, as far as your system is concerned, this is a wrong value. So, you said, you thought, let us impose another form of constraint. And look, this thing will understand better after a few selectors. But the thing is, you will note that whatever your rules are, business rules, business rules are, whatever organization you are working in, whose database you are developing, whatever the rules are, try to accommodate maximum rules in the schema of your database. Because, we have already discussed this, that you can impose these rules in two ways. One is within application programs. And the other is within the schema. The biggest benefit of doing it in the schema is that when you put something in the schema, the schema is obviously always referred to by the dbms. You make any change, any operation, the schema is referenced by the dbms. So, whatever you make part of the schema, automatically, whenever that object is accessed anywhere, you first do this program, which is your table, first you access it in 15 different programs. If they access those 15 programs, then whenever they make any operation on that, on this table program, they will refer to the schema. If they will refer to the schema, then the constant you have defined, like foreign defined, check defined, primary defined, null, not null, default, anything. So, that constraint they will be automatically referenced by the dbms and they will check it. For this, if you have done it in the application program, it is smart way to do it, but in general, if you do it through your program, then in this program, you are accessing this table, then this becomes your responsibility, you make it sure that constraints, those checks, they are active, they are executed. First of all, you have this check constraint. Here, we made it the part of the schema. First of all, we don't make it the part of the schema. First of all, we want to impose it always through an if statement. Whenever in their different application program, they are accessing this semester, total semester attribute. So, we decide that whenever its value changes, then we will put an if condition there, that whenever its value is bigger than 9, if it is bigger than 9, then it will be error-generated. The thing is, the number of places it is referring to, you have to make it sure that that check is being applied. So, you can think that 10 places it is referring to, this is your responsibility that you refer this if condition. But, if you make it the part of the schema, what happens is, you have done it once, you have given it. Now, any application program whether it is 10 application programs, if they go to change this attribute, this check will automatically be activated and it will be imposed on it. And whenever you try to increase the value of this total semester attribute, you will not be able to do it. Now, you will understand what is difference, some idea will be that what is difference by including constraint, a business rule in the schema of the database or in the application program. This thing will be for the next month. Let's go ahead. Well, if you want to remove or you want to change some attribute, in that we are using the same alter table student. And here we said alter column or student father name and here we first first length we had given it 25. Now, when we have started populating the code, we encountered let's say hundreds of records and we found that most of rather all of our records they are of 20 factor length. So we are wasting almost five bytes or five factors in every record. So as a DBA or as an assistant developer as a DBA rather you decided to save this extra storage. So you changed it. The thing is the code is like this which is more than 20 bytes that is 21 bytes. Now if you first had 25 attributes length 25 we have 1000 records and there is only one record which is less than 20 bytes. Through this statement you want to make that attribute of 20 bytes. So DBA may warn that the changes it may affect some data. So if you insist on continuing then in that record whether it is 10 or 10 all those extra your characters will truncate and cut. So this is basically your decision if you want to change it and if extra storage is small and you say if it is cut then that will be fine with us then you can go with it and that extra will be next time. But from all records which was 25 now after this command it will become 20. So there were 1000 records 5 characters saved 5000 characters. One more statement and see as far as we talk about the case there is no difference above we have written all in capital and here we have written in mix it won't make any difference. We said drop column current semester due to any reason we thought we do not need it so we dropped it like this we said drop constraint CK check student PR by the way when we defined it we did it but here it can be a hypothetical constraint so obviously this is a check that is between student and program so this is a constraint which we dropped so these are examples of which we changed some things using the alter table command and some we dropped it we had we deleted or modified now here we have the next command we have some special rows of a table we have to delete all the rows of the table see there is a difference we have a table there is a thousand records one situation is you want to remove one or some particular records like 20 records which you want to delete one situation is the second situation is you want to remove all the records and the third option is you want to simply remove the table the last difference is those who want to delete will be deleted for that we had 1000 records we deleted 5 5 but we have if you want to remove all the records you will remove all the records but the thing is we have still got the table table with no record its structure it is there if you have to do data enter table is available you simply start putting the data in the third situation is you want to remove the table you don't want the records you want the structure and the record in this third case if you need the table again let's say first you will hear a lot you will have to create the table again because you don't have the table you have to define it these are 3 situations the things you are referring to that all the rows will be deleted the table will be there for example as I said table class now it will mean all the rows will be deleted but the table structure is there then you can use the delete now due to some technical reasons if you want to use delete then there is a possibility of delete whereas you can delete certain rows of the table for example if you have 1000 records if you want to delete 5, 6, 7, 1, 2, 10, 15 records then you will have to use delete command but at the same time you can delete all the rows so in truncate and delete there is a difference truncate does not give you the option to delete records truncate will always remove all the records in the table but keeping the database structure in contact whereas the delete does means you delete every day so this is the common difference between truncate and delete and if you want to delete all the records then it is recommended to use truncate because execution wise is more efficient and the drop table and table name is the statement in which you said it will end the structure and all the records were in the table so these are 3 statements and we use to remove tables Dear students our next topic is data manipulation language but here I will explain and you will understand and as we said through the table statement we can remove particular records particular attributes two attributes or some constant delete then we use the order rubber command but if we want to delete some particular rows then we use delete command one thing to remove any attribute or any name because as per the 6 basic properties of the tables every attribute in the table has got a unique name so you have attributes that are less like 20, 25, 30, 50, 100 but still they are limited and the other thing is that they are generally fixed if they are 100 then they are rather fixed although we can change them but that change is not that frequent so it is considered as almost fixed the second situation is the rows the records the tables they keep on changing it keeps on changing in varying situation it varies so when we when we refer to records for that the ideal thing is the primary key when you refer to the primary key to refer to a record obviously you will get a unique record a particular record but it happens that sometimes in many cases it happens that we do not have the access of the primary key that we have to deal with the primary key another thing is that you have to delete 100 records if you have to delete 100 records then if we refer to it through the primary key then you will have to use the delete command 100 times this is the thing you will have to give the primary key again and again so it is also a very laborious and salient process so one thing will be that when we operate on the rows because in that case the general strategy used is that we restrict or we select the rows by a condition like when we studied in a relational algebra we said we give a condition so normally it will keep in mind that when we select the rows whether we have to view it or delete it or change it to a value base that is the primary key or we give it a condition so the condition we have given we will fulfill all the rows if it is the primary key then if it is the primary key then we will get only one record and we will fulfill all the rows so my objective is when you select the attributes you give their precise names because you know their names they are limited but when you select the rows the row is selected and you will definitely receive one row if it exists or if it is not the primary key or unique then you will get multiple rows but this is how you select the rows let's move on first category of the SQL that this statement is used to manipulate to process the data to form different types of operations on the data your DDLs they generally concern with the structure of the different objects of the database whether they are tables indexes attributes their structure that is the objective or concern of the DDL commands the concern of the data with data the data which you will place or access according to the structure defined using the DDL commands the concern is that this command is used to enter to insert to place to put to feed the data into the tables which tables defined as we defined the table defined the course defined the structure defined the structure defined the structure defined the structure defined the que by a here I 3 4 1 live only three and and only tw So, this insert statement, by doing this one by one, you will enter all the students' data in the student's table, in the same way, in the program, in the course, in the course, in the enrolled, in the faculty, in the faculty, and like that. So, in this way, you will use the insert statement. Select. Select is the most used statement in SQL. You have a lot of different variations. We will read this in more detail and you have to understand it very well. And the brief thing right now is basically to access the data. Inserts are used to store the data and selects are used to access it. But the difference is that the purpose of insert is only to enter the data. The record will be moved to your table. But the select statement is the variation. Because it helps you access data in many different ways. Update. Like using the alter command, you make the changes in the structure of the database. Update command says you make changes in the data. Like I gave you an example that before the phone number was different. You have changed. So, this is a change in the data. For that, you use the update command. These were the three major commands that we will read in the DML. Insert statement. Insert records into the tables. This is the objective part. And here is the syntax or general format of this statement. In this, you can see that initially, the same rules that we have learned. Insert is written in capital. Means you have to give this as such and at the same place. Then into. This is optional. If you want to give it to you, then it will work. After that, table. Table because it is written in the lower case. This means that you have to give the table yourself. You will give your own name. And obviously, you will give the name of that table. The table in which you have to enter the record. So, the name of that table will come here. After that, the curly braces will start. Here, we have an option. It is column list. The column list means that you will give the name of those columns here. The values that you want to enter in this. Now, the thing to think about is that when we give the name of the table, then why have we declared the column list as optional? It is optional in this case that if you have a table, then you are going to enter the record. If you are sure that I am giving the values for all the attributes. All the attributes in the table are going to enter the value of everyone. In that case, you do not need to give the column list. You skip it. Dbms will understand automatically that the values of all the attributes are going to come. Another thing is that you have to take care of one more thing. In the way that you defined it, in the way that you defined it, by defining the table columns, if you omit the column list, then you have to give the values in the same order. For example, when you first used your create table statement, first you said student ID, then you said student name, then you said age. The first three attributes were ID, name and age. If you are going to enter a record and you want to give the values of all three, then Dbms will expect that the value that you will write will be the value of the ID. The value that you will write on the second number will be of name and the third will be age. Mind that this is important because if you switch it, first you give the ID, then you give age. Then you give name. The thing is that name is of type, character or text type. When you give age, it will center it numerically. That will be the first one. The second thing is that the age is defined as numeric. That will be the second one. This means that if you are giving all the attributes then skip the column list. But in that case, enter all the values and in the same order in which they have been defined in the table. You will see that. You don't need to take care of the order by accessing it. But in this case, when you are omitting the column list, it should be clear that Dbms should be known that the values that we have, the values that we have given, what is the value? If you are omitting the column list, then obviously it will understand that the first value that is written is the first attribute, and the second one is like that. If you want to give all the attributes, and if you give the column list, then you don't need to keep the order clear. Because in this case, you are specifically giving the names of the attributes. The type of attributes that you have given can be different from that in which you have defined them. The second thing is that when you give the values, then the order will be the same that you have given in the column list. The first attribute that is written will be the first value. The second one, the third one, the third one. Obviously, you cannot skip this because the data type will be combined with it. Another thing is that the number should be equal. In the column list, let us say you have 12 attributes in your table. You want to give 5 values at this time. Mind it, you want to leave 7 out of 12 values. But the attributes that you have declared as not null, you cannot skip them. You will have to give them as well. After that, you will write the values here as such, or you will write the default null, or you will take the expression, which you will enter here. And you can repeat this. When we look at the examples of this, we will discuss it further there. We have discussed the simple syntax of this till now. Dear students, in today's lecture, we discussed the alter table among the commands of our DDL, and the different flavors of it in which we defined the constraints, which we used to add and remove. And alter table, in a sense, is a big blessing, a help in the sense that it releases attention on you that we have put all the things while defining a table or something. Alter table is such a thing that it gives you this facility that if you want to add or remove something later, you can do that. You have got the option. So, from alter table, you can add or remove it. You can add or remove the constraints or deactivate them. We saw how we remove different rows from a table. We want to remove some rows. We want to remove all rows. We want to get rid of the entire table. So, from DDL, we read this statement. Then we moved towards the DML, Data Manipulation Language. The objective of this is to manipulate and process the data. And the process is that you store it and then access it and then operation it. The first statement we have started to read is the Insert statement. And the objective is to enter the data into the database. So far, we have just studied the format of this statement. In our next lecture, we will see different examples of the Insert statement and then we will move on.