diff --git a/Language/SQL/SimpleSQL/Parse.lhs b/Language/SQL/SimpleSQL/Parse.lhs
index e65b8ff..7e152d0 100644
--- a/Language/SQL/SimpleSQL/Parse.lhs
+++ b/Language/SQL/SimpleSQL/Parse.lhs
@@ -1460,6 +1460,7 @@ TODO: change style
 > statementWithoutSemicolon = choice
 >     [keyword_ "create" *> choice [createSchema
 >                                  ,createTable
+>                                  ,createIndex
 >                                  ,createView
 >                                  ,createDomain
 >                                  ,createSequence
@@ -1504,6 +1505,15 @@ TODO: change style
 >     <*> parens (commaSep1 (uncurry TableConstraintDef <$> tableConstraintDef
 >                            <|> TableColumnDef <$> columnDef))
 
+> createIndex :: Parser Statement
+> createIndex =
+>     CreateIndex
+>     <$> ((keyword_ "index" >> pure False) <|>
+>          (keywords_ ["unique", "index"] >> pure True))
+>     <*> names
+>     <*> (keyword_ "on" >> name)
+>     <*> parens (commaSep1 name)
+
 > columnDef :: Parser ColumnDef
 > columnDef = ColumnDef <$> name <*> typeName
 >             <*> optionMaybe defaultClause
@@ -1567,8 +1577,9 @@ TODO: change style
 > colConstraintDef =
 >     ColConstraintDef
 >     <$> (optionMaybe (keyword_ "constraint" *> names))
->     <*> (notNull <|> unique <|> primaryKey <|> check <|> references)
+>     <*> (nullable <|> notNull <|> unique <|> primaryKey <|> check <|> references)
 >   where
+>     nullable = ColNullableConstraint <$ keyword "null"
 >     notNull = ColNotNullConstraint <$ keywords_ ["not", "null"]
 >     unique = ColUniqueConstraint <$ keyword_ "unique"
 >     primaryKey = ColPrimaryKeyConstraint <$ keywords_ ["primary", "key"]
diff --git a/Language/SQL/SimpleSQL/Syntax.lhs b/Language/SQL/SimpleSQL/Syntax.lhs
index 2253dcd..7d1c0be 100644
--- a/Language/SQL/SimpleSQL/Syntax.lhs
+++ b/Language/SQL/SimpleSQL/Syntax.lhs
@@ -454,6 +454,7 @@ I'm not sure if this is valid syntax or not.
 >   | CreateTable [Name] [TableElement]
 >   | AlterTable [Name] AlterTableAction
 >   | DropTable [Name] DropBehaviour
+>   | CreateIndex Bool [Name] Name [Name]
 >   | CreateView Bool [Name] (Maybe [Name])
 >         QueryExpr (Maybe CheckOption)
 >   | DropView [Name]  DropBehaviour
@@ -572,7 +573,8 @@ I'm not sure if this is valid syntax or not.
 >     deriving (Eq,Show,Read,Data,Typeable)
 
 > data ColConstraint =
->     ColNotNullConstraint
+>     ColNullableConstraint
+>   | ColNotNullConstraint
 >   | ColUniqueConstraint
 >   | ColPrimaryKeyConstraint
 >   | ColReferencesConstraint [Name] (Maybe Name)