diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.10.6.0
+
+* Added `int2` functions and instances (thanks to @fpringle)
+
 ## 0.10.5.0
 
 * Added `Opaleye.Inferrable`
diff --git a/opaleye.cabal b/opaleye.cabal
--- a/opaleye.cabal
+++ b/opaleye.cabal
@@ -1,6 +1,6 @@
 name:            opaleye
 copyright:       Copyright (c) 2014-2018 Purely Agile Limited; 2019-2025 Tom Ellis
-version:         0.10.5.0
+version:         0.10.6.0
 synopsis:        An SQL-generating DSL targeting PostgreSQL
 description:     An SQL-generating DSL targeting PostgreSQL.  Allows
                  Postgres queries to be written within Haskell in a
diff --git a/src/Opaleye/Aggregate.hs b/src/Opaleye/Aggregate.hs
--- a/src/Opaleye/Aggregate.hs
+++ b/src/Opaleye/Aggregate.hs
@@ -19,6 +19,7 @@
        -- * Basic 'Aggregator's
        , groupBy
        , Opaleye.Aggregate.sum
+       , sumInt2
        , sumInt4
        , sumInt8
        , count
@@ -140,6 +141,9 @@
 -- use 'sumInt4' or 'sumInt8' instead.
 sum :: Aggregator (F.Field a) (F.Field a)
 sum = A.unsafeSum
+
+sumInt2 :: Aggregator (F.Field T.SqlInt2) (F.Field T.SqlInt8)
+sumInt2 = fmap F.unsafeCoerceField Opaleye.Aggregate.sum
 
 sumInt4 :: Aggregator (F.Field T.SqlInt4) (F.Field T.SqlInt8)
 sumInt4 = fmap F.unsafeCoerceField Opaleye.Aggregate.sum
diff --git a/src/Opaleye/Internal/Constant.hs b/src/Opaleye/Internal/Constant.hs
--- a/src/Opaleye/Internal/Constant.hs
+++ b/src/Opaleye/Internal/Constant.hs
@@ -74,6 +74,9 @@
 instance D.Default ToFields Sci.Scientific (Field T.SqlNumeric) where
   def = toToFields T.sqlNumeric
 
+instance D.Default ToFields Int.Int16 (Field T.SqlInt2) where
+  def = toToFields $ T.sqlInt2 . fromIntegral
+
 instance D.Default ToFields Int (Field T.SqlInt4) where
   def = toToFields T.sqlInt4
 
diff --git a/src/Opaleye/Internal/Inferrable.hs b/src/Opaleye/Internal/Inferrable.hs
--- a/src/Opaleye/Internal/Inferrable.hs
+++ b/src/Opaleye/Internal/Inferrable.hs
@@ -24,7 +24,7 @@
 import           Data.Typeable (Typeable)
 import           Data.UUID.Types (UUID)
 import qualified Database.PostgreSQL.Simple.Range as R
-import           GHC.Int (Int32, Int64)
+import           GHC.Int (Int16, Int32, Int64)
 
 -- | Despite its name, 'Inferrable' doesn't provide any inferability
 -- improvements itself, it's just a conveniently-named newtype wrapper
@@ -50,6 +50,9 @@
 inferrableDef = inferrable D.def
 
 -- FromField
+
+instance int16 ~ Int16 => D.Default (Inferrable FromField) T.SqlInt2 int16 where
+  def = inferrableDef
 
 instance int ~ Int => D.Default (Inferrable FromField) T.SqlInt4 int where
   def = inferrableDef
diff --git a/src/Opaleye/Internal/PGTypesExternal.hs b/src/Opaleye/Internal/PGTypesExternal.hs
--- a/src/Opaleye/Internal/PGTypesExternal.hs
+++ b/src/Opaleye/Internal/PGTypesExternal.hs
@@ -26,13 +26,16 @@
 import qualified Data.Time.Compat as Time
 import qualified Data.UUID.Types as UUID
 
-import           Data.Int (Int64)
+import           Data.Int (Int16, Int64)
 
 import qualified Database.PostgreSQL.Simple.Range as R
 
 instance C.SqlNum SqlFloat8 where
   sqlFromInteger = pgDouble . fromInteger
 
+instance C.SqlNum SqlInt2 where
+  sqlFromInteger = pgInt2 . fromInteger
+
 instance C.SqlNum SqlInt4 where
   sqlFromInteger = pgInt4 . fromInteger
 
@@ -87,6 +90,9 @@
 
 pgNumeric :: Sci.Scientific -> Field PGNumeric
 pgNumeric = IPT.literalColumn . HPQ.NumericLit
+
+pgInt2 :: Int16 -> Field PGInt2
+pgInt2 = IPT.literalColumn . HPQ.IntegerLit . fromIntegral
 
 pgInt4 :: Int -> Field PGInt4
 pgInt4 = IPT.literalColumn . HPQ.IntegerLit . fromIntegral
diff --git a/src/Opaleye/Internal/RunQuery.hs b/src/Opaleye/Internal/RunQuery.hs
--- a/src/Opaleye/Internal/RunQuery.hs
+++ b/src/Opaleye/Internal/RunQuery.hs
@@ -45,7 +45,7 @@
 import qualified Data.Scientific as Sci
 import qualified Data.String as String
 import           Data.UUID.Types (UUID)
-import           GHC.Int (Int32, Int64)
+import           GHC.Int (Int16, Int32, Int64)
 
 -- { Only needed for postgresql-simple FieldParsers
 
@@ -178,6 +178,9 @@
   def = defaultFromField
 
 instance DefaultFromField T.SqlNumeric Sci.Scientific where
+  defaultFromField = fromPGSFromField
+
+instance DefaultFromField T.SqlInt2 Int16 where
   defaultFromField = fromPGSFromField
 
 instance DefaultFromField T.SqlInt4 Int where
diff --git a/src/Opaleye/SqlTypes.hs b/src/Opaleye/SqlTypes.hs
--- a/src/Opaleye/SqlTypes.hs
+++ b/src/Opaleye/SqlTypes.hs
@@ -9,6 +9,7 @@
   sqlDouble,
   sqlInt8,
   sqlNumeric,
+  sqlInt2,
   -- ** Types
   SqlInt4,
   SqlFloat8,
@@ -125,7 +126,7 @@
 import qualified Data.ByteString as SByteString
 import qualified Data.ByteString.Lazy as LByteString
 import qualified Data.CaseInsensitive as CI
-import           Data.Int (Int64)
+import           Data.Int (Int16, Int64)
 import           Data.Scientific as Sci
 import qualified Data.Text as SText
 import qualified Data.Text.Lazy as LText
@@ -153,6 +154,9 @@
 
 sqlNumeric :: Sci.Scientific -> F.Field SqlNumeric
 sqlNumeric = P.pgNumeric
+
+sqlInt2 :: Int16 -> F.Field SqlInt2
+sqlInt2 = P.pgInt2
 
 sqlInt4 :: Int -> F.Field SqlInt4
 sqlInt4 = P.pgInt4
