How to add named not null constraint - mysql

I am trying to add a NOT NULL constraint by the name 'NN_Grade' in existing column 'grade'.
but not able to do getting error -
My question is -
Add a constraint (NN_Grade) in table Empl that declares column Grade NOT NULL.
My Command which I tried-
ALTER TABLE students ADD CONSTRAINT NN_Grade NOT NULL(adm_no);
Error -
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL(adm_no)' at line 1
Need guidance

ALTER TABLE students ADD CONSTRAINT NN_Grade CHECK (adm_no IS NOT NULL);

Why not just make the column not nullable, i.e.
ALTER TABLE Empl MODIFY Grade *TYPE* NOT NULL;
SqlFiddle here
Note that your question mentions table Empl whereas your answer uses students

Related

getting error in check constraint with modulus operator

I am implementing a check constraint on a column such that the inserted value is always a multiple of 11, which is below:
create table multinum(empid int(4) primary key, check (empid%11==0));
But I am getting the error
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '==0))' at line 1
So I removed one equal operator but now it is accepting those values as well that are not multiple of 11, like 12.
What is the problem in my statement? Is there any other way of doing this?
EDIT
I also tried below statement, but to no effect:
create table multinum(empid int(4) primary key check (empid%11==0));
IT works just fine.
Copy the text from the example and try it in your database
CHECK constraints only work with mysql 8 prior versions didn't implement it completely.
create table multinum(empid int(4) primary key, check (empid%11=0));
✓
INSERT INTO multinum VALUES(10);
Check constraint 'multinum_chk_1' is violated.
INSERT INTO multinum VALUES(11);
✓
INSERT INTO multinum VALUES(22);
✓
INSERT INTO multinum VALUES(12);
Check constraint 'multinum_chk_1' is violated.
db<>fiddle here

PhpMyAdmin: MySql Field in one table refer to field in another table

I have created a database with two tables user and userdiary.
In the "user" table I have id and email fields.
In the "userdiary" table I have a field called email. I want to link this field with the one in the "user" table.
I'm using phpmyAdmin to add sql statements.
I tried doing ALTER TABLE userdiary FOREIGN KEY (email) REFERENCES user(email)
but I get the error #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FOREIGN KEY (email) REFERENCES user(email)' at line 1
I looked at many forums but could not find a solution to this issue.
It will be great if any of you could help me resolve this issue.
Thanks.
You are missing the keyword add:
ALTER TABLE userdiary ADD FOREIGN KEY (email) REFERENCES user(email)
----------------------^

error in applying auto increment by 1 on specific column

I have a table name article and a column name articleid. I want that every time i enter the data in the table then value in column of articleid should be incremented to 1. I am trying to do like this.
ALTER TABLE article MODIFY COLUMN articleid INT auto_increment
But it generates this error statement:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1' at line 1
Your error message is
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=1' at line 1
But the query you've shown us is
ALTER TABLE article MODIFY COLUMN articleid INT auto_increment
Note =1 is not in the query you've shown us, so you are running some code that you are not intentionally trying to run. The syntax for your ALTER TABLE query looks correct.
Update: To ensure your MySQL increment by 1, set the MySQL configuration setting of auto_increment_increment = 1. Note in MySQL, this is a global setting and not a table or column setting.
http://dev.mysql.com/doc/refman/5.0/en/replication-options-master.html#sysvar_auto_increment_increment
A working SQL Statement to accomplish this is:
ALTER TABLE article CHANGE articleid articleid INT NOT NULL AUTO_INCREMENT
Please make sure that you've assigned the Primary key to the column 'articled'
If not, run this statement:
ALTER TABLE article ADD PRIMARY KEY(articled)
Because auto_increment can only be applied to the column that is the primary key of your table.
If it's not working at all, you could just start over by dropping your table (all data is lost!)
DROP TABLE article
And re-create it with all properties and keys assigned properly.
CREATE TABLE article (
articleid int NOT NULL AUTO_INCREMENT,
articletitle varchar(100) NOT NULL,
PRIMARY KEY (articleid)
)

how to add an auto Increment to a table which has composite key means two primary keys

I have two primary keys in one table. First one is PropertyID and second one is ImageID. I want to to add an auto increment with starting = 1000 to the PropertyID. I tried to use the command below, but get this error message:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AUTO_INCREMENT = 1000' at line 3`
Here is the command:
Alter Table Properties
Alter Column `PropertyID` AUTO_INCREMENT = 1000;
You don't need to add ALTER COLUMN
ALTER TABLE `Properties` AUTO_INCREMENT =1000

drop primary key returned error 1064 in my case

my table
http://i.imgur.com/ifJik0T.jpg
my query
ALTER TABLE tasks DROP PRIMARY KEY task_name;
I got this error:
'#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'task_name' at line 1'
Column name is not required, try this:
ALTER TABLE tasks DROP PRIMARY KEY
Reference: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
Looking at your picture, it looks like task_name is column that you set up to have a foreign key relationship. If that is the case, you can't drop a FK by deleting the column. You have to instead use the name of the FK relationship you gave when you created the FK.
If you want to get rid of the task_name column you have to use the DROP COLUMN syntax instead.
Remember, You should remove the autoincrement property before dropping the key. If you have any foreign key reference, first remove them and drop your primary key.
ALTER TABLE tasks DROP PRIMARY KEY;
You are trying to delete column task_name which is not primary key. it can be easily drop by this query
ALTER TABLE tasks DROP task_name