NOT NULLs With Default
I'm cleaning up a database but I see this all over the MySQL world. I understand that having defaults speeds things up. But what I don't understand is why someone would make a field NOT NULL and then put a null default in it? This makes no sense to me at all. Is this the fault of using phpMyAdmin to create tables?
Here's a sample:
CREATE TABLE `listnames` (
`id` int(11) NOT NULL auto_increment,
`list_name` char(30) NOT NULL default '',
`display_name` char(100) NOT NULL default '',
`active` char(3) NOT NULL default '',
`last_modified` timestamp(14) NOT NULL,
UNIQUE KEY `id` (`id`)
)
Ok, so you don't want NULLs in your data but there is no default. It's very likely that the data will be wildly differently. So setting a default makes no sense -- or does it?
I don't want to drop the default '' if it makes sense & I'm just not getting it.
View Complete Forum Thread with Replies
Related Forum Messages:
NULLS
if you had a table with columns: Prefix_ID ---> data for say 75% of rows normalized to Mr/Mrs./Ms FirstName ---> data for 50% of rows MiddleName ---> data for 25% of rows LastName ---> data for 100% of rows Suffix_ID ---> data for 5% of rows normalized to Jr./Sr./III would you: 1.) make suffix_ID NULL-able ? 2.) make any other column NULL-able? 3.) make Suffix_ID default to 1 where Suffix_ID 1 = ''? 4.) make FirstName and/or MiddleName default to '' ? or other alternatives/suggestions for best practices?
View Replies !
NULLS 2
if I have a table for: PHONE_NUMBERS that can be associated with FKeys to one or more COMPANY_ID and/or a PERSON_ID how would you construct the columns/relationships? Assuming a PHONE_NUMBER_ID as PK then a n:m relationship to both the COMPANY and the PERSON tables??? (i.e. a new table with a compound PK of phone_number_id plus company_id plus person_id) but then I'd have to allow either the company_id or the person_id to be null wouldn't I?
View Replies !
Finding NULLS
I am querying with the following hoping NULL and not NULL: SELECT * FROM pet WHERE sex='NULL'; returns empty set, but there should be one record. SELECT * FROM pet WHERE death<>'NULL'; also returns empty set when there should be one record.
View Replies !
Joins And Nulls
I have three tables containing information about companies. The first lists companies, each with an id. The second defines what information (attributes) can be held about each company and format it takes (eg address, postcode, owner, etc). The third table lists the specific values of each attribute for each company. Each attribute value for each company has its own line. Now, I am trying to select data from this group of tables. The problem is that not every company has complete information. Some, for example, don't have a postcode. But where they do, I'd like to display that. Which brings me to this SQL: Code:
View Replies !
Concatenating Nulls
I would like to concatenate two columns where one is potentially null. The result I get now is if one is null, the concatenated value is null. Here's what I would like: Column1 = '123', Column2 = null, return '123' (not null) Column1 = null, Column2 = 'abc', return 'abc' (not null) Column1 = '123', Column2 = 'abc', return '123abc' The statement that isn't working is something like: SELECT CONCAT(Column1,Column2) FROM Table WHERE id=12
View Replies !
Count Of NULL And NOT NULLS
How would I write a query to count the number of instances where a the PREP field is NULL and when it is not null. I know how to do it seperately, can I get the numbers in the same query. I want something like this: Project #PREP_NOTNULL #PREP_NULL
View Replies !
Ignoring NULLs In Indexes
Access has a nice feature that allows creation of indexes WITH IGNORE NULL which means that records with null values are ignored in the index, so the index will be shorter and faster to search. Is there any equivalent for this in MySQL?
View Replies !
Insert From File Gets NULLS
I am atmysqlting to insert data into a table via file import using the... insert into table_name values (...) command. It imports the correct number of records, but all the fields are NULL when I select * the table. If I manually enter a record using the same exact command as in my import file it works fine.
View Replies !
Equality Testing With NULLs?
When I do "SELECT count(1) FROM table_name WHERE 0 <> 2", I get the total number of rows in the table. When I do "SELECT count(1) FROM table_name WHERE NULL <> 2", I get 0. Shouldn't I the same answer as I did with WHERE 0 <> 2?
View Replies !
Group By Without Grouping NULLs
By default, GROUP BY field groups all records that have NULL as value for field. Now I need to do a query in which only non-NULL values are grouped. As a first atmysqlt, I did a UNION of a query grouping non-NULL values, and a query only selecting NULL values. Now I need a query that groups two different fields, and in both cases only non-NULL values should be grouped...
View Replies !
Unexpected NULLs When Using 'left Join'
I'm trying to select all records from a table, plus the appropriate values from other tables to which my first table has pointers. I quickly discovered the benefits of LEFT JOIN over WHERE clauses but then found that I was getting more NULLs than expected. For example: Code:
View Replies !
Unique Index With Nulls Where Is It Stored
The memory space defined by DataMemory is also used to store ordered indexes, which use about 10 bytes per record. Each table row is represented in the ordered index. A common error among users is to assume that all indexes are stored in the memory allocated by IndexMemory, but this is not the case: Only primary key and unique hash indexes use this memory; ordered indexes use the memory allocated by DataMemory. However, creating a primary key or unique hash index also creates an ordered index on the same keys, unless you specify USING HASH in the index creation statement. This can be verified by running ndb_desc -d db_name table_name in the management client. if i issue a : create unique index idx_b on tablename(b); where b can contain nulls is this index stored in index memory and in data memory or just data memory?
View Replies !
SQL Select Statement Returning NULLS
when I run this SQL qry: SELECT DATE_FORMAT(recDate, '%Y-%m-%d') AS a_date, recTitle, recBody, recID FROM j_plug ORDER by recID DESC LIMIT 15; The 'recTitle' column often returns a NULL. Is there any way I can change the SQL statement to return an actual value if there is a NULL, such as 'NOTHING'. This is probably a silly request - obviously if it is a NULL, then that should be that. Trouble is that I am having a problem with my ASP code when the value is NULL, and it'd be useful if it returned an actual value for NULL records.
View Replies !
NULLs And Empty Strings, Treating Them Equally?
I've built a database class in PHP which, when given an empty string for a field value, converts it to NULL, simply because although their technically not the same thing, as far as useful data goes, they are equally useless. I want to use the NOT NULL flag on fields to dictate which fields should have data, and which shouldn't, and really, an empty string is no data. I was just wondering what other peoples opinion was on this, and weather or not it is a reasonable restriction to enforce, I cant think of any situation where data is required for a field (NOT NULL), and an empty string would be a reasonable value.
View Replies !
LOAD DATA INFILE, Updates All Other Fields With Nulls.
I am using the following command to update three fields ONLY in the destination table. The infile that I am using was created using: .......................................................... select code, desc2 , qty_on_hand from plu_tmp into outfile "c:mp.txt" .......................................................... LOAD DATA INFILE "c:mp.txt" REPLACE INTO TABLE `plu` (code, desc2 , qty_on_hand) I expect to update only the three fields, without touching the other fields. What happens is that the specified fields are updated, and all the rest of the fields are reset to nulls as they have not been specified. Is there any way I can use the load inifile to insert / Update just the specified fields.
View Replies !
NULLS (was "Is This Normal?")
to have empty cells in the results? like...i have one column called 'specs' but only a few rows in the result have actually a value in it, the rest is NULL i know beforehand that the result will be like this most of the time...is it bad?
View Replies !
Specifying Default ''
does specifying default make the table smaller, like setting_title varchar(32) NOT NULL default '', instead of setting_title varchar(32) NOT NULL, make the entire row smaller, instead of a blank 32?
View Replies !
Bad? Id Int(11) DEFAULT '0'
I'm trying to install the authlib module that's required for the open-source iOutliner web-based outliner (http://ioutliner.com), but it fails halfway through when creating the tables: //Bad! /* SQL Error: Invalid default value for 'id' */ $query = mysql_query("CREATE TABLE authlib_data ( id int(11) DEFAULT '0' NOT NULL auto_increment, name text NOT NULL, email text NOT NULL, age int(3) DEFAULT '0' NOT NULL, sex text NOT NULL, school text NOT NULL, PRIMARY KEY (id) )"); //Bad! /* SQL Error: Invalid default value for 'id' */ $query = mysql_query("CREATE TABLE authlib_login ( id int(11) DEFAULT '0' NOT NULL auto_increment, username text NOT NULL, password text NOT NULL, PRIMARY KEY (id) )"); According to Google, DEFAULT '(0)' seems a legit instruction. What's wrong with this?
View Replies !
Default Date??
I have a field (called active) of type DATE and I want to add a default value. The default value must be the current date. Is this possible to do this in the table create statement? CREATE TABLE mytable ( id INTEGER NOT NULL AUTO_INCREMENT, active DATE DEFAULT ?????, PRIMARY KEY (id), )
View Replies !
Default Permissions
This is a fairly simple question but I'm new to mySQL. To log on to mySQL I need to type at the prompt: mysql --user='username' --password='password' as opposed to just typing mysql and being recognized without having to type identification. Anyone know how I can change this?
View Replies !
Timestamp Default Value
I am using: mysql Ver 12.22 Distrib 4.0.18, for sun-solaris2.9 (sparc) And I do this: mysql> create table test (a timestamp default null, b timestamp default null); Query OK, 0 rows affected (0.03 sec) mysql> desc test; +-------+---------------+------+-----+----------------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------+------+-----+----------------+-------+ | a | timestamp(14) | YES | | NULL | | | b | timestamp(14) | YES | | 00000000000000 | | +-------+---------------+------+-----+----------------+-------+ 2 rows in set (0.00 sec) Can anyone tell my why the default value for column 'b' is not NULL as well?
View Replies !
Changing A Default Value
i have a column that originally assigned a default integer value (1) to a column that contains about 1000 records. now, i'd like to replace all those with an incremented value. i figured out how to change it so newly added data is incremented, but cant seem to figure out the command to go back and change all data from the beginning so that it is now incremented.
View Replies !
MySQL Default Value
When a customer places an order, the database sets the default at "3" which means "not complete" when it is complete and billed, It is assigned a "1" I want to have it be assigned a new number on all future orders, but no not want it to go back and reset every single past order. If I change the default value number in the database, will it only apply to new orders, or will it change every single record to the new default regardless of their current status?
View Replies !
Set Default Collation
However I recently tried MySQL 4.1.x and noticed that there have been some changes. My questions are:- 1) The default collation setting is Latin1_swedish_ci. What do I need to change this to in order for my old tables to import correctly? Currently special chars like tm <- trademark import as ? <-Question Marks? 2) How do I set my own default? 3) Is there any way to export a new database back to an old version of MySQL eg 4.1.x -> 4.0.x?
View Replies !
Default Character Set
I have a problem with character set client and connection. I have all tables in cp1250_czech_cs collation and I have set a global session character_set_client, character_set_connection and character_set_result to cp1250. When I make a connection to the database in PHP (mysqli_connect()) and execute a query SHOW SESSION VARIABLES; it return that character_set_client, character_set_connection and character_set_client is set to latin1. What can I do, when I want to set this variables to cp1250 as default? (and not use SET NAMES cp1250; in each script).
View Replies !
[Default] Order
I have a MySQL database with a table that I assumed "by default" would insert records in chronological order - i.e. just add each record to the end of the table. What is happening however is that 'some' records are inserted just somewhere in the file - not at the end of the table. I can tell this because there is a date field in the table. How do records get added to a database? by key, index, ???? Is there some way to force a record to be added to the bottom of the table? Key info about the table: . there is not a primary key. . there are 3 index's
View Replies !
Field Default Value
This may have already been asked. But I couldn't find anything. (Maybe I am asking the wrong question).How do I find out the default value of a field using php? Something similar to mysql_field_name() or something.
View Replies !
Overriding Default
Can I change the default minimum length of words in Fulltext Search without having to ask my web hosting company to do it? I mean, change the value using through PHP script?
View Replies !
Timestampt Default
When I create a timestamp field in phpmyadmin it's default is always 000-00-00 00:00:00 instead of just a number. Anyone know why and how to change this? I tried deleting the default but when I hit save it puts it back in.
View Replies !
Default Field
There is a table, with some fields including an auto_increment field, some more integer type, text,varchar etc type of fields. 2. I am trying "SELECT * FROM myTable" [No ORDER BY clause used] question: Which field will be used by default, for ordering the records? Will it be the primary key(which is auto_increment) always?
View Replies !
Default Autocommit=0?
Is there any way I can set up mysql client so that the default value for autocommit is 0? This is for when I'm running the command line client on linux/windows or the Query Browser on windows. I would feel much more comfortable that I'm not going to accidentally put in the wrong where clause and update or delete a bunch of records. I like to use the number of rows affected by my query as a double-check that I've done what I intended to do, and then commit it. I've searched around but could not find any mention of this issue -- all of the postings on autocommit that I found have to do with accessing mysqlserver from a program such as java or PHP.
View Replies !
DEFAULT DATE
I need a sistem variable for get the actual date when I create a table. I use sysdate in Oracle and it works, but i have not idea about mysql. I want to use into a create table like this: CREATE TABLE users( id_user int PRIMARY KEY, registrationday date DEFAULT sysdate );
View Replies !
How Set Default To CURRENT_TIMESTAMP?
I have a column of type datetime which I would like to have a default value of CURRENT_TIMESTAMP. I have tried: ALTER TABLE table1 ALTER dateEntered SET DEFAULT CURRENT_TIMESTAMP but this gives a syntax error, probably because it wants a literal at the end there.
View Replies !
Default Value For Date
CREATE TABLE ... `birthdate` DATE DEFAULT CURRENT_DATE(), ... doesn't work - produces syntax error. Anybody know how to declare current date as the default value for a DATE column?
View Replies !
DATE DEFAULT ...
If I want to use date for my column and I want to set a default for it what do I specify? I know for timestamp I can use current_timestamp but what do I use for date?
View Replies !
DATETIME - Set Default Value
I have a database table (MYSQL v5.0.67) in which I store several date fields. I have set these all to be not null and to have a default value of '0000-00-00 00:00:00' e.g. `last_login` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', However when I run my create database script (generated from a schema design in MYSQL Workbench) it complains as follows: Error Code : 1067 Invalid default value for 'last_login' I leave it as nullable with no default value and run the script to create the table which works fine. I can then use a tool like SQLyog to alter the table generated and set this to be not null with a default of 0000-00-00 00:00:00 and it is happy to alter the table. Obviously this is not ideal and it should work straight from the script.
View Replies !
What Is Default Database Name
I want to specify access options for MySQL. Please tell what is MySQL hostname, MySQL username, MySQL passoward & MySQL database name for the connection to the MySQL server.
View Replies !
Select Default Value
two tables: master_table ( id int not null, work_id int not null, sub_work_id int not null, primary key(id) ) ref_table ( id int not null, work_id int not null, sub_work_id int null, name varchar(20), primary key(id) )
View Replies !
Use Now() As Default Value For A Column
I cannot find any good material on this, and it seems like it should be so easy. I have two columns in my table, creation_date and last_modified_date. I want the creation_date field to bear the default value of Now(), so that when a row is created the timestamp is there. This value should never change, and should only be set on row creation. The last_modified_date field I want to change on the UPDATE only. It seems that this may be possible using the TIMESTAMP type and the default values there but what I read is that they will update everytime a row is altered. This would be dead-simple if I could just specify Now() as the default value.
View Replies !
How Do I Set A Default Date Value
I have tried putting in now() via phpmyadmin as the default value and my new record entries return a value of '0000-00-00'. My purpose is to have a default created_date of the time mySql writes each new row.
View Replies !
Default Delimiter Not Set
No query specified. The only way to end it was CTRL+C. Using g and G work normally, and if I manually type "DELIMITER ;", then I can use the semicolon just fine (until I log out and back in again.) Is there some configure option I need to use to make sure the semicolon is the default delimiter?
View Replies !
Default Block_size
I would like to ask what would be the default block_size in mysql 5.1.33. Just like in oracle, the block_size may vary or depend on the OS block_size. Is the block_size in mysql same with each storage engines.
View Replies !
Default Value For A Column, When Value Is Not Specified
We have migrated our database from DB2 to MYSQL. In DB2, there is an option like 'GENERATED BY DEFAULT AS IDENTITY' which will cause DB2 to generate unique values for the identity column during insert operations if no value is specified for the identity column. However, if a value is specified for the identity column, DB2 will use it in the insert operation. In MYSQL, is there an option like this?
View Replies !
Default Value On A Column
Hey guys, my hope is to quickly move from SQL2005 to mySQL and i'm hitting the GUID roadblock. If mySQL can't do a GUID by default on a column, I've got to rewrite a ton of my application around that. Tell me with 5.0 this is possible now? Or that there's some cool work-around?
View Replies !
DATETIME DEFAULT Now().
I would like to know in what way, I can set the default value of a DATETIME field to Now() so I don't need to put the code in my scripts. ALTER TABLE `tbltest` CHANGE `TheDate` `TheDate` DATETIME DEFAULT 'Now()' With the ' ' it doesn't error, but it's probibly just sending the string "Now()" and I get the default date 0000-00-00. If I take off the ' ' I get an error. Anyone know a way I can set my default value for my DATETIME field to automatically insert the date and time with each new record?
View Replies !
|