[MUSIC] Hello everyone, and welcome back. In this video, we're going to
discuss attribute data types. By the end of this video, you will be able
to choose appropriate attribute data types for your data tables and rasters. You will also have foundational knowledge
for using attribute data types in queries. Finally, you'll be able to troubleshoot
problems related to incorrect data types. So first, what do I mean by data types? Data types help us group, store, and
define capabilities for information. To start with, you can think of a few different
types of data, generally speaking. We have numbers, text strings,
dates and times, and some others, these are the human
types that we often think of. Remember how I said data
types define capabilities? Think of it this way,
we can multiply two numbers, but we can't multiply two pieces of text. The result is not defined, so knowing that a value is a number versus
text is important to the computer because it helps to understand the types
of operations we can perform on it. These data types matter everywhere, from
vector attribute tables to the type of data in a roster, and have implications
for use in the field calculator, what tools we can use, map algebra,
definition queries, programming, and more. Remember, also, that all data on computers
goes back to binary information. Binary meaning one of two values,
and, in the case of computers, that's commonly represented as 0s and 1s. What those 0s and 1s mean is up for human interpretation,
which is why we come up with the rules or data types that help us specify what
they mean in particular use cases. If we want to represent the number 84
in binary, we can write it as 1010100, that same binary value interpreted
as text represents the letter T. So, it matters which data type we
consider this information to be, or else we get the wrong data, 84 versus T. It's also worth mentioning that database
storage systems can operate more quickly and efficiently when they
know what type of data to expect. They can optimize the amount
of storage space required and the algorithms used in
processing the data. To computers,
data types break down even further. When I said numbers, I really
meant a whole group of data types. Let's think back to our days in school, remember the difference between whole
numbers, or integers, and real numbers? Whole numbers are non-fractional, in that
they representing number 0, 1, 2, 3, 4, etc., but nothing in between. As a whole number,
we cannot represent 2.340. Computers don't track the number
precision that way and can't represent values between
whole number as integers. If you did want to represent
the value of 2.340, you can instead use a real or decimal
number, which has a decimal place in it, so that we can represent fractions or
non-whole values. Real numbers have the precision
required to track these partial values. We still divide number types even
a little further, though, largely for efficiency of storage and calculation. I won't bore you with all of the details,
but know that computers have a few different integer data
types for dealing with whole numbers. This is widely the same across large
segments of computers, but it does vary, so let's talk specifically about ArcGIS. Data formats in ArcGIS have short
integers and long integers. Short integers can contain integer
values between -32,768 and +32,767. You'll get used to those numbers, even though they probably seem
oddly specific to you right now. It comes from how many binary
bits we use to store the number. That number range allows for
65,535 possible values and requires 16 binary bits to accurately
store any number within that range, regardless of which
number you are storing. In contrast, a long integer uses 32
binary bits, so twice as much, but it can store values between -2 billion or
so and +2 billion or so. The difference in which to choose
comes entirely down to the data you need to store. We don't need to use all
the space of a long integer if we're only storing degree slope,
which would be values 0 to 90. We can use a short integer for that,
a long integer won't harm us, but it will use more disk space. In addition to our integer numbers,
we have the decimal or floating point numbers. We once again have the two number types
here, traditional or single precision floating point numbers and the double
precision glaring point numbers. Double precision numbers are exactly what
they sound like, they can store larger, more precise decimal numbers than
floating point numbers can, but they use twice the storage space. These numbers are often called floats and
doubles together. Just to help you remember the word float, I'll tell you that the term
floating point refers to the fact that the decimal point can metaphorically
float to any point it needs to in the number based on the precision of
the information we want to store. That may seem obvious that it can move
to whatever point it needs to be in, but it's incredibly important when
representing fractional values in binary as computers do. Floats and doubles are more
computationally expensive than integers, so you only use them when you need to. A single precision float uses the same
amount of space as a long integer but can store incredibly large values
compared to a long integer, whether or not you're using the decimal place. It can store values between -10 to
the 38th power and +10 to the 38th power. A double-precision number is larger still,
storing extremely large values between -10 to the
308th power and +10 to the 308th power. These are the data types you want to use
if you need to store very large numbers. Let's do just a really quick review. We can represent small,
whole numbers as short integers and large, whole numbers as long integers. We can also represent real or decimal
numbers as fractional values, as floating point or double-precision numbers,
whether or not we need the decimal values. If we need to store incredibly large
numbers, we can use floating point and decimal values. Okay, but
what if we need to store some text? We use strings for that. The term string can take
some getting used to, but I always like to imagine
that in a text string, the letters are each individually
tied to the next letter by a string. If I was to pick it up by one hand, all of
the letters would dangle here on a string. Different systems have different
ways of storing strings and different limitations on them, but
in ArcGIS it's commonly just called text. In file-geo databases, you don't really
have any limitations like you do with numbers where you need to plan ahead for
the type of data you store. In other systems, you sometimes need to
specify just the length of the text you want to store so that the database can set
aside the appropriate amount of space. Now, some of you are thinking, what if
I store a number as part of my text? Well, that's okay, the text
representation of that number gets stored rather than the numerical representation. It's a version that you're not
going to be doing any math on, but it still will appear to the user as
the number you want to see it as in the midst of your other text. Sometimes, numbers are stored as text,
when the numbers represent categories, rather than distinct numerical values. We have a few other things to talk about
when we're talking about data types and data tables. The first of these is the concept of the
null value, null values are just blanks, they mean that a value is not defined. It's not the same as zero, though, no matter how much we
often want to make it be zero. Null means we don't actually know
how much of something there is. We don't have the data, whereas zero means
we know how much of something there is, and it is zero. Null values often appear in data tables
that already have records in them when we add a new field but
haven't yet populated our values. The database adds the new field
with null values representing that there is no value for that field yet. Null values can be
something to watch out for, though, because they can break things. Doing math on a record with a null value
can result in null values rather than zeros, and
data cleanup can then be required. The last thing I want to talk about
when we're talking about fields is how to name them. Come up with a consistent scheme
that you will use that helps you by using predictive names and helps you
easily understand them when you see them. Be somewhat descriptive and
most importantly be consistent. You also should not use spaces in your
names as most databases don't support them in field names because it can make
things ambiguous when running commands. I like using underscores between words
myself, but some people like using a method called camel case, where the
first letter of every word is capitalized, but there are still no
spaces between them. It gets the camel case name because,
since the first letter is capitalized, you get these humps in the words
like humps on a camel's back. Okay, that's it for this lesson. In this lesson, you learned the various
field and raster data types and what types of values they can store. You learned how to separate out
the different types of numbers and about text strings. You also learned about the concept
of the null value, and that they can create tricky situations. And lastly,
you learned how to name fields. In the next lesson,
we'll put some of this in practice and go more in depth on how to use
attribute tables in ArcGIS. See you then.