@enjoys/context-engine 1.4.2 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/codeActions/azcli.json +47 -26
- package/data/codeActions/bicep.json +47 -26
- package/data/codeActions/cameligo.json +47 -26
- package/data/codeActions/clojure.json +47 -26
- package/data/codeActions/coffee.json +40 -26
- package/data/codeActions/crontab.json +21 -0
- package/data/codeActions/css.json +119 -111
- package/data/codeActions/cypher.json +47 -26
- package/data/codeActions/dart.json +190 -31
- package/data/codeActions/doctest.json +47 -26
- package/data/codeActions/dotenv.json +23 -1
- package/data/codeActions/ecl.json +47 -26
- package/data/codeActions/elixir.json +47 -26
- package/data/codeActions/flow9.json +47 -26
- package/data/codeActions/freemarker2.json +47 -26
- package/data/codeActions/html.json +21 -0
- package/data/codeActions/ini.json +23 -1
- package/data/codeActions/json.json +23 -1
- package/data/codeActions/julia.json +47 -26
- package/data/codeActions/less.json +40 -26
- package/data/codeActions/lexon.json +47 -26
- package/data/codeActions/liquid.json +47 -26
- package/data/codeActions/m3.json +47 -26
- package/data/codeActions/markdown.json +21 -0
- package/data/codeActions/mdx.json +47 -26
- package/data/codeActions/mips.json +47 -26
- package/data/codeActions/msdax.json +47 -26
- package/data/codeActions/mysql.json +47 -26
- package/data/codeActions/nestjs.json +124 -124
- package/data/codeActions/objective-c.json +47 -26
- package/data/codeActions/pascal.json +47 -26
- package/data/codeActions/pascaligo.json +47 -26
- package/data/codeActions/pgsql.json +47 -26
- package/data/codeActions/pla.json +47 -26
- package/data/codeActions/postiats.json +47 -26
- package/data/codeActions/powerquery.json +47 -26
- package/data/codeActions/qsharp.json +47 -26
- package/data/codeActions/r.json +69 -71
- package/data/codeActions/razor.json +47 -26
- package/data/codeActions/redis-cli.json +21 -0
- package/data/codeActions/redis.json +47 -26
- package/data/codeActions/redshift.json +47 -26
- package/data/codeActions/restructuredtext.json +47 -26
- package/data/codeActions/sb.json +48 -26
- package/data/codeActions/scala.json +154 -26
- package/data/codeActions/scheme.json +48 -26
- package/data/codeActions/scss.json +40 -26
- package/data/codeActions/shadcn.json +112 -112
- package/data/codeActions/shell.json +2 -2
- package/data/codeActions/sol.json +47 -26
- package/data/codeActions/sparql.json +47 -26
- package/data/codeActions/st.json +47 -26
- package/data/codeActions/systemd.json +21 -0
- package/data/codeActions/systemverilog.json +47 -26
- package/data/codeActions/tailwindcss.json +83 -76
- package/data/codeActions/tcl.json +47 -26
- package/data/codeActions/toml.json +23 -1
- package/data/codeActions/twig.json +47 -26
- package/data/codeActions/vb.json +47 -26
- package/data/codeActions/wgsl.json +47 -26
- package/data/codeActions/xml.json +21 -0
- package/data/codeActions/yaml.json +23 -1
- package/data/codeLens/abap.json +40 -7
- package/data/codeLens/angular.json +141 -22
- package/data/codeLens/apex.json +40 -7
- package/data/codeLens/awk.json +28 -1
- package/data/codeLens/azcli.json +30 -2
- package/data/codeLens/bicep.json +40 -17
- package/data/codeLens/c.json +27 -1
- package/data/codeLens/caddy.json +28 -1
- package/data/codeLens/cameligo.json +40 -17
- package/data/codeLens/clojure.json +40 -17
- package/data/codeLens/coffee.json +40 -17
- package/data/codeLens/cpp.json +14 -0
- package/data/codeLens/crontab.json +28 -1
- package/data/codeLens/csharp.json +7 -0
- package/data/codeLens/cypher.json +40 -26
- package/data/codeLens/docker-compose.json +40 -26
- package/data/codeLens/dockerfile.json +40 -26
- package/data/codeLens/doctest.json +30 -2
- package/data/codeLens/dotenv.json +40 -26
- package/data/codeLens/ecl.json +40 -17
- package/data/codeLens/elixir.json +40 -17
- package/data/codeLens/flow9.json +40 -17
- package/data/codeLens/freemarker2.json +40 -17
- package/data/codeLens/go.json +14 -0
- package/data/codeLens/graphql.json +7 -0
- package/data/codeLens/hcl.json +27 -1
- package/data/codeLens/html.json +27 -1
- package/data/codeLens/ini.json +40 -26
- package/data/codeLens/java.json +7 -0
- package/data/codeLens/json.json +40 -26
- package/data/codeLens/julia.json +40 -17
- package/data/codeLens/less.json +40 -17
- package/data/codeLens/lexon.json +40 -17
- package/data/codeLens/liquid.json +40 -17
- package/data/codeLens/lua.json +27 -1
- package/data/codeLens/m3.json +40 -17
- package/data/codeLens/makefile.json +21 -0
- package/data/codeLens/markdown.json +40 -26
- package/data/codeLens/mdx.json +40 -17
- package/data/codeLens/mips.json +40 -17
- package/data/codeLens/msdax.json +40 -17
- package/data/codeLens/mysql.json +40 -17
- package/data/codeLens/nginx.json +27 -1
- package/data/codeLens/objective-c.json +40 -17
- package/data/codeLens/pascal.json +40 -17
- package/data/codeLens/pascaligo.json +40 -17
- package/data/codeLens/perl.json +21 -0
- package/data/codeLens/pgsql.json +40 -17
- package/data/codeLens/pla.json +30 -2
- package/data/codeLens/postiats.json +40 -17
- package/data/codeLens/powerquery.json +40 -17
- package/data/codeLens/powershell.json +14 -0
- package/data/codeLens/protobuf.json +14 -0
- package/data/codeLens/python.json +14 -0
- package/data/codeLens/qsharp.json +40 -17
- package/data/codeLens/r.json +40 -33
- package/data/codeLens/razor.json +40 -17
- package/data/codeLens/redis-cli.json +40 -26
- package/data/codeLens/redis.json +40 -26
- package/data/codeLens/redshift.json +40 -17
- package/data/codeLens/restructuredtext.json +40 -17
- package/data/codeLens/ruby.json +14 -0
- package/data/codeLens/sb.json +40 -17
- package/data/codeLens/scheme.json +40 -17
- package/data/codeLens/scss.json +40 -17
- package/data/codeLens/shadcn.json +117 -89
- package/data/codeLens/shell.json +4 -2
- package/data/codeLens/sol.json +40 -17
- package/data/codeLens/sparql.json +40 -17
- package/data/codeLens/sql.json +7 -0
- package/data/codeLens/ssh_config.json +40 -26
- package/data/codeLens/st.json +40 -17
- package/data/codeLens/systemd.json +40 -26
- package/data/codeLens/systemverilog.json +40 -17
- package/data/codeLens/tcl.json +40 -17
- package/data/codeLens/toml.json +40 -26
- package/data/codeLens/twig.json +40 -17
- package/data/codeLens/vb.json +40 -17
- package/data/codeLens/wgsl.json +40 -17
- package/data/codeLens/xml.json +27 -1
- package/data/codeLens/yaml.json +40 -26
- package/data/color/abap.json +40 -20
- package/data/color/angular.json +67 -21
- package/data/color/apex.json +40 -20
- package/data/color/azcli.json +40 -20
- package/data/color/bicep.json +40 -20
- package/data/color/c.json +40 -30
- package/data/color/caddy.json +44 -24
- package/data/color/cameligo.json +39 -19
- package/data/color/clojure.json +39 -19
- package/data/color/coffee.json +39 -19
- package/data/color/cpp.json +40 -30
- package/data/color/crontab.json +44 -24
- package/data/color/css.json +140 -124
- package/data/color/cypher.json +39 -19
- package/data/color/docker-compose.json +44 -24
- package/data/color/dockerfile.json +44 -24
- package/data/color/doctest.json +40 -20
- package/data/color/dotenv.json +44 -24
- package/data/color/ecl.json +40 -20
- package/data/color/flow9.json +39 -19
- package/data/color/go.json +40 -30
- package/data/color/graphql.json +44 -24
- package/data/color/hcl.json +44 -24
- package/data/color/ini.json +44 -24
- package/data/color/json.json +44 -24
- package/data/color/less.json +39 -19
- package/data/color/lexon.json +40 -20
- package/data/color/lua.json +40 -30
- package/data/color/m3.json +39 -19
- package/data/color/makefile.json +44 -24
- package/data/color/mips.json +40 -20
- package/data/color/msdax.json +39 -19
- package/data/color/mysql.json +39 -19
- package/data/color/nginx.json +44 -24
- package/data/color/objective-c.json +40 -30
- package/data/color/pascal.json +39 -19
- package/data/color/pascaligo.json +39 -19
- package/data/color/perl.json +40 -30
- package/data/color/pgsql.json +39 -19
- package/data/color/pla.json +40 -20
- package/data/color/postiats.json +39 -19
- package/data/color/powerquery.json +40 -20
- package/data/color/protobuf.json +44 -24
- package/data/color/qsharp.json +40 -20
- package/data/color/redis-cli.json +40 -20
- package/data/color/redis.json +40 -20
- package/data/color/redshift.json +39 -19
- package/data/color/restructuredtext.json +40 -20
- package/data/color/rust.json +40 -30
- package/data/color/sb.json +40 -20
- package/data/color/scala.json +44 -13
- package/data/color/scheme.json +39 -19
- package/data/color/scss.json +39 -19
- package/data/color/shadcn.json +80 -66
- package/data/color/sol.json +40 -20
- package/data/color/sparql.json +39 -19
- package/data/color/sql.json +39 -19
- package/data/color/ssh_config.json +44 -24
- package/data/color/st.json +40 -20
- package/data/color/systemd.json +44 -24
- package/data/color/systemverilog.json +40 -20
- package/data/color/tailwindcss.json +87 -53
- package/data/color/toml.json +44 -24
- package/data/color/wgsl.json +40 -20
- package/data/color/yaml.json +44 -24
- package/data/commands/abap.json +201 -41
- package/data/commands/angular.json +24 -2
- package/data/commands/apex.json +211 -15
- package/data/commands/awk.json +160 -26
- package/data/commands/azcli.json +164 -59
- package/data/commands/bicep.json +161 -47
- package/data/commands/c.json +153 -35
- package/data/commands/caddy.json +390 -194
- package/data/commands/cameligo.json +157 -47
- package/data/commands/clojure.json +164 -41
- package/data/commands/coffee.json +160 -41
- package/data/commands/cpp.json +153 -35
- package/data/commands/crontab.json +156 -30
- package/data/commands/csharp.json +165 -47
- package/data/commands/css.json +160 -41
- package/data/commands/cypher.json +158 -31
- package/data/commands/dart.json +288 -216
- package/data/commands/docker-compose.json +451 -384
- package/data/commands/dockerfile.json +269 -90
- package/data/commands/doctest.json +158 -28
- package/data/commands/dotenv.json +165 -29
- package/data/commands/ecl.json +178 -31
- package/data/commands/elixir.json +169 -71
- package/data/commands/flow9.json +161 -29
- package/data/commands/freemarker2.json +163 -29
- package/data/commands/go.json +437 -161
- package/data/commands/graphql.json +177 -30
- package/data/commands/hcl.json +167 -53
- package/data/commands/html.json +179 -30
- package/data/commands/ini.json +174 -30
- package/data/commands/java.json +153 -31
- package/data/commands/javascript.json +167 -34
- package/data/commands/json.json +161 -41
- package/data/commands/julia.json +161 -41
- package/data/commands/kotlin.json +174 -45
- package/data/commands/less.json +166 -31
- package/data/commands/lexon.json +166 -28
- package/data/commands/linux.json +10256 -3812
- package/data/commands/liquid.json +181 -31
- package/data/commands/lua.json +190 -66
- package/data/commands/m3.json +156 -30
- package/data/commands/makefile.json +165 -41
- package/data/commands/manifest.json +1 -0
- package/data/commands/markdown.json +183 -30
- package/data/commands/mdx.json +170 -29
- package/data/commands/mips.json +155 -31
- package/data/commands/msdax.json +175 -28
- package/data/commands/mysql.json +225 -81
- package/data/commands/nestjs.json +24 -2
- package/data/commands/nextjs.json +72 -2
- package/data/commands/nginx.json +265 -146
- package/data/commands/objective-c.json +162 -31
- package/data/commands/pascal.json +162 -32
- package/data/commands/pascaligo.json +171 -31
- package/data/commands/perl.json +167 -35
- package/data/commands/pgsql.json +161 -41
- package/data/commands/php.json +187 -157
- package/data/commands/pla.json +171 -28
- package/data/commands/postiats.json +161 -31
- package/data/commands/powerquery.json +173 -28
- package/data/commands/powershell.json +159 -33
- package/data/commands/protobuf.json +171 -32
- package/data/commands/python.json +150 -30
- package/data/commands/qsharp.json +170 -31
- package/data/commands/r.json +241 -100
- package/data/commands/razor.json +170 -31
- package/data/commands/react.json +48 -2
- package/data/commands/redis-cli.json +257 -148
- package/data/commands/redis.json +161 -47
- package/data/commands/redshift.json +162 -32
- package/data/commands/restructuredtext.json +172 -34
- package/data/commands/ruby.json +165 -108
- package/data/commands/rust.json +378 -35
- package/data/commands/sb.json +162 -28
- package/data/commands/scala.json +429 -171
- package/data/commands/scheme.json +161 -30
- package/data/commands/scss.json +164 -32
- package/data/commands/shadcn.json +20 -2
- package/data/commands/shell.json +239 -239
- package/data/commands/sol.json +164 -32
- package/data/commands/sparql.json +181 -30
- package/data/commands/sql.json +213 -48
- package/data/commands/ssh_config.json +168 -36
- package/data/commands/st.json +175 -28
- package/data/commands/swift.json +198 -67
- package/data/commands/systemd.json +163 -53
- package/data/commands/systemverilog.json +165 -31
- package/data/commands/tailwindcss.json +101 -2
- package/data/commands/tcl.json +158 -28
- package/data/commands/toml.json +178 -30
- package/data/commands/twig.json +169 -29
- package/data/commands/typescript.json +164 -41
- package/data/commands/vb.json +163 -32
- package/data/commands/wgsl.json +169 -29
- package/data/commands/xml.json +161 -41
- package/data/commands/yaml.json +170 -34
- package/data/completion/redis-cli.json +3465 -3405
- package/data/declaration/abap.json +66 -11
- package/data/declaration/angular.json +271 -46
- package/data/declaration/apex.json +60 -10
- package/data/declaration/awk.json +30 -0
- package/data/declaration/azcli.json +72 -42
- package/data/declaration/bicep.json +66 -36
- package/data/declaration/c.json +30 -0
- package/data/declaration/caddy.json +30 -0
- package/data/declaration/cameligo.json +54 -24
- package/data/declaration/clojure.json +66 -36
- package/data/declaration/coffee.json +54 -24
- package/data/declaration/cpp.json +30 -0
- package/data/declaration/crontab.json +66 -36
- package/data/declaration/csharp.json +30 -0
- package/data/declaration/css.json +91 -59
- package/data/declaration/cypher.json +66 -36
- package/data/declaration/dart.json +150 -25
- package/data/declaration/docker-compose.json +72 -42
- package/data/declaration/dockerfile.json +30 -0
- package/data/declaration/doctest.json +66 -36
- package/data/declaration/dotenv.json +72 -42
- package/data/declaration/ecl.json +54 -24
- package/data/declaration/elixir.json +66 -36
- package/data/declaration/flow9.json +72 -42
- package/data/declaration/freemarker2.json +54 -24
- package/data/declaration/go.json +30 -0
- package/data/declaration/graphql.json +30 -0
- package/data/declaration/hcl.json +30 -0
- package/data/declaration/html.json +90 -60
- package/data/declaration/ini.json +66 -36
- package/data/declaration/java.json +30 -0
- package/data/declaration/javascript.json +30 -0
- package/data/declaration/json.json +60 -30
- package/data/declaration/julia.json +66 -36
- package/data/declaration/kotlin.json +84 -14
- package/data/declaration/less.json +54 -24
- package/data/declaration/lexon.json +72 -42
- package/data/declaration/liquid.json +54 -24
- package/data/declaration/lua.json +30 -0
- package/data/declaration/m3.json +60 -30
- package/data/declaration/makefile.json +30 -0
- package/data/declaration/markdown.json +72 -42
- package/data/declaration/mdx.json +54 -24
- package/data/declaration/mips.json +72 -42
- package/data/declaration/msdax.json +72 -42
- package/data/declaration/mysql.json +60 -30
- package/data/declaration/nestjs.json +302 -47
- package/data/declaration/nextjs.json +304 -274
- package/data/declaration/nginx.json +30 -0
- package/data/declaration/objective-c.json +66 -36
- package/data/declaration/pascal.json +66 -36
- package/data/declaration/pascaligo.json +54 -24
- package/data/declaration/perl.json +30 -0
- package/data/declaration/pgsql.json +66 -36
- package/data/declaration/php.json +30 -0
- package/data/declaration/pla.json +78 -48
- package/data/declaration/postiats.json +60 -30
- package/data/declaration/powerquery.json +78 -48
- package/data/declaration/powershell.json +30 -0
- package/data/declaration/protobuf.json +30 -0
- package/data/declaration/python.json +30 -0
- package/data/declaration/qsharp.json +60 -30
- package/data/declaration/r.json +655 -625
- package/data/declaration/razor.json +54 -24
- package/data/declaration/react.json +229 -199
- package/data/declaration/redis-cli.json +247 -217
- package/data/declaration/redis.json +66 -36
- package/data/declaration/redshift.json +78 -48
- package/data/declaration/restructuredtext.json +84 -54
- package/data/declaration/ruby.json +30 -0
- package/data/declaration/rust.json +30 -0
- package/data/declaration/sb.json +72 -42
- package/data/declaration/scala.json +138 -23
- package/data/declaration/scheme.json +54 -24
- package/data/declaration/scss.json +66 -36
- package/data/declaration/shadcn.json +241 -211
- package/data/declaration/shell.json +30 -0
- package/data/declaration/sol.json +66 -36
- package/data/declaration/sparql.json +78 -48
- package/data/declaration/sql.json +30 -0
- package/data/declaration/ssh_config.json +78 -48
- package/data/declaration/st.json +60 -30
- package/data/declaration/swift.json +108 -18
- package/data/declaration/systemd.json +84 -54
- package/data/declaration/systemverilog.json +66 -36
- package/data/declaration/tailwindcss.json +169 -137
- package/data/declaration/tcl.json +54 -24
- package/data/declaration/toml.json +30 -0
- package/data/declaration/twig.json +54 -24
- package/data/declaration/typescript.json +30 -0
- package/data/declaration/vb.json +66 -36
- package/data/declaration/wgsl.json +60 -30
- package/data/declaration/xml.json +30 -0
- package/data/declaration/yaml.json +30 -0
- package/data/definition/apex.json +41 -1
- package/data/definition/azcli.json +45 -0
- package/data/definition/bicep.json +45 -0
- package/data/definition/cameligo.json +45 -0
- package/data/definition/clojure.json +45 -0
- package/data/definition/coffee.json +31 -1
- package/data/definition/crontab.json +132 -107
- package/data/definition/csharp.json +616 -144
- package/data/definition/cypher.json +45 -0
- package/data/definition/dart.json +36 -1
- package/data/definition/doctest.json +45 -0
- package/data/definition/dotenv.json +116 -71
- package/data/definition/ecl.json +45 -0
- package/data/definition/elixir.json +41 -1
- package/data/definition/graphql.json +134 -119
- package/data/definition/ini.json +122 -77
- package/data/definition/java.json +31 -1
- package/data/definition/javascript.json +941 -265
- package/data/definition/json.json +123 -83
- package/data/definition/julia.json +35 -0
- package/data/definition/kotlin.json +41 -1
- package/data/definition/less.json +45 -0
- package/data/definition/lexon.json +45 -0
- package/data/definition/m3.json +45 -0
- package/data/definition/makefile.json +133 -113
- package/data/definition/markdown.json +132 -107
- package/data/definition/mdx.json +45 -0
- package/data/definition/objective-c.json +45 -0
- package/data/definition/pascal.json +30 -0
- package/data/definition/pascaligo.json +45 -0
- package/data/definition/perl.json +131 -101
- package/data/definition/pgsql.json +15 -0
- package/data/definition/pla.json +45 -0
- package/data/definition/postiats.json +40 -0
- package/data/definition/powerquery.json +30 -0
- package/data/definition/powershell.json +134 -119
- package/data/definition/protobuf.json +134 -119
- package/data/definition/qsharp.json +35 -0
- package/data/definition/razor.json +30 -0
- package/data/definition/redshift.json +35 -0
- package/data/definition/restructuredtext.json +45 -0
- package/data/definition/ruby.json +36 -1
- package/data/definition/rust.json +41 -1
- package/data/definition/sb.json +41 -1
- package/data/definition/scheme.json +25 -0
- package/data/definition/scss.json +35 -0
- package/data/definition/sol.json +45 -0
- package/data/definition/sparql.json +45 -0
- package/data/definition/ssh_config.json +129 -89
- package/data/definition/systemverilog.json +40 -0
- package/data/definition/tcl.json +45 -0
- package/data/definition/twig.json +133 -113
- package/data/definition/vb.json +133 -113
- package/data/definition/wgsl.json +133 -113
- package/data/definition/xml.json +128 -83
- package/data/documentHighlight/css.json +227 -125
- package/data/documentHighlight/nextjs.json +270 -212
- package/data/documentHighlight/r.json +207 -45
- package/data/documentHighlight/scala.json +380 -79
- package/data/documentHighlight/tailwindcss.json +252 -160
- package/data/documentRangeFormatting/abap.json +62 -35
- package/data/documentRangeFormatting/angular.json +81 -45
- package/data/documentRangeFormatting/apex.json +75 -41
- package/data/documentRangeFormatting/awk.json +62 -35
- package/data/documentRangeFormatting/azcli.json +61 -29
- package/data/documentRangeFormatting/bicep.json +67 -35
- package/data/documentRangeFormatting/c.json +75 -41
- package/data/documentRangeFormatting/caddy.json +59 -29
- package/data/documentRangeFormatting/cameligo.json +65 -35
- package/data/documentRangeFormatting/clojure.json +67 -35
- package/data/documentRangeFormatting/coffee.json +67 -35
- package/data/documentRangeFormatting/cpp.json +83 -47
- package/data/documentRangeFormatting/crontab.json +61 -29
- package/data/documentRangeFormatting/csharp.json +81 -47
- package/data/documentRangeFormatting/css.json +133 -101
- package/data/documentRangeFormatting/cypher.json +67 -35
- package/data/documentRangeFormatting/dart.json +75 -41
- package/data/documentRangeFormatting/docker-compose.json +67 -35
- package/data/documentRangeFormatting/dockerfile.json +69 -35
- package/data/documentRangeFormatting/doctest.json +59 -29
- package/data/documentRangeFormatting/dotenv.json +63 -29
- package/data/documentRangeFormatting/ecl.json +67 -35
- package/data/documentRangeFormatting/elixir.json +73 -41
- package/data/documentRangeFormatting/flow9.json +60 -35
- package/data/documentRangeFormatting/freemarker2.json +65 -35
- package/data/documentRangeFormatting/go.json +75 -41
- package/data/documentRangeFormatting/graphql.json +65 -35
- package/data/documentRangeFormatting/hcl.json +73 -41
- package/data/documentRangeFormatting/html.json +75 -41
- package/data/documentRangeFormatting/ini.json +61 -29
- package/data/documentRangeFormatting/java.json +83 -47
- package/data/documentRangeFormatting/javascript.json +83 -47
- package/data/documentRangeFormatting/json.json +67 -35
- package/data/documentRangeFormatting/julia.json +70 -41
- package/data/documentRangeFormatting/kotlin.json +83 -47
- package/data/documentRangeFormatting/less.json +67 -35
- package/data/documentRangeFormatting/lexon.json +59 -29
- package/data/documentRangeFormatting/liquid.json +65 -35
- package/data/documentRangeFormatting/lua.json +62 -35
- package/data/documentRangeFormatting/m3.json +67 -35
- package/data/documentRangeFormatting/makefile.json +69 -35
- package/data/documentRangeFormatting/markdown.json +67 -35
- package/data/documentRangeFormatting/mdx.json +67 -35
- package/data/documentRangeFormatting/mips.json +67 -35
- package/data/documentRangeFormatting/msdax.json +62 -35
- package/data/documentRangeFormatting/mysql.json +75 -41
- package/data/documentRangeFormatting/nestjs.json +26 -1
- package/data/documentRangeFormatting/nextjs.json +26 -1
- package/data/documentRangeFormatting/nginx.json +67 -35
- package/data/documentRangeFormatting/objective-c.json +75 -41
- package/data/documentRangeFormatting/pascal.json +67 -35
- package/data/documentRangeFormatting/pascaligo.json +67 -35
- package/data/documentRangeFormatting/perl.json +75 -41
- package/data/documentRangeFormatting/pgsql.json +90 -47
- package/data/documentRangeFormatting/php.json +96 -53
- package/data/documentRangeFormatting/pla.json +71 -35
- package/data/documentRangeFormatting/postiats.json +79 -41
- package/data/documentRangeFormatting/powerquery.json +87 -47
- package/data/documentRangeFormatting/powershell.json +95 -53
- package/data/documentRangeFormatting/protobuf.json +97 -53
- package/data/documentRangeFormatting/python.json +95 -53
- package/data/documentRangeFormatting/qsharp.json +87 -47
- package/data/documentRangeFormatting/r.json +87 -47
- package/data/documentRangeFormatting/razor.json +85 -47
- package/data/documentRangeFormatting/react.json +26 -1
- package/data/documentRangeFormatting/redis-cli.json +71 -35
- package/data/documentRangeFormatting/redis.json +71 -35
- package/data/documentRangeFormatting/redshift.json +90 -47
- package/data/documentRangeFormatting/restructuredtext.json +80 -41
- package/data/documentRangeFormatting/ruby.json +96 -53
- package/data/documentRangeFormatting/rust.json +103 -59
- package/data/documentRangeFormatting/sb.json +81 -41
- package/data/documentRangeFormatting/scala.json +103 -59
- package/data/documentRangeFormatting/scheme.json +87 -47
- package/data/documentRangeFormatting/scss.json +96 -53
- package/data/documentRangeFormatting/shadcn.json +81 -45
- package/data/documentRangeFormatting/shell.json +27 -1
- package/data/documentRangeFormatting/sol.json +95 -53
- package/data/documentRangeFormatting/sparql.json +89 -47
- package/data/documentRangeFormatting/sql.json +98 -53
- package/data/documentRangeFormatting/ssh_config.json +72 -35
- package/data/documentRangeFormatting/st.json +87 -47
- package/data/documentRangeFormatting/swift.json +104 -59
- package/data/documentRangeFormatting/systemd.json +72 -35
- package/data/documentRangeFormatting/systemverilog.json +106 -59
- package/data/documentRangeFormatting/tailwindcss.json +87 -55
- package/data/documentRangeFormatting/tcl.json +87 -47
- package/data/documentRangeFormatting/toml.json +79 -41
- package/data/documentRangeFormatting/twig.json +99 -53
- package/data/documentRangeFormatting/typescript.json +104 -59
- package/data/documentRangeFormatting/vb.json +109 -59
- package/data/documentRangeFormatting/wgsl.json +85 -47
- package/data/documentRangeFormatting/xml.json +89 -47
- package/data/documentRangeFormatting/yaml.json +89 -47
- package/data/documentSymbol/abap.json +22 -1
- package/data/documentSymbol/apex.json +36 -1
- package/data/documentSymbol/awk.json +50 -1
- package/data/documentSymbol/azcli.json +75 -12
- package/data/documentSymbol/bicep.json +36 -1
- package/data/documentSymbol/c.json +50 -1
- package/data/documentSymbol/caddy.json +57 -1
- package/data/documentSymbol/cameligo.json +75 -26
- package/data/documentSymbol/clojure.json +29 -1
- package/data/documentSymbol/coffee.json +75 -26
- package/data/documentSymbol/cpp.json +35 -0
- package/data/documentSymbol/crontab.json +63 -0
- package/data/documentSymbol/csharp.json +28 -0
- package/data/documentSymbol/css.json +14 -14
- package/data/documentSymbol/cypher.json +75 -47
- package/data/documentSymbol/dockerfile.json +50 -1
- package/data/documentSymbol/doctest.json +75 -12
- package/data/documentSymbol/dotenv.json +63 -0
- package/data/documentSymbol/ecl.json +75 -26
- package/data/documentSymbol/elixir.json +36 -1
- package/data/documentSymbol/flow9.json +75 -19
- package/data/documentSymbol/freemarker2.json +75 -26
- package/data/documentSymbol/go.json +43 -1
- package/data/documentSymbol/graphql.json +30 -2
- package/data/documentSymbol/hcl.json +43 -1
- package/data/documentSymbol/html.json +29 -1
- package/data/documentSymbol/ini.json +56 -0
- package/data/documentSymbol/java.json +36 -1
- package/data/documentSymbol/javascript.json +36 -1
- package/data/documentSymbol/json.json +63 -0
- package/data/documentSymbol/julia.json +29 -1
- package/data/documentSymbol/less.json +50 -1
- package/data/documentSymbol/lexon.json +75 -19
- package/data/documentSymbol/liquid.json +75 -26
- package/data/documentSymbol/lua.json +36 -1
- package/data/documentSymbol/m3.json +75 -33
- package/data/documentSymbol/makefile.json +43 -1
- package/data/documentSymbol/markdown.json +22 -1
- package/data/documentSymbol/mdx.json +75 -26
- package/data/documentSymbol/mips.json +75 -19
- package/data/documentSymbol/msdax.json +75 -19
- package/data/documentSymbol/mysql.json +43 -1
- package/data/documentSymbol/nginx.json +50 -1
- package/data/documentSymbol/objective-c.json +75 -40
- package/data/documentSymbol/pascal.json +29 -1
- package/data/documentSymbol/pascaligo.json +75 -26
- package/data/documentSymbol/perl.json +50 -1
- package/data/documentSymbol/pgsql.json +36 -1
- package/data/documentSymbol/php.json +29 -1
- package/data/documentSymbol/pla.json +75 -12
- package/data/documentSymbol/postiats.json +75 -33
- package/data/documentSymbol/powerquery.json +75 -19
- package/data/documentSymbol/powershell.json +43 -1
- package/data/documentSymbol/protobuf.json +43 -1
- package/data/documentSymbol/python.json +50 -1
- package/data/documentSymbol/qsharp.json +75 -33
- package/data/documentSymbol/r.json +8 -1
- package/data/documentSymbol/razor.json +75 -26
- package/data/documentSymbol/redis-cli.json +75 -26
- package/data/documentSymbol/redis.json +75 -26
- package/data/documentSymbol/redshift.json +15 -1
- package/data/documentSymbol/restructuredtext.json +75 -19
- package/data/documentSymbol/ruby.json +43 -1
- package/data/documentSymbol/rust.json +8 -1
- package/data/documentSymbol/sb.json +75 -19
- package/data/documentSymbol/scheme.json +50 -1
- package/data/documentSymbol/scss.json +36 -1
- package/data/documentSymbol/sol.json +75 -68
- package/data/documentSymbol/sparql.json +75 -19
- package/data/documentSymbol/sql.json +36 -1
- package/data/documentSymbol/ssh_config.json +56 -0
- package/data/documentSymbol/st.json +75 -33
- package/data/documentSymbol/systemd.json +56 -0
- package/data/documentSymbol/systemverilog.json +75 -47
- package/data/documentSymbol/tcl.json +75 -26
- package/data/documentSymbol/toml.json +49 -0
- package/data/documentSymbol/twig.json +75 -26
- package/data/documentSymbol/typescript.json +15 -1
- package/data/documentSymbol/vb.json +22 -1
- package/data/documentSymbol/wgsl.json +75 -33
- package/data/documentSymbol/xml.json +56 -0
- package/data/documentSymbol/yaml.json +50 -1
- package/data/foldingRange/abap.json +106 -76
- package/data/foldingRange/angular.json +24 -0
- package/data/foldingRange/apex.json +94 -70
- package/data/foldingRange/awk.json +88 -64
- package/data/foldingRange/azcli.json +58 -34
- package/data/foldingRange/bicep.json +94 -70
- package/data/foldingRange/c.json +82 -58
- package/data/foldingRange/caddy.json +64 -40
- package/data/foldingRange/cameligo.json +82 -58
- package/data/foldingRange/clojure.json +100 -76
- package/data/foldingRange/coffee.json +105 -76
- package/data/foldingRange/cpp.json +100 -76
- package/data/foldingRange/crontab.json +52 -28
- package/data/foldingRange/csharp.json +100 -76
- package/data/foldingRange/css.json +90 -66
- package/data/foldingRange/cypher.json +76 -52
- package/data/foldingRange/dart.json +106 -82
- package/data/foldingRange/docker-compose.json +87 -58
- package/data/foldingRange/dockerfile.json +76 -52
- package/data/foldingRange/doctest.json +82 -58
- package/data/foldingRange/dotenv.json +52 -28
- package/data/foldingRange/ecl.json +112 -82
- package/data/foldingRange/elixir.json +147 -118
- package/data/foldingRange/flow9.json +40 -16
- package/data/foldingRange/freemarker2.json +64 -34
- package/data/foldingRange/go.json +70 -46
- package/data/foldingRange/graphql.json +64 -40
- package/data/foldingRange/hcl.json +76 -52
- package/data/foldingRange/html.json +64 -34
- package/data/foldingRange/ini.json +46 -22
- package/data/foldingRange/java.json +76 -52
- package/data/foldingRange/javascript.json +70 -46
- package/data/foldingRange/json.json +46 -22
- package/data/foldingRange/julia.json +76 -52
- package/data/foldingRange/kotlin.json +76 -52
- package/data/foldingRange/less.json +58 -34
- package/data/foldingRange/lexon.json +46 -22
- package/data/foldingRange/liquid.json +64 -34
- package/data/foldingRange/lua.json +82 -52
- package/data/foldingRange/m3.json +64 -34
- package/data/foldingRange/makefile.json +57 -28
- package/data/foldingRange/markdown.json +58 -34
- package/data/foldingRange/mdx.json +64 -34
- package/data/foldingRange/mips.json +58 -34
- package/data/foldingRange/msdax.json +52 -28
- package/data/foldingRange/mysql.json +58 -34
- package/data/foldingRange/nestjs.json +24 -0
- package/data/foldingRange/nextjs.json +24 -0
- package/data/foldingRange/nginx.json +70 -46
- package/data/foldingRange/objective-c.json +70 -46
- package/data/foldingRange/pascal.json +76 -46
- package/data/foldingRange/pascaligo.json +52 -28
- package/data/foldingRange/perl.json +76 -52
- package/data/foldingRange/pgsql.json +64 -40
- package/data/foldingRange/php.json +70 -46
- package/data/foldingRange/pla.json +52 -28
- package/data/foldingRange/postiats.json +58 -28
- package/data/foldingRange/powerquery.json +52 -28
- package/data/foldingRange/powershell.json +76 -52
- package/data/foldingRange/protobuf.json +64 -40
- package/data/foldingRange/python.json +93 -64
- package/data/foldingRange/qsharp.json +52 -28
- package/data/foldingRange/r.json +70 -46
- package/data/foldingRange/razor.json +70 -40
- package/data/foldingRange/react.json +24 -0
- package/data/foldingRange/redis-cli.json +46 -22
- package/data/foldingRange/redis.json +46 -22
- package/data/foldingRange/redshift.json +52 -28
- package/data/foldingRange/restructuredtext.json +51 -22
- package/data/foldingRange/ruby.json +87 -52
- package/data/foldingRange/rust.json +88 -64
- package/data/foldingRange/sb.json +64 -34
- package/data/foldingRange/scala.json +76 -52
- package/data/foldingRange/scheme.json +64 -40
- package/data/foldingRange/scss.json +64 -40
- package/data/foldingRange/shadcn.json +24 -0
- package/data/foldingRange/shell.json +24 -0
- package/data/foldingRange/sol.json +70 -46
- package/data/foldingRange/sparql.json +58 -34
- package/data/foldingRange/sql.json +58 -34
- package/data/foldingRange/ssh_config.json +46 -22
- package/data/foldingRange/st.json +70 -40
- package/data/foldingRange/swift.json +82 -58
- package/data/foldingRange/systemd.json +70 -46
- package/data/foldingRange/systemverilog.json +64 -40
- package/data/foldingRange/tailwindcss.json +78 -60
- package/data/foldingRange/tcl.json +76 -46
- package/data/foldingRange/toml.json +46 -22
- package/data/foldingRange/twig.json +64 -34
- package/data/foldingRange/typescript.json +88 -64
- package/data/foldingRange/vb.json +82 -52
- package/data/foldingRange/wgsl.json +70 -46
- package/data/foldingRange/xml.json +58 -28
- package/data/foldingRange/yaml.json +51 -22
- package/data/formatting/abap.json +31 -2
- package/data/formatting/apex.json +31 -2
- package/data/formatting/awk.json +21 -1
- package/data/formatting/azcli.json +32 -3
- package/data/formatting/bicep.json +31 -2
- package/data/formatting/c.json +21 -1
- package/data/formatting/caddy.json +26 -1
- package/data/formatting/cameligo.json +31 -2
- package/data/formatting/clojure.json +31 -2
- package/data/formatting/coffee.json +31 -2
- package/data/formatting/cpp.json +21 -1
- package/data/formatting/crontab.json +31 -2
- package/data/formatting/csharp.json +21 -1
- package/data/formatting/cypher.json +31 -2
- package/data/formatting/dart.json +6 -2
- package/data/formatting/docker-compose.json +26 -2
- package/data/formatting/dockerfile.json +30 -2
- package/data/formatting/doctest.json +31 -2
- package/data/formatting/dotenv.json +32 -3
- package/data/formatting/ecl.json +31 -2
- package/data/formatting/elixir.json +6 -2
- package/data/formatting/flow9.json +31 -2
- package/data/formatting/freemarker2.json +31 -2
- package/data/formatting/go.json +21 -1
- package/data/formatting/graphql.json +26 -1
- package/data/formatting/ini.json +30 -2
- package/data/formatting/java.json +21 -1
- package/data/formatting/javascript.json +21 -1
- package/data/formatting/json.json +25 -0
- package/data/formatting/julia.json +31 -2
- package/data/formatting/kotlin.json +16 -2
- package/data/formatting/lexon.json +31 -2
- package/data/formatting/liquid.json +31 -2
- package/data/formatting/lua.json +21 -1
- package/data/formatting/m3.json +31 -2
- package/data/formatting/makefile.json +21 -1
- package/data/formatting/markdown.json +6 -2
- package/data/formatting/mdx.json +31 -2
- package/data/formatting/mips.json +31 -3
- package/data/formatting/msdax.json +31 -2
- package/data/formatting/mysql.json +6 -2
- package/data/formatting/nginx.json +21 -1
- package/data/formatting/objective-c.json +31 -2
- package/data/formatting/pascal.json +31 -2
- package/data/formatting/pascaligo.json +31 -2
- package/data/formatting/perl.json +21 -1
- package/data/formatting/pgsql.json +6 -2
- package/data/formatting/php.json +21 -1
- package/data/formatting/pla.json +32 -3
- package/data/formatting/postiats.json +31 -2
- package/data/formatting/powerquery.json +31 -2
- package/data/formatting/powershell.json +21 -1
- package/data/formatting/protobuf.json +26 -1
- package/data/formatting/python.json +21 -1
- package/data/formatting/qsharp.json +31 -2
- package/data/formatting/r.json +16 -1
- package/data/formatting/razor.json +31 -2
- package/data/formatting/redis-cli.json +32 -3
- package/data/formatting/redis.json +32 -3
- package/data/formatting/redshift.json +6 -2
- package/data/formatting/restructuredtext.json +30 -2
- package/data/formatting/ruby.json +21 -1
- package/data/formatting/rust.json +21 -1
- package/data/formatting/sb.json +32 -3
- package/data/formatting/scheme.json +31 -2
- package/data/formatting/sol.json +31 -2
- package/data/formatting/sparql.json +31 -2
- package/data/formatting/sql.json +21 -1
- package/data/formatting/ssh_config.json +26 -1
- package/data/formatting/st.json +31 -2
- package/data/formatting/systemd.json +31 -2
- package/data/formatting/systemverilog.json +32 -3
- package/data/formatting/tcl.json +31 -2
- package/data/formatting/toml.json +30 -2
- package/data/formatting/twig.json +32 -3
- package/data/formatting/typescript.json +21 -1
- package/data/formatting/vb.json +31 -2
- package/data/formatting/wgsl.json +32 -3
- package/data/formatting/yaml.json +26 -1
- package/data/hover/abap.json +152 -14
- package/data/hover/azcli.json +180 -75
- package/data/hover/bicep.json +180 -75
- package/data/hover/caddy.json +530 -458
- package/data/hover/cameligo.json +173 -75
- package/data/hover/clojure.json +180 -75
- package/data/hover/coffee.json +180 -75
- package/data/hover/cypher.json +173 -75
- package/data/hover/dockerfile.json +355 -283
- package/data/hover/doctest.json +180 -75
- package/data/hover/ecl.json +152 -75
- package/data/hover/elixir.json +180 -75
- package/data/hover/flow9.json +180 -75
- package/data/hover/freemarker2.json +180 -75
- package/data/hover/hcl.json +173 -75
- package/data/hover/ini.json +159 -68
- package/data/hover/json.json +194 -89
- package/data/hover/julia.json +173 -75
- package/data/hover/less.json +180 -75
- package/data/hover/liquid.json +180 -75
- package/data/hover/lua.json +1391 -971
- package/data/hover/m3.json +180 -75
- package/data/hover/makefile.json +131 -68
- package/data/hover/mips.json +180 -75
- package/data/hover/msdax.json +180 -75
- package/data/hover/mysql.json +173 -75
- package/data/hover/nginx.json +957 -891
- package/data/hover/objective-c.json +180 -75
- package/data/hover/pascal.json +159 -75
- package/data/hover/pascaligo.json +166 -75
- package/data/hover/pgsql.json +173 -75
- package/data/hover/postiats.json +173 -75
- package/data/hover/powerquery.json +180 -75
- package/data/hover/qsharp.json +173 -75
- package/data/hover/razor.json +180 -75
- package/data/hover/redis-cli.json +2168 -1088
- package/data/hover/redshift.json +166 -75
- package/data/hover/restructuredtext.json +180 -75
- package/data/hover/sb.json +173 -75
- package/data/hover/scheme.json +173 -75
- package/data/hover/scss.json +180 -75
- package/data/hover/sol.json +159 -75
- package/data/hover/sparql.json +173 -75
- package/data/hover/sql.json +1405 -1273
- package/data/hover/st.json +159 -75
- package/data/hover/systemd.json +187 -89
- package/data/hover/systemverilog.json +180 -75
- package/data/hover/tcl.json +180 -75
- package/data/hover/twig.json +180 -75
- package/data/hover/typescript.json +215 -120
- package/data/hover/vb.json +180 -75
- package/data/hover/wgsl.json +173 -75
- package/data/implementation/abap.json +29 -0
- package/data/implementation/angular.json +148 -22
- package/data/implementation/apex.json +29 -0
- package/data/implementation/awk.json +29 -0
- package/data/implementation/azcli.json +55 -26
- package/data/implementation/bicep.json +29 -0
- package/data/implementation/c.json +29 -0
- package/data/implementation/caddy.json +29 -0
- package/data/implementation/cameligo.json +35 -0
- package/data/implementation/clojure.json +35 -0
- package/data/implementation/coffee.json +29 -0
- package/data/implementation/cpp.json +29 -0
- package/data/implementation/crontab.json +55 -26
- package/data/implementation/csharp.json +29 -0
- package/data/implementation/css.json +106 -65
- package/data/implementation/cypher.json +29 -0
- package/data/implementation/dart.json +79 -14
- package/data/implementation/docker-compose.json +29 -0
- package/data/implementation/dockerfile.json +29 -0
- package/data/implementation/doctest.json +55 -26
- package/data/implementation/dotenv.json +55 -26
- package/data/implementation/ecl.json +29 -0
- package/data/implementation/elixir.json +35 -0
- package/data/implementation/flow9.json +29 -0
- package/data/implementation/freemarker2.json +29 -0
- package/data/implementation/go.json +29 -0
- package/data/implementation/graphql.json +29 -0
- package/data/implementation/hcl.json +29 -0
- package/data/implementation/html.json +67 -38
- package/data/implementation/ini.json +55 -26
- package/data/implementation/java.json +29 -0
- package/data/implementation/javascript.json +29 -0
- package/data/implementation/json.json +55 -26
- package/data/implementation/julia.json +35 -0
- package/data/implementation/kotlin.json +74 -13
- package/data/implementation/less.json +29 -0
- package/data/implementation/lexon.json +29 -0
- package/data/implementation/liquid.json +29 -0
- package/data/implementation/lua.json +29 -0
- package/data/implementation/m3.json +29 -0
- package/data/implementation/makefile.json +29 -0
- package/data/implementation/markdown.json +55 -26
- package/data/implementation/mdx.json +53 -24
- package/data/implementation/mips.json +29 -0
- package/data/implementation/msdax.json +29 -0
- package/data/implementation/mysql.json +53 -24
- package/data/implementation/nestjs.json +146 -24
- package/data/implementation/nextjs.json +166 -137
- package/data/implementation/nginx.json +29 -0
- package/data/implementation/objective-c.json +29 -0
- package/data/implementation/pascal.json +29 -0
- package/data/implementation/pascaligo.json +35 -0
- package/data/implementation/perl.json +29 -0
- package/data/implementation/pgsql.json +53 -24
- package/data/implementation/php.json +29 -0
- package/data/implementation/pla.json +29 -0
- package/data/implementation/postiats.json +29 -0
- package/data/implementation/powerquery.json +29 -0
- package/data/implementation/powershell.json +29 -0
- package/data/implementation/protobuf.json +29 -0
- package/data/implementation/python.json +29 -0
- package/data/implementation/qsharp.json +29 -0
- package/data/implementation/r.json +35 -0
- package/data/implementation/razor.json +29 -0
- package/data/implementation/react.json +154 -125
- package/data/implementation/redis-cli.json +55 -26
- package/data/implementation/redis.json +55 -26
- package/data/implementation/redshift.json +29 -0
- package/data/implementation/restructuredtext.json +29 -0
- package/data/implementation/ruby.json +29 -0
- package/data/implementation/rust.json +29 -0
- package/data/implementation/sb.json +29 -0
- package/data/implementation/scala.json +93 -16
- package/data/implementation/scheme.json +59 -24
- package/data/implementation/scss.json +29 -0
- package/data/implementation/shadcn.json +130 -89
- package/data/implementation/shell.json +29 -0
- package/data/implementation/sol.json +29 -0
- package/data/implementation/sparql.json +29 -0
- package/data/implementation/sql.json +29 -0
- package/data/implementation/ssh_config.json +55 -26
- package/data/implementation/st.json +29 -0
- package/data/implementation/swift.json +78 -14
- package/data/implementation/systemd.json +61 -32
- package/data/implementation/systemverilog.json +29 -0
- package/data/implementation/tailwindcss.json +100 -59
- package/data/implementation/tcl.json +29 -0
- package/data/implementation/toml.json +55 -26
- package/data/implementation/twig.json +29 -0
- package/data/implementation/typescript.json +29 -0
- package/data/implementation/vb.json +53 -24
- package/data/implementation/wgsl.json +53 -24
- package/data/implementation/xml.json +61 -32
- package/data/implementation/yaml.json +61 -32
- package/data/inlayHints/abap.json +81 -39
- package/data/inlayHints/angular.json +164 -24
- package/data/inlayHints/apex.json +85 -43
- package/data/inlayHints/awk.json +42 -0
- package/data/inlayHints/azcli.json +69 -27
- package/data/inlayHints/bicep.json +89 -47
- package/data/inlayHints/c.json +42 -0
- package/data/inlayHints/caddy.json +42 -0
- package/data/inlayHints/cameligo.json +73 -31
- package/data/inlayHints/clojure.json +93 -51
- package/data/inlayHints/coffee.json +81 -39
- package/data/inlayHints/cpp.json +42 -0
- package/data/inlayHints/crontab.json +69 -27
- package/data/inlayHints/csharp.json +42 -0
- package/data/inlayHints/css.json +129 -87
- package/data/inlayHints/cypher.json +73 -31
- package/data/inlayHints/dart.json +165 -29
- package/data/inlayHints/docker-compose.json +85 -43
- package/data/inlayHints/dockerfile.json +42 -0
- package/data/inlayHints/doctest.json +73 -31
- package/data/inlayHints/dotenv.json +77 -35
- package/data/inlayHints/ecl.json +69 -27
- package/data/inlayHints/elixir.json +97 -55
- package/data/inlayHints/flow9.json +69 -27
- package/data/inlayHints/freemarker2.json +69 -27
- package/data/inlayHints/go.json +42 -0
- package/data/inlayHints/graphql.json +85 -43
- package/data/inlayHints/hcl.json +42 -0
- package/data/inlayHints/html.json +69 -27
- package/data/inlayHints/ini.json +69 -27
- package/data/inlayHints/java.json +42 -0
- package/data/inlayHints/javascript.json +42 -0
- package/data/inlayHints/json.json +81 -39
- package/data/inlayHints/julia.json +93 -51
- package/data/inlayHints/kotlin.json +129 -23
- package/data/inlayHints/less.json +81 -39
- package/data/inlayHints/lexon.json +69 -27
- package/data/inlayHints/liquid.json +73 -31
- package/data/inlayHints/lua.json +42 -0
- package/data/inlayHints/m3.json +73 -31
- package/data/inlayHints/makefile.json +42 -0
- package/data/inlayHints/markdown.json +69 -27
- package/data/inlayHints/mdx.json +73 -31
- package/data/inlayHints/mips.json +73 -31
- package/data/inlayHints/msdax.json +73 -31
- package/data/inlayHints/mysql.json +77 -35
- package/data/inlayHints/nestjs.json +153 -24
- package/data/inlayHints/nextjs.json +185 -143
- package/data/inlayHints/nginx.json +42 -0
- package/data/inlayHints/objective-c.json +89 -47
- package/data/inlayHints/pascal.json +81 -39
- package/data/inlayHints/pascaligo.json +69 -27
- package/data/inlayHints/perl.json +42 -0
- package/data/inlayHints/pgsql.json +81 -39
- package/data/inlayHints/php.json +42 -0
- package/data/inlayHints/pla.json +69 -27
- package/data/inlayHints/postiats.json +69 -27
- package/data/inlayHints/powerquery.json +81 -39
- package/data/inlayHints/powershell.json +42 -0
- package/data/inlayHints/protobuf.json +69 -27
- package/data/inlayHints/python.json +42 -0
- package/data/inlayHints/qsharp.json +81 -39
- package/data/inlayHints/r.json +137 -95
- package/data/inlayHints/razor.json +81 -39
- package/data/inlayHints/react.json +236 -177
- package/data/inlayHints/redis-cli.json +42 -0
- package/data/inlayHints/redis.json +69 -27
- package/data/inlayHints/redshift.json +73 -31
- package/data/inlayHints/restructuredtext.json +69 -27
- package/data/inlayHints/ruby.json +42 -0
- package/data/inlayHints/rust.json +42 -0
- package/data/inlayHints/sb.json +69 -27
- package/data/inlayHints/scala.json +233 -42
- package/data/inlayHints/scheme.json +93 -51
- package/data/inlayHints/scss.json +93 -51
- package/data/inlayHints/shadcn.json +151 -109
- package/data/inlayHints/shell.json +42 -0
- package/data/inlayHints/sol.json +85 -43
- package/data/inlayHints/sparql.json +73 -31
- package/data/inlayHints/sql.json +42 -0
- package/data/inlayHints/ssh_config.json +73 -31
- package/data/inlayHints/st.json +81 -39
- package/data/inlayHints/swift.json +197 -37
- package/data/inlayHints/systemd.json +81 -39
- package/data/inlayHints/systemverilog.json +77 -35
- package/data/inlayHints/tailwindcss.json +153 -111
- package/data/inlayHints/tcl.json +73 -31
- package/data/inlayHints/toml.json +81 -39
- package/data/inlayHints/twig.json +81 -39
- package/data/inlayHints/typescript.json +42 -0
- package/data/inlayHints/vb.json +85 -43
- package/data/inlayHints/wgsl.json +81 -39
- package/data/inlayHints/xml.json +69 -27
- package/data/inlayHints/yaml.json +77 -35
- package/data/inlineCompletions/abap.json +85 -35
- package/data/inlineCompletions/apex.json +85 -35
- package/data/inlineCompletions/awk.json +65 -0
- package/data/inlineCompletions/azcli.json +85 -35
- package/data/inlineCompletions/bicep.json +85 -35
- package/data/inlineCompletions/c.json +26 -1
- package/data/inlineCompletions/caddy.json +50 -0
- package/data/inlineCompletions/cameligo.json +84 -29
- package/data/inlineCompletions/clojure.json +85 -35
- package/data/inlineCompletions/coffee.json +85 -35
- package/data/inlineCompletions/cpp.json +16 -1
- package/data/inlineCompletions/crontab.json +50 -0
- package/data/inlineCompletions/cypher.json +84 -29
- package/data/inlineCompletions/docker-compose.json +94 -89
- package/data/inlineCompletions/dockerfile.json +50 -0
- package/data/inlineCompletions/doctest.json +83 -23
- package/data/inlineCompletions/dotenv.json +55 -0
- package/data/inlineCompletions/ecl.json +84 -29
- package/data/inlineCompletions/elixir.json +51 -1
- package/data/inlineCompletions/flow9.json +84 -29
- package/data/inlineCompletions/freemarker2.json +84 -29
- package/data/inlineCompletions/go.json +6 -1
- package/data/inlineCompletions/graphql.json +65 -0
- package/data/inlineCompletions/hcl.json +65 -0
- package/data/inlineCompletions/html.json +51 -1
- package/data/inlineCompletions/ini.json +60 -0
- package/data/inlineCompletions/java.json +11 -1
- package/data/inlineCompletions/json.json +60 -0
- package/data/inlineCompletions/julia.json +85 -35
- package/data/inlineCompletions/kotlin.json +6 -1
- package/data/inlineCompletions/less.json +16 -1
- package/data/inlineCompletions/lexon.json +83 -23
- package/data/inlineCompletions/liquid.json +84 -29
- package/data/inlineCompletions/lua.json +36 -1
- package/data/inlineCompletions/m3.json +84 -29
- package/data/inlineCompletions/makefile.json +55 -0
- package/data/inlineCompletions/markdown.json +50 -0
- package/data/inlineCompletions/mdx.json +84 -29
- package/data/inlineCompletions/mips.json +85 -35
- package/data/inlineCompletions/msdax.json +83 -23
- package/data/inlineCompletions/mysql.json +51 -1
- package/data/inlineCompletions/nginx.json +65 -0
- package/data/inlineCompletions/objective-c.json +85 -35
- package/data/inlineCompletions/pascal.json +85 -35
- package/data/inlineCompletions/pascaligo.json +84 -29
- package/data/inlineCompletions/perl.json +65 -0
- package/data/inlineCompletions/pgsql.json +51 -1
- package/data/inlineCompletions/php.json +31 -1
- package/data/inlineCompletions/pla.json +84 -29
- package/data/inlineCompletions/postiats.json +84 -29
- package/data/inlineCompletions/powerquery.json +84 -29
- package/data/inlineCompletions/powershell.json +65 -0
- package/data/inlineCompletions/protobuf.json +65 -0
- package/data/inlineCompletions/qsharp.json +85 -35
- package/data/inlineCompletions/r.json +86 -41
- package/data/inlineCompletions/razor.json +85 -35
- package/data/inlineCompletions/redis-cli.json +50 -0
- package/data/inlineCompletions/redis.json +84 -29
- package/data/inlineCompletions/redshift.json +84 -29
- package/data/inlineCompletions/restructuredtext.json +85 -35
- package/data/inlineCompletions/ruby.json +26 -1
- package/data/inlineCompletions/rust.json +11 -1
- package/data/inlineCompletions/sb.json +85 -35
- package/data/inlineCompletions/scheme.json +85 -35
- package/data/inlineCompletions/scss.json +51 -1
- package/data/inlineCompletions/sol.json +85 -35
- package/data/inlineCompletions/sparql.json +85 -35
- package/data/inlineCompletions/sql.json +31 -1
- package/data/inlineCompletions/ssh_config.json +50 -0
- package/data/inlineCompletions/st.json +85 -35
- package/data/inlineCompletions/systemd.json +55 -0
- package/data/inlineCompletions/systemverilog.json +85 -35
- package/data/inlineCompletions/tcl.json +85 -35
- package/data/inlineCompletions/toml.json +55 -0
- package/data/inlineCompletions/twig.json +85 -35
- package/data/inlineCompletions/vb.json +85 -35
- package/data/inlineCompletions/wgsl.json +85 -35
- package/data/inlineCompletions/xml.json +50 -0
- package/data/inlineCompletions/yaml.json +50 -0
- package/data/linkedEditingRange/abap.json +23 -13
- package/data/linkedEditingRange/angular.json +30 -23
- package/data/linkedEditingRange/apex.json +23 -13
- package/data/linkedEditingRange/awk.json +23 -13
- package/data/linkedEditingRange/azcli.json +18 -2
- package/data/linkedEditingRange/bicep.json +23 -13
- package/data/linkedEditingRange/c.json +24 -19
- package/data/linkedEditingRange/caddy.json +23 -13
- package/data/linkedEditingRange/cameligo.json +23 -13
- package/data/linkedEditingRange/clojure.json +24 -19
- package/data/linkedEditingRange/coffee.json +23 -13
- package/data/linkedEditingRange/cpp.json +24 -19
- package/data/linkedEditingRange/crontab.json +18 -2
- package/data/linkedEditingRange/csharp.json +24 -19
- package/data/linkedEditingRange/cypher.json +24 -19
- package/data/linkedEditingRange/dart.json +23 -13
- package/data/linkedEditingRange/docker-compose.json +18 -2
- package/data/linkedEditingRange/dockerfile.json +23 -13
- package/data/linkedEditingRange/doctest.json +18 -2
- package/data/linkedEditingRange/dotenv.json +11 -1
- package/data/linkedEditingRange/ecl.json +23 -13
- package/data/linkedEditingRange/elixir.json +24 -19
- package/data/linkedEditingRange/flow9.json +23 -13
- package/data/linkedEditingRange/go.json +23 -13
- package/data/linkedEditingRange/graphql.json +23 -13
- package/data/linkedEditingRange/hcl.json +23 -13
- package/data/linkedEditingRange/html.json +23 -13
- package/data/linkedEditingRange/ini.json +11 -1
- package/data/linkedEditingRange/java.json +23 -13
- package/data/linkedEditingRange/javascript.json +24 -19
- package/data/linkedEditingRange/json.json +11 -1
- package/data/linkedEditingRange/julia.json +23 -13
- package/data/linkedEditingRange/kotlin.json +23 -13
- package/data/linkedEditingRange/less.json +24 -19
- package/data/linkedEditingRange/lexon.json +18 -2
- package/data/linkedEditingRange/liquid.json +24 -19
- package/data/linkedEditingRange/lua.json +23 -13
- package/data/linkedEditingRange/m3.json +23 -13
- package/data/linkedEditingRange/makefile.json +23 -13
- package/data/linkedEditingRange/markdown.json +23 -13
- package/data/linkedEditingRange/mdx.json +24 -19
- package/data/linkedEditingRange/mips.json +18 -2
- package/data/linkedEditingRange/msdax.json +18 -2
- package/data/linkedEditingRange/mysql.json +23 -13
- package/data/linkedEditingRange/nestjs.json +5 -0
- package/data/linkedEditingRange/nginx.json +23 -13
- package/data/linkedEditingRange/objective-c.json +24 -19
- package/data/linkedEditingRange/pascal.json +23 -13
- package/data/linkedEditingRange/pascaligo.json +23 -13
- package/data/linkedEditingRange/perl.json +23 -13
- package/data/linkedEditingRange/pgsql.json +24 -19
- package/data/linkedEditingRange/php.json +24 -19
- package/data/linkedEditingRange/pla.json +18 -2
- package/data/linkedEditingRange/postiats.json +23 -13
- package/data/linkedEditingRange/powerquery.json +23 -13
- package/data/linkedEditingRange/powershell.json +24 -19
- package/data/linkedEditingRange/protobuf.json +23 -13
- package/data/linkedEditingRange/python.json +23 -13
- package/data/linkedEditingRange/qsharp.json +23 -13
- package/data/linkedEditingRange/r.json +23 -13
- package/data/linkedEditingRange/razor.json +24 -19
- package/data/linkedEditingRange/redis-cli.json +18 -2
- package/data/linkedEditingRange/redis.json +18 -2
- package/data/linkedEditingRange/redshift.json +23 -13
- package/data/linkedEditingRange/restructuredtext.json +23 -13
- package/data/linkedEditingRange/ruby.json +23 -13
- package/data/linkedEditingRange/rust.json +23 -13
- package/data/linkedEditingRange/sb.json +23 -13
- package/data/linkedEditingRange/scala.json +24 -19
- package/data/linkedEditingRange/scheme.json +24 -19
- package/data/linkedEditingRange/scss.json +24 -19
- package/data/linkedEditingRange/shadcn.json +30 -23
- package/data/linkedEditingRange/sol.json +23 -13
- package/data/linkedEditingRange/sparql.json +23 -13
- package/data/linkedEditingRange/sql.json +23 -13
- package/data/linkedEditingRange/ssh_config.json +18 -2
- package/data/linkedEditingRange/st.json +23 -13
- package/data/linkedEditingRange/swift.json +23 -13
- package/data/linkedEditingRange/systemd.json +18 -2
- package/data/linkedEditingRange/systemverilog.json +23 -13
- package/data/linkedEditingRange/tcl.json +23 -13
- package/data/linkedEditingRange/toml.json +11 -1
- package/data/linkedEditingRange/twig.json +24 -19
- package/data/linkedEditingRange/typescript.json +24 -19
- package/data/linkedEditingRange/vb.json +24 -19
- package/data/linkedEditingRange/wgsl.json +18 -2
- package/data/linkedEditingRange/xml.json +11 -1
- package/data/linkedEditingRange/yaml.json +11 -1
- package/data/links/abap.json +45 -0
- package/data/links/angular.json +117 -95
- package/data/links/apex.json +55 -0
- package/data/links/awk.json +60 -0
- package/data/links/azcli.json +60 -0
- package/data/links/bicep.json +46 -0
- package/data/links/c.json +66 -0
- package/data/links/caddy.json +66 -0
- package/data/links/cameligo.json +60 -0
- package/data/links/clojure.json +46 -0
- package/data/links/coffee.json +51 -0
- package/data/links/cpp.json +66 -0
- package/data/links/crontab.json +65 -0
- package/data/links/csharp.json +66 -0
- package/data/links/css.json +82 -55
- package/data/links/cypher.json +61 -0
- package/data/links/dart.json +84 -16
- package/data/links/docker-compose.json +83 -47
- package/data/links/dockerfile.json +66 -0
- package/data/links/doctest.json +60 -0
- package/data/links/dotenv.json +66 -0
- package/data/links/ecl.json +55 -0
- package/data/links/elixir.json +46 -0
- package/data/links/flow9.json +65 -0
- package/data/links/freemarker2.json +47 -0
- package/data/links/go.json +66 -0
- package/data/links/graphql.json +61 -0
- package/data/links/hcl.json +66 -0
- package/data/links/html.json +67 -0
- package/data/links/ini.json +66 -0
- package/data/links/java.json +66 -0
- package/data/links/javascript.json +67 -0
- package/data/links/json.json +56 -0
- package/data/links/julia.json +56 -0
- package/data/links/kotlin.json +83 -10
- package/data/links/less.json +47 -0
- package/data/links/lexon.json +70 -0
- package/data/links/liquid.json +42 -0
- package/data/links/lua.json +66 -0
- package/data/links/m3.json +60 -0
- package/data/links/makefile.json +66 -0
- package/data/links/markdown.json +65 -0
- package/data/links/mdx.json +52 -0
- package/data/links/mips.json +65 -0
- package/data/links/msdax.json +71 -0
- package/data/links/mysql.json +56 -0
- package/data/links/nestjs.json +157 -130
- package/data/links/nextjs.json +118 -91
- package/data/links/nginx.json +66 -0
- package/data/links/objective-c.json +51 -0
- package/data/links/pascal.json +50 -0
- package/data/links/pascaligo.json +60 -0
- package/data/links/perl.json +66 -0
- package/data/links/pgsql.json +51 -0
- package/data/links/php.json +66 -0
- package/data/links/pla.json +70 -0
- package/data/links/postiats.json +55 -0
- package/data/links/powerquery.json +60 -0
- package/data/links/powershell.json +65 -0
- package/data/links/protobuf.json +66 -0
- package/data/links/python.json +66 -0
- package/data/links/qsharp.json +60 -0
- package/data/links/r.json +81 -20
- package/data/links/razor.json +42 -0
- package/data/links/react.json +102 -75
- package/data/links/redis-cli.json +71 -0
- package/data/links/redis.json +71 -0
- package/data/links/redshift.json +56 -0
- package/data/links/restructuredtext.json +35 -0
- package/data/links/ruby.json +66 -0
- package/data/links/rust.json +66 -0
- package/data/links/sb.json +70 -0
- package/data/links/scala.json +83 -17
- package/data/links/scheme.json +46 -0
- package/data/links/scss.json +27 -0
- package/data/links/shadcn.json +120 -98
- package/data/links/shell.json +5 -0
- package/data/links/sol.json +50 -0
- package/data/links/sparql.json +61 -0
- package/data/links/sql.json +61 -0
- package/data/links/ssh_config.json +66 -0
- package/data/links/st.json +60 -0
- package/data/links/swift.json +83 -13
- package/data/links/systemd.json +61 -0
- package/data/links/systemverilog.json +60 -0
- package/data/links/tailwindcss.json +92 -65
- package/data/links/tcl.json +56 -0
- package/data/links/toml.json +56 -0
- package/data/links/twig.json +22 -0
- package/data/links/typescript.json +67 -0
- package/data/links/vb.json +56 -0
- package/data/links/wgsl.json +70 -0
- package/data/links/xml.json +66 -0
- package/data/links/yaml.json +46 -0
- package/data/manifest.json +8 -7
- package/data/onTypeFormatting/abap.json +80 -42
- package/data/onTypeFormatting/angular.json +34 -1
- package/data/onTypeFormatting/apex.json +107 -69
- package/data/onTypeFormatting/awk.json +95 -58
- package/data/onTypeFormatting/azcli.json +63 -26
- package/data/onTypeFormatting/bicep.json +90 -52
- package/data/onTypeFormatting/c.json +117 -79
- package/data/onTypeFormatting/caddy.json +80 -42
- package/data/onTypeFormatting/cameligo.json +94 -57
- package/data/onTypeFormatting/clojure.json +84 -47
- package/data/onTypeFormatting/coffee.json +83 -46
- package/data/onTypeFormatting/cpp.json +122 -84
- package/data/onTypeFormatting/crontab.json +58 -21
- package/data/onTypeFormatting/csharp.json +117 -79
- package/data/onTypeFormatting/css.json +128 -82
- package/data/onTypeFormatting/cypher.json +78 -41
- package/data/onTypeFormatting/dart.json +117 -79
- package/data/onTypeFormatting/docker-compose.json +80 -42
- package/data/onTypeFormatting/dockerfile.json +80 -42
- package/data/onTypeFormatting/doctest.json +68 -31
- package/data/onTypeFormatting/dotenv.json +70 -32
- package/data/onTypeFormatting/ecl.json +84 -47
- package/data/onTypeFormatting/elixir.json +78 -41
- package/data/onTypeFormatting/flow9.json +95 -58
- package/data/onTypeFormatting/freemarker2.json +90 -52
- package/data/onTypeFormatting/go.json +112 -74
- package/data/onTypeFormatting/graphql.json +89 -52
- package/data/onTypeFormatting/hcl.json +85 -47
- package/data/onTypeFormatting/html.json +90 -52
- package/data/onTypeFormatting/ini.json +75 -37
- package/data/onTypeFormatting/java.json +117 -79
- package/data/onTypeFormatting/javascript.json +122 -84
- package/data/onTypeFormatting/json.json +84 -47
- package/data/onTypeFormatting/julia.json +73 -36
- package/data/onTypeFormatting/kotlin.json +112 -74
- package/data/onTypeFormatting/less.json +95 -58
- package/data/onTypeFormatting/lexon.json +75 -37
- package/data/onTypeFormatting/liquid.json +95 -57
- package/data/onTypeFormatting/lua.json +83 -46
- package/data/onTypeFormatting/m3.json +89 -52
- package/data/onTypeFormatting/makefile.json +78 -41
- package/data/onTypeFormatting/markdown.json +73 -36
- package/data/onTypeFormatting/mdx.json +78 -41
- package/data/onTypeFormatting/mips.json +68 -31
- package/data/onTypeFormatting/msdax.json +73 -36
- package/data/onTypeFormatting/mysql.json +83 -46
- package/data/onTypeFormatting/nestjs.json +29 -1
- package/data/onTypeFormatting/nextjs.json +29 -1
- package/data/onTypeFormatting/nginx.json +85 -47
- package/data/onTypeFormatting/objective-c.json +117 -79
- package/data/onTypeFormatting/pascal.json +89 -52
- package/data/onTypeFormatting/pascaligo.json +89 -52
- package/data/onTypeFormatting/perl.json +95 -58
- package/data/onTypeFormatting/pgsql.json +83 -46
- package/data/onTypeFormatting/php.json +117 -79
- package/data/onTypeFormatting/pla.json +79 -42
- package/data/onTypeFormatting/postiats.json +84 -47
- package/data/onTypeFormatting/powerquery.json +83 -46
- package/data/onTypeFormatting/powershell.json +95 -58
- package/data/onTypeFormatting/protobuf.json +100 -63
- package/data/onTypeFormatting/python.json +90 -52
- package/data/onTypeFormatting/qsharp.json +112 -74
- package/data/onTypeFormatting/r.json +100 -63
- package/data/onTypeFormatting/razor.json +95 -57
- package/data/onTypeFormatting/react.json +34 -1
- package/data/onTypeFormatting/redis-cli.json +58 -21
- package/data/onTypeFormatting/redis.json +58 -21
- package/data/onTypeFormatting/redshift.json +83 -46
- package/data/onTypeFormatting/restructuredtext.json +78 -41
- package/data/onTypeFormatting/ruby.json +78 -41
- package/data/onTypeFormatting/rust.json +112 -74
- package/data/onTypeFormatting/sb.json +68 -31
- package/data/onTypeFormatting/scala.json +112 -74
- package/data/onTypeFormatting/scheme.json +84 -47
- package/data/onTypeFormatting/scss.json +100 -63
- package/data/onTypeFormatting/shadcn.json +34 -1
- package/data/onTypeFormatting/shell.json +34 -1
- package/data/onTypeFormatting/sol.json +107 -69
- package/data/onTypeFormatting/sparql.json +73 -36
- package/data/onTypeFormatting/sql.json +83 -46
- package/data/onTypeFormatting/ssh_config.json +75 -37
- package/data/onTypeFormatting/st.json +89 -52
- package/data/onTypeFormatting/swift.json +112 -74
- package/data/onTypeFormatting/systemd.json +75 -37
- package/data/onTypeFormatting/systemverilog.json +84 -47
- package/data/onTypeFormatting/tailwindcss.json +109 -63
- package/data/onTypeFormatting/tcl.json +89 -52
- package/data/onTypeFormatting/toml.json +75 -37
- package/data/onTypeFormatting/twig.json +95 -57
- package/data/onTypeFormatting/typescript.json +127 -89
- package/data/onTypeFormatting/vb.json +78 -41
- package/data/onTypeFormatting/wgsl.json +112 -74
- package/data/onTypeFormatting/xml.json +90 -52
- package/data/onTypeFormatting/yaml.json +78 -41
- package/data/references/abap.json +72 -9
- package/data/references/apex.json +67 -8
- package/data/references/azcli.json +96 -50
- package/data/references/bicep.json +112 -86
- package/data/references/cameligo.json +103 -67
- package/data/references/clojure.json +113 -87
- package/data/references/coffee.json +105 -69
- package/data/references/crontab.json +92 -41
- package/data/references/css.json +92 -65
- package/data/references/cypher.json +124 -93
- package/data/references/dart.json +117 -15
- package/data/references/docker-compose.json +98 -42
- package/data/references/dockerfile.json +112 -86
- package/data/references/doctest.json +95 -49
- package/data/references/dotenv.json +91 -40
- package/data/references/ecl.json +112 -71
- package/data/references/elixir.json +121 -100
- package/data/references/flow9.json +95 -49
- package/data/references/freemarker2.json +104 -63
- package/data/references/graphql.json +113 -82
- package/data/references/html.json +106 -70
- package/data/references/ini.json +91 -40
- package/data/references/json.json +90 -39
- package/data/references/julia.json +114 -88
- package/data/references/kotlin.json +101 -12
- package/data/references/less.json +107 -71
- package/data/references/lexon.json +113 -67
- package/data/references/liquid.json +103 -62
- package/data/references/m3.json +108 -67
- package/data/references/markdown.json +101 -60
- package/data/references/mdx.json +100 -59
- package/data/references/mips.json +94 -48
- package/data/references/msdax.json +98 -57
- package/data/references/mysql.json +126 -95
- package/data/references/nginx.json +112 -81
- package/data/references/objective-c.json +116 -85
- package/data/references/pascal.json +110 -74
- package/data/references/pascaligo.json +100 -59
- package/data/references/pgsql.json +133 -102
- package/data/references/pla.json +94 -43
- package/data/references/postiats.json +105 -64
- package/data/references/powerquery.json +109 -68
- package/data/references/protobuf.json +110 -84
- package/data/references/qsharp.json +120 -84
- package/data/references/razor.json +110 -69
- package/data/references/redis.json +101 -70
- package/data/references/redshift.json +122 -86
- package/data/references/restructuredtext.json +110 -74
- package/data/references/sb.json +121 -80
- package/data/references/scala.json +124 -15
- package/data/references/scheme.json +130 -99
- package/data/references/scss.json +113 -82
- package/data/references/sol.json +124 -98
- package/data/references/sparql.json +123 -92
- package/data/references/ssh_config.json +106 -65
- package/data/references/st.json +107 -71
- package/data/references/swift.json +111 -14
- package/data/references/systemd.json +117 -76
- package/data/references/systemverilog.json +132 -111
- package/data/references/tcl.json +132 -101
- package/data/references/toml.json +94 -48
- package/data/references/twig.json +108 -77
- package/data/references/vb.json +132 -106
- package/data/references/wgsl.json +120 -84
- package/data/references/xml.json +107 -71
- package/data/references/yaml.json +98 -57
- package/data/rename/abap.json +78 -28
- package/data/rename/apex.json +83 -29
- package/data/rename/awk.json +68 -31
- package/data/rename/azcli.json +70 -32
- package/data/rename/bicep.json +67 -31
- package/data/rename/c.json +78 -29
- package/data/rename/caddy.json +71 -32
- package/data/rename/cameligo.json +73 -36
- package/data/rename/clojure.json +81 -33
- package/data/rename/coffee.json +83 -33
- package/data/rename/cpp.json +126 -36
- package/data/rename/crontab.json +53 -30
- package/data/rename/csharp.json +111 -33
- package/data/rename/cypher.json +91 -38
- package/data/rename/dart.json +101 -31
- package/data/rename/docker-compose.json +72 -33
- package/data/rename/dockerfile.json +69 -40
- package/data/rename/doctest.json +74 -32
- package/data/rename/dotenv.json +40 -28
- package/data/rename/ecl.json +87 -34
- package/data/rename/elixir.json +91 -39
- package/data/rename/flow9.json +66 -31
- package/data/rename/freemarker2.json +87 -43
- package/data/rename/go.json +88 -38
- package/data/rename/graphql.json +73 -41
- package/data/rename/hcl.json +80 -42
- package/data/rename/html.json +81 -37
- package/data/rename/ini.json +47 -28
- package/data/rename/java.json +103 -41
- package/data/rename/javascript.json +111 -42
- package/data/rename/json.json +37 -23
- package/data/rename/julia.json +87 -38
- package/data/rename/kotlin.json +118 -43
- package/data/rename/less.json +63 -39
- package/data/rename/lexon.json +67 -31
- package/data/rename/liquid.json +83 -38
- package/data/rename/lua.json +66 -35
- package/data/rename/m3.json +108 -41
- package/data/rename/makefile.json +75 -38
- package/data/rename/markdown.json +43 -31
- package/data/rename/mdx.json +73 -36
- package/data/rename/mips.json +111 -41
- package/data/rename/msdax.json +101 -46
- package/data/rename/mysql.json +107 -26
- package/data/rename/nginx.json +70 -26
- package/data/rename/objective-c.json +93 -21
- package/data/rename/pascal.json +83 -21
- package/data/rename/pascaligo.json +70 -21
- package/data/rename/perl.json +96 -26
- package/data/rename/pgsql.json +118 -26
- package/data/rename/php.json +113 -26
- package/data/rename/pla.json +52 -21
- package/data/rename/postiats.json +96 -21
- package/data/rename/powerquery.json +77 -26
- package/data/rename/powershell.json +79 -26
- package/data/rename/protobuf.json +73 -21
- package/data/rename/python.json +69 -21
- package/data/rename/qsharp.json +81 -21
- package/data/rename/r.json +66 -21
- package/data/rename/razor.json +72 -26
- package/data/rename/react.json +15 -3
- package/data/rename/redis-cli.json +86 -21
- package/data/rename/redis.json +84 -21
- package/data/rename/redshift.json +104 -26
- package/data/rename/restructuredtext.json +72 -31
- package/data/rename/ruby.json +98 -31
- package/data/rename/rust.json +85 -21
- package/data/rename/sb.json +71 -21
- package/data/rename/scala.json +88 -26
- package/data/rename/scheme.json +70 -21
- package/data/rename/scss.json +76 -31
- package/data/rename/shell.json +15 -3
- package/data/rename/sol.json +99 -21
- package/data/rename/sparql.json +98 -26
- package/data/rename/sql.json +124 -31
- package/data/rename/ssh_config.json +69 -26
- package/data/rename/st.json +65 -21
- package/data/rename/swift.json +99 -26
- package/data/rename/systemd.json +83 -26
- package/data/rename/systemverilog.json +140 -21
- package/data/rename/tailwindcss.json +76 -58
- package/data/rename/tcl.json +141 -31
- package/data/rename/toml.json +43 -26
- package/data/rename/twig.json +84 -26
- package/data/rename/typescript.json +110 -21
- package/data/rename/vb.json +186 -21
- package/data/rename/wgsl.json +100 -21
- package/data/rename/xml.json +60 -26
- package/data/rename/yaml.json +65 -31
- package/data/selectionRange/abap.json +53 -2
- package/data/selectionRange/angular.json +52 -1
- package/data/selectionRange/apex.json +48 -2
- package/data/selectionRange/awk.json +50 -3
- package/data/selectionRange/azcli.json +47 -2
- package/data/selectionRange/bicep.json +49 -2
- package/data/selectionRange/c.json +53 -2
- package/data/selectionRange/caddy.json +47 -2
- package/data/selectionRange/cameligo.json +50 -3
- package/data/selectionRange/clojure.json +50 -3
- package/data/selectionRange/coffee.json +48 -2
- package/data/selectionRange/cpp.json +53 -2
- package/data/selectionRange/crontab.json +57 -3
- package/data/selectionRange/csharp.json +53 -2
- package/data/selectionRange/css.json +8 -2
- package/data/selectionRange/cypher.json +53 -2
- package/data/selectionRange/dart.json +53 -2
- package/data/selectionRange/docker-compose.json +49 -4
- package/data/selectionRange/dockerfile.json +53 -2
- package/data/selectionRange/doctest.json +53 -2
- package/data/selectionRange/dotenv.json +57 -3
- package/data/selectionRange/ecl.json +48 -2
- package/data/selectionRange/elixir.json +53 -2
- package/data/selectionRange/flow9.json +50 -3
- package/data/selectionRange/freemarker2.json +53 -2
- package/data/selectionRange/go.json +48 -2
- package/data/selectionRange/graphql.json +53 -2
- package/data/selectionRange/hcl.json +50 -3
- package/data/selectionRange/html.json +53 -2
- package/data/selectionRange/ini.json +51 -2
- package/data/selectionRange/java.json +53 -2
- package/data/selectionRange/javascript.json +53 -2
- package/data/selectionRange/json.json +80 -25
- package/data/selectionRange/julia.json +53 -2
- package/data/selectionRange/kotlin.json +53 -2
- package/data/selectionRange/less.json +53 -2
- package/data/selectionRange/lexon.json +43 -3
- package/data/selectionRange/liquid.json +48 -2
- package/data/selectionRange/lua.json +53 -2
- package/data/selectionRange/m3.json +50 -3
- package/data/selectionRange/makefile.json +47 -2
- package/data/selectionRange/markdown.json +53 -2
- package/data/selectionRange/mdx.json +53 -2
- package/data/selectionRange/mips.json +43 -3
- package/data/selectionRange/msdax.json +39 -3
- package/data/selectionRange/mysql.json +51 -2
- package/data/selectionRange/nestjs.json +70 -2
- package/data/selectionRange/nextjs.json +70 -2
- package/data/selectionRange/nginx.json +47 -2
- package/data/selectionRange/objective-c.json +53 -2
- package/data/selectionRange/pascal.json +38 -2
- package/data/selectionRange/pascaligo.json +50 -3
- package/data/selectionRange/perl.json +53 -2
- package/data/selectionRange/pgsql.json +51 -2
- package/data/selectionRange/php.json +53 -2
- package/data/selectionRange/pla.json +50 -3
- package/data/selectionRange/postiats.json +50 -3
- package/data/selectionRange/powerquery.json +50 -3
- package/data/selectionRange/powershell.json +53 -2
- package/data/selectionRange/protobuf.json +53 -2
- package/data/selectionRange/python.json +53 -2
- package/data/selectionRange/qsharp.json +50 -3
- package/data/selectionRange/r.json +53 -2
- package/data/selectionRange/razor.json +53 -2
- package/data/selectionRange/react.json +52 -1
- package/data/selectionRange/redis-cli.json +51 -2
- package/data/selectionRange/redis.json +51 -2
- package/data/selectionRange/redshift.json +42 -2
- package/data/selectionRange/restructuredtext.json +53 -2
- package/data/selectionRange/ruby.json +53 -2
- package/data/selectionRange/rust.json +53 -2
- package/data/selectionRange/sb.json +43 -3
- package/data/selectionRange/scala.json +53 -2
- package/data/selectionRange/scheme.json +39 -3
- package/data/selectionRange/scss.json +53 -2
- package/data/selectionRange/shadcn.json +52 -1
- package/data/selectionRange/shell.json +53 -2
- package/data/selectionRange/sol.json +53 -2
- package/data/selectionRange/sparql.json +53 -2
- package/data/selectionRange/sql.json +51 -2
- package/data/selectionRange/ssh_config.json +49 -4
- package/data/selectionRange/st.json +38 -2
- package/data/selectionRange/swift.json +53 -2
- package/data/selectionRange/systemd.json +43 -3
- package/data/selectionRange/systemverilog.json +50 -3
- package/data/selectionRange/tailwindcss.json +39 -2
- package/data/selectionRange/tcl.json +50 -3
- package/data/selectionRange/toml.json +49 -4
- package/data/selectionRange/twig.json +48 -2
- package/data/selectionRange/typescript.json +53 -2
- package/data/selectionRange/vb.json +39 -3
- package/data/selectionRange/wgsl.json +50 -3
- package/data/selectionRange/xml.json +53 -4
- package/data/selectionRange/yaml.json +47 -2
- package/data/typeDefinition/abap.json +57 -18
- package/data/typeDefinition/angular.json +362 -362
- package/data/typeDefinition/apex.json +65 -20
- package/data/typeDefinition/awk.json +35 -35
- package/data/typeDefinition/azcli.json +35 -35
- package/data/typeDefinition/bicep.json +25 -25
- package/data/typeDefinition/c.json +89 -89
- package/data/typeDefinition/caddy.json +35 -35
- package/data/typeDefinition/cameligo.json +65 -65
- package/data/typeDefinition/clojure.json +89 -89
- package/data/typeDefinition/coffee.json +75 -75
- package/data/typeDefinition/cpp.json +101 -101
- package/data/typeDefinition/crontab.json +35 -35
- package/data/typeDefinition/csharp.json +117 -117
- package/data/typeDefinition/css.json +85 -53
- package/data/typeDefinition/cypher.json +61 -61
- package/data/typeDefinition/dart.json +215 -35
- package/data/typeDefinition/docker-compose.json +40 -40
- package/data/typeDefinition/dockerfile.json +40 -40
- package/data/typeDefinition/doctest.json +41 -41
- package/data/typeDefinition/dotenv.json +30 -30
- package/data/typeDefinition/ecl.json +49 -49
- package/data/typeDefinition/elixir.json +65 -65
- package/data/typeDefinition/flow9.json +37 -37
- package/data/typeDefinition/freemarker2.json +37 -37
- package/data/typeDefinition/go.json +101 -101
- package/data/typeDefinition/graphql.json +45 -45
- package/data/typeDefinition/hcl.json +55 -55
- package/data/typeDefinition/html.json +40 -40
- package/data/typeDefinition/ini.json +30 -30
- package/data/typeDefinition/java.json +99 -99
- package/data/typeDefinition/javascript.json +113 -113
- package/data/typeDefinition/json.json +35 -35
- package/data/typeDefinition/julia.json +65 -65
- package/data/typeDefinition/kotlin.json +201 -33
- package/data/typeDefinition/less.json +45 -45
- package/data/typeDefinition/lexon.json +25 -25
- package/data/typeDefinition/liquid.json +35 -35
- package/data/typeDefinition/lua.json +59 -59
- package/data/typeDefinition/m3.json +49 -49
- package/data/typeDefinition/makefile.json +35 -35
- package/data/typeDefinition/markdown.json +50 -50
- package/data/typeDefinition/mdx.json +35 -35
- package/data/typeDefinition/mips.json +45 -45
- package/data/typeDefinition/msdax.json +41 -41
- package/data/typeDefinition/mysql.json +65 -65
- package/data/typeDefinition/nestjs.json +334 -334
- package/data/typeDefinition/nextjs.json +285 -285
- package/data/typeDefinition/nginx.json +40 -40
- package/data/typeDefinition/objective-c.json +65 -65
- package/data/typeDefinition/pascal.json +65 -65
- package/data/typeDefinition/pascaligo.json +65 -65
- package/data/typeDefinition/perl.json +52 -52
- package/data/typeDefinition/pgsql.json +65 -65
- package/data/typeDefinition/php.json +77 -77
- package/data/typeDefinition/pla.json +45 -45
- package/data/typeDefinition/postiats.json +41 -41
- package/data/typeDefinition/powerquery.json +65 -65
- package/data/typeDefinition/powershell.json +70 -70
- package/data/typeDefinition/protobuf.json +75 -75
- package/data/typeDefinition/python.json +95 -95
- package/data/typeDefinition/qsharp.json +49 -49
- package/data/typeDefinition/r.json +125 -125
- package/data/typeDefinition/razor.json +45 -45
- package/data/typeDefinition/react.json +236 -236
- package/data/typeDefinition/redis-cli.json +35 -35
- package/data/typeDefinition/redis.json +41 -41
- package/data/typeDefinition/redshift.json +65 -65
- package/data/typeDefinition/restructuredtext.json +35 -35
- package/data/typeDefinition/ruby.json +89 -89
- package/data/typeDefinition/rust.json +143 -143
- package/data/typeDefinition/sb.json +25 -25
- package/data/typeDefinition/scala.json +334 -52
- package/data/typeDefinition/scheme.json +71 -71
- package/data/typeDefinition/scss.json +45 -45
- package/data/typeDefinition/shadcn.json +292 -292
- package/data/typeDefinition/sol.json +65 -65
- package/data/typeDefinition/sparql.json +49 -49
- package/data/typeDefinition/sql.json +80 -80
- package/data/typeDefinition/ssh_config.json +35 -35
- package/data/typeDefinition/st.json +65 -65
- package/data/typeDefinition/swift.json +362 -56
- package/data/typeDefinition/systemd.json +40 -40
- package/data/typeDefinition/systemverilog.json +65 -65
- package/data/typeDefinition/tailwindcss.json +79 -47
- package/data/typeDefinition/tcl.json +53 -53
- package/data/typeDefinition/toml.json +45 -45
- package/data/typeDefinition/twig.json +35 -35
- package/data/typeDefinition/typescript.json +120 -120
- package/data/typeDefinition/vb.json +65 -65
- package/data/typeDefinition/wgsl.json +65 -65
- package/data/typeDefinition/xml.json +45 -45
- package/data/typeDefinition/yaml.json +55 -55
- package/package.json +1 -1
package/data/hover/sql.json
CHANGED
|
@@ -1,1273 +1,1405 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": "sql",
|
|
3
|
-
"hovers": {
|
|
4
|
-
"SELECT": {
|
|
5
|
-
"contents": [
|
|
6
|
-
{
|
|
7
|
-
"value": "```sql\nSELECT name, email\nFROM users\nWHERE active = true\nORDER BY name;\n```\n**SELECT** retrieves rows from tables. Use DISTINCT for unique rows, aliases with AS, and JOIN for multi-table queries."
|
|
8
|
-
}
|
|
9
|
-
]
|
|
10
|
-
},
|
|
11
|
-
"INSERT": {
|
|
12
|
-
"contents": [
|
|
13
|
-
{
|
|
14
|
-
"value": "```sql\nINSERT INTO users (name, email)\nVALUES ('Alice', 'alice@example.com');\n```\n**INSERT** adds new rows. Use multi-row VALUES for bulk inserts, INSERT...SELECT to copy between tables, and ON CONFLICT for upserts."
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
"UPDATE": {
|
|
19
|
-
"contents": [
|
|
20
|
-
{
|
|
21
|
-
"value": "```sql\nUPDATE products\nSET price = price * 1.10\nWHERE category = 'electronics';\n```\n**UPDATE** modifies existing rows. Always include a WHERE clause to avoid updating every row. Use RETURNING to get affected rows."
|
|
22
|
-
}
|
|
23
|
-
]
|
|
24
|
-
},
|
|
25
|
-
"DELETE": {
|
|
26
|
-
"contents": [
|
|
27
|
-
{
|
|
28
|
-
"value": "```sql\nDELETE FROM sessions\nWHERE expires_at < NOW();\n```\n**DELETE** removes rows. Use TRUNCATE for fast full-table deletion. Always use WHERE to avoid deleting all rows."
|
|
29
|
-
}
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
"MERGE": {
|
|
33
|
-
"contents": [
|
|
34
|
-
{
|
|
35
|
-
"value": "```sql\nMERGE INTO inventory t\nUSING new_stock s ON t.sku = s.sku\nWHEN MATCHED THEN UPDATE SET t.qty = t.qty + s.qty\nWHEN NOT MATCHED THEN INSERT (sku, qty) VALUES (s.sku, s.qty);\n```\n**MERGE** (SQL:2003) performs insert, update, or delete in one statement based on a join condition."
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
},
|
|
39
|
-
"TRUNCATE": {
|
|
40
|
-
"contents": [
|
|
41
|
-
{
|
|
42
|
-
"value": "```sql\nTRUNCATE TABLE logs;\n```\n**TRUNCATE** removes all rows quickly. Unlike DELETE, it doesn't fire row-level triggers and cannot be rolled back in some databases."
|
|
43
|
-
}
|
|
44
|
-
]
|
|
45
|
-
},
|
|
46
|
-
"CREATE TABLE": {
|
|
47
|
-
"contents": [
|
|
48
|
-
{
|
|
49
|
-
"value": "```sql\nCREATE TABLE orders (\n id SERIAL PRIMARY KEY,\n user_id INT REFERENCES users(id),\n total NUMERIC(10,2) NOT NULL,\n created_at TIMESTAMP DEFAULT NOW()\n);\n```\n**CREATE TABLE** defines a new table with columns, data types, and constraints."
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
},
|
|
53
|
-
"ALTER TABLE": {
|
|
54
|
-
"contents": [
|
|
55
|
-
{
|
|
56
|
-
"value": "```sql\nALTER TABLE users\n ADD COLUMN phone VARCHAR(20),\n ALTER COLUMN name SET NOT NULL;\n```\n**ALTER TABLE** modifies a table's structure. You can add/drop columns, change types, add/remove constraints, and rename objects."
|
|
57
|
-
}
|
|
58
|
-
]
|
|
59
|
-
},
|
|
60
|
-
"DROP TABLE": {
|
|
61
|
-
"contents": [
|
|
62
|
-
{
|
|
63
|
-
"value": "```sql\nDROP TABLE IF EXISTS temp_data CASCADE;\n```\n**DROP TABLE** permanently removes a table. Use IF EXISTS to avoid errors and CASCADE to also drop dependent objects."
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
},
|
|
67
|
-
"CREATE INDEX": {
|
|
68
|
-
"contents": [
|
|
69
|
-
{
|
|
70
|
-
"value": "```sql\nCREATE INDEX idx_users_email ON users (email);\nCREATE INDEX idx_active ON users (email) WHERE active = true;\n```\n**CREATE INDEX** speeds up lookups. Use UNIQUE for uniqueness, partial indexes with WHERE, and GIN/GiST for full-text or JSON."
|
|
71
|
-
}
|
|
72
|
-
]
|
|
73
|
-
},
|
|
74
|
-
"CREATE VIEW": {
|
|
75
|
-
"contents": [
|
|
76
|
-
{
|
|
77
|
-
"value": "```sql\nCREATE VIEW active_orders AS\nSELECT o.*, u.name AS customer\nFROM orders o\nJOIN users u ON o.user_id = u.id\nWHERE o.status = 'active';\n```\n**CREATE VIEW** defines a virtual table based on a query. Materialized views store results physically for better read performance."
|
|
78
|
-
}
|
|
79
|
-
]
|
|
80
|
-
},
|
|
81
|
-
"INNER JOIN": {
|
|
82
|
-
"contents": [
|
|
83
|
-
{
|
|
84
|
-
"value": "```sql\nSELECT u.name, o.total\nFROM users u\nINNER JOIN orders o ON u.id = o.user_id;\n```\n**INNER JOIN** returns only rows with matches in both tables. It's the most common join type — non-matching rows are excluded."
|
|
85
|
-
}
|
|
86
|
-
]
|
|
87
|
-
},
|
|
88
|
-
"LEFT JOIN": {
|
|
89
|
-
"contents": [
|
|
90
|
-
{
|
|
91
|
-
"value": "```sql\nSELECT u.name, o.total\nFROM users u\nLEFT JOIN orders o ON u.id = o.user_id;\n```\n**LEFT JOIN** returns all rows from the left table. If no match exists in the right table, NULL is returned for right-side columns."
|
|
92
|
-
}
|
|
93
|
-
]
|
|
94
|
-
},
|
|
95
|
-
"RIGHT JOIN": {
|
|
96
|
-
"contents": [
|
|
97
|
-
{
|
|
98
|
-
"value": "```sql\nSELECT o.id, u.name\nFROM orders o\nRIGHT JOIN users u ON o.user_id = u.id;\n```\n**RIGHT JOIN** returns all rows from the right table, with NULLs for unmatched left-side columns. Less common — often rewritten as LEFT JOIN."
|
|
99
|
-
}
|
|
100
|
-
]
|
|
101
|
-
},
|
|
102
|
-
"FULL OUTER JOIN": {
|
|
103
|
-
"contents": [
|
|
104
|
-
{
|
|
105
|
-
"value": "```sql\nSELECT a.id, b.id\nFROM table_a a\nFULL OUTER JOIN table_b b ON a.key = b.key;\n```\n**FULL OUTER JOIN** returns all rows from both tables. NULLs fill in where there is no match on either side."
|
|
106
|
-
}
|
|
107
|
-
]
|
|
108
|
-
},
|
|
109
|
-
"CROSS JOIN": {
|
|
110
|
-
"contents": [
|
|
111
|
-
{
|
|
112
|
-
"value": "```sql\nSELECT c.color, s.size\nFROM colors c\nCROSS JOIN sizes s;\n```\n**CROSS JOIN** produces the Cartesian product — every combination of rows. Useful for generating combinations or number/date series."
|
|
113
|
-
}
|
|
114
|
-
]
|
|
115
|
-
},
|
|
116
|
-
"LATERAL JOIN": {
|
|
117
|
-
"contents": [
|
|
118
|
-
{
|
|
119
|
-
"value": "```sql\nSELECT u.name, lat.recent_order\nFROM users u\nLEFT JOIN LATERAL (\n SELECT total AS recent_order\n FROM orders WHERE user_id = u.id\n ORDER BY created_at DESC LIMIT 1\n) lat ON true;\n```\n**LATERAL JOIN** allows a subquery to reference columns from preceding FROM items. Powerful for top-N-per-group and correlated lookups."
|
|
120
|
-
}
|
|
121
|
-
]
|
|
122
|
-
},
|
|
123
|
-
"ROW_NUMBER": {
|
|
124
|
-
"contents": [
|
|
125
|
-
{
|
|
126
|
-
"value": "```sql\nSELECT name, salary,\n ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) AS rn\nFROM employees;\n```\n**ROW_NUMBER()** assigns a unique sequential integer to rows within each partition. Great for pagination, deduplication, and top-N queries."
|
|
127
|
-
}
|
|
128
|
-
]
|
|
129
|
-
},
|
|
130
|
-
"RANK": {
|
|
131
|
-
"contents": [
|
|
132
|
-
{
|
|
133
|
-
"value": "```sql\nSELECT name, score,\n RANK() OVER (ORDER BY score DESC) AS rank\nFROM students;\n```\n**RANK()** assigns positions with gaps for ties. E.g., two rows tied at rank 1 → next rank is 3. Use DENSE_RANK for no gaps."
|
|
134
|
-
}
|
|
135
|
-
]
|
|
136
|
-
},
|
|
137
|
-
"DENSE_RANK": {
|
|
138
|
-
"contents": [
|
|
139
|
-
{
|
|
140
|
-
"value": "```sql\nSELECT name, score,\n DENSE_RANK() OVER (ORDER BY score DESC) AS drank\nFROM students;\n```\n**DENSE_RANK()** assigns positions without gaps. Tied rows share a rank, and the next distinct value gets the next rank."
|
|
141
|
-
}
|
|
142
|
-
]
|
|
143
|
-
},
|
|
144
|
-
"LAG": {
|
|
145
|
-
"contents": [
|
|
146
|
-
{
|
|
147
|
-
"value": "```sql\nSELECT date, revenue,\n revenue - LAG(revenue) OVER (ORDER BY date) AS change\nFROM daily_sales;\n```\n**LAG()** accesses a value from a previous row without a self-join. The optional offset defaults to 1, and a default value avoids NULLs at partition boundaries."
|
|
148
|
-
}
|
|
149
|
-
]
|
|
150
|
-
},
|
|
151
|
-
"LEAD": {
|
|
152
|
-
"contents": [
|
|
153
|
-
{
|
|
154
|
-
"value": "```sql\nSELECT date, revenue,\n LEAD(revenue) OVER (ORDER BY date) AS next_day\nFROM daily_sales;\n```\n**LEAD()** accesses a value from a following row. Commonly used for calculating forward-looking differences or predictions."
|
|
155
|
-
}
|
|
156
|
-
]
|
|
157
|
-
},
|
|
158
|
-
"WITH": {
|
|
159
|
-
"contents": [
|
|
160
|
-
{
|
|
161
|
-
"value": "```sql\nWITH regional_sales AS (\n SELECT region, SUM(amount) AS total\n FROM orders GROUP BY region\n)\nSELECT region, total\nFROM regional_sales\nWHERE total > 100000;\n```\n**WITH (CTE)** defines named temporary result sets. CTEs improve readability, allow reuse within a query, and are essential for recursive queries."
|
|
162
|
-
}
|
|
163
|
-
]
|
|
164
|
-
},
|
|
165
|
-
"WITH RECURSIVE": {
|
|
166
|
-
"contents": [
|
|
167
|
-
{
|
|
168
|
-
"value": "```sql\nWITH RECURSIVE nums AS (\n SELECT 1 AS n\n UNION ALL\n SELECT n + 1 FROM nums WHERE n < 100\n)\nSELECT * FROM nums;\n```\n**WITH RECURSIVE** enables recursive queries for trees, hierarchies, graph traversal, and sequence generation. Requires a base case and a recursive term connected by UNION ALL."
|
|
169
|
-
}
|
|
170
|
-
]
|
|
171
|
-
},
|
|
172
|
-
"COUNT": {
|
|
173
|
-
"contents": [
|
|
174
|
-
{
|
|
175
|
-
"value": "```sql\nSELECT COUNT(*) AS total_users FROM users;\nSELECT COUNT(DISTINCT email) AS unique_emails FROM users;\n```\n**COUNT** tallies rows. COUNT(*) counts all rows including NULLs; COUNT(col) counts non-NULL values; COUNT(DISTINCT col) counts unique values."
|
|
176
|
-
}
|
|
177
|
-
]
|
|
178
|
-
},
|
|
179
|
-
"SUM": {
|
|
180
|
-
"contents": [
|
|
181
|
-
{
|
|
182
|
-
"value": "```sql\nSELECT department, SUM(salary) AS total_salary\nFROM employees\nGROUP BY department;\n```\n**SUM** calculates the total of numeric values. NULL values are ignored. Use with GROUP BY for category totals."
|
|
183
|
-
}
|
|
184
|
-
]
|
|
185
|
-
},
|
|
186
|
-
"AVG": {
|
|
187
|
-
"contents": [
|
|
188
|
-
{
|
|
189
|
-
"value": "```sql\nSELECT AVG(price) AS avg_price\nFROM products\nWHERE category = 'electronics';\n```\n**AVG** computes the arithmetic mean. NULL values are excluded from both the sum and the count."
|
|
190
|
-
}
|
|
191
|
-
]
|
|
192
|
-
},
|
|
193
|
-
"STRING_AGG": {
|
|
194
|
-
"contents": [
|
|
195
|
-
{
|
|
196
|
-
"value": "```sql\nSELECT department,\n STRING_AGG(name, ', ' ORDER BY name) AS members\nFROM employees\nGROUP BY department;\n```\n**STRING_AGG** (PostgreSQL) concatenates values with a delimiter. Use ORDER BY within the aggregate for deterministic results. MySQL equivalent: GROUP_CONCAT."
|
|
197
|
-
}
|
|
198
|
-
]
|
|
199
|
-
},
|
|
200
|
-
"CONCAT": {
|
|
201
|
-
"contents": [
|
|
202
|
-
{
|
|
203
|
-
"value": "```sql\nSELECT CONCAT(first_name, ' ', last_name) AS full_name\nFROM employees;\n```\n**CONCAT** joins strings together. Unlike the `||` operator, CONCAT treats NULL as empty string in many databases."
|
|
204
|
-
}
|
|
205
|
-
]
|
|
206
|
-
},
|
|
207
|
-
"SUBSTRING": {
|
|
208
|
-
"contents": [
|
|
209
|
-
{
|
|
210
|
-
"value": "```sql\nSELECT SUBSTRING(email FROM 1 FOR POSITION('@' IN email) - 1) AS username\nFROM users;\n```\n**SUBSTRING** extracts a portion of a string. Uses FROM/FOR syntax (ANSI) or comma-separated arguments depending on the database."
|
|
211
|
-
}
|
|
212
|
-
]
|
|
213
|
-
},
|
|
214
|
-
"REPLACE": {
|
|
215
|
-
"contents": [
|
|
216
|
-
{
|
|
217
|
-
"value": "```sql\nSELECT REPLACE(phone, '-', '') AS clean_phone\nFROM contacts;\n```\n**REPLACE** substitutes all occurrences of a substring. Useful for data cleaning and normalization."
|
|
218
|
-
}
|
|
219
|
-
]
|
|
220
|
-
},
|
|
221
|
-
"TRIM": {
|
|
222
|
-
"contents": [
|
|
223
|
-
{
|
|
224
|
-
"value": "```sql\nSELECT TRIM(BOTH ' ' FROM name) AS clean_name\nFROM users;\n```\n**TRIM** removes leading and/or trailing characters. LEADING removes from start, TRAILING from end, BOTH from both sides."
|
|
225
|
-
}
|
|
226
|
-
]
|
|
227
|
-
},
|
|
228
|
-
"NOW": {
|
|
229
|
-
"contents": [
|
|
230
|
-
{
|
|
231
|
-
"value": "```sql\nSELECT NOW();\n-- 2024-10-15 14:30:45.123456+00\n\nSELECT * FROM orders WHERE created_at > NOW() - INTERVAL '7 days';\n```\n**NOW()** returns the current date and time with time zone. Equivalent to CURRENT_TIMESTAMP. In a transaction, the value stays constant."
|
|
232
|
-
}
|
|
233
|
-
]
|
|
234
|
-
},
|
|
235
|
-
"DATE_TRUNC": {
|
|
236
|
-
"contents": [
|
|
237
|
-
{
|
|
238
|
-
"value": "```sql\nSELECT DATE_TRUNC('month', created_at) AS month,\n COUNT(*) AS orders\nFROM orders\nGROUP BY 1\nORDER BY 1;\n```\n**DATE_TRUNC** (PostgreSQL) truncates a timestamp to the specified precision (year, quarter, month, week, day, hour, minute, second). Essential for time-series grouping."
|
|
239
|
-
}
|
|
240
|
-
]
|
|
241
|
-
},
|
|
242
|
-
"EXTRACT": {
|
|
243
|
-
"contents": [
|
|
244
|
-
{
|
|
245
|
-
"value": "```sql\nSELECT EXTRACT(YEAR FROM created_at) AS year,\n EXTRACT(MONTH FROM created_at) AS month\nFROM orders;\n```\n**EXTRACT** retrieves a field (YEAR, MONTH, DAY, HOUR, etc.) from a date or timestamp. EPOCH extracts Unix timestamp."
|
|
246
|
-
}
|
|
247
|
-
]
|
|
248
|
-
},
|
|
249
|
-
"INTERVAL": {
|
|
250
|
-
"contents": [
|
|
251
|
-
{
|
|
252
|
-
"value": "```sql\nSELECT NOW() - INTERVAL '30 days' AS thirty_days_ago;\nSELECT NOW() + INTERVAL '2 hours 30 minutes';\n```\n**INTERVAL** represents a span of time. Supports years, months, days, hours, minutes, seconds. Used in date arithmetic."
|
|
253
|
-
}
|
|
254
|
-
]
|
|
255
|
-
},
|
|
256
|
-
"JSON_BUILD_OBJECT": {
|
|
257
|
-
"contents": [
|
|
258
|
-
{
|
|
259
|
-
"value": "```sql\nSELECT JSON_BUILD_OBJECT(\n 'id', u.id,\n 'name', u.name,\n 'email', u.email\n) AS user_json\nFROM users u;\n```\n**JSON_BUILD_OBJECT** (PostgreSQL) constructs a JSON object from key-value pairs. Useful for building API responses directly in SQL."
|
|
260
|
-
}
|
|
261
|
-
]
|
|
262
|
-
},
|
|
263
|
-
"jsonb operators": {
|
|
264
|
-
"contents": [
|
|
265
|
-
{
|
|
266
|
-
"value": "```sql\n-- Extract as JSON: data -> 'key'\n-- Extract as text: data ->> 'key'\n-- Path extract: data #> '{a,b}'\n-- Contains: data @> '{\"status\":\"active\"}'\n-- Key exists: data ? 'email'\n-- Any key exists: data ?| array['a','b']\n\nSELECT * FROM docs WHERE data @> '{\"type\":\"report\"}';\n```\n**JSONB operators** (PostgreSQL) provide fast JSON querying. Use GIN indexes for @>, ?, and ?| operators."
|
|
267
|
-
}
|
|
268
|
-
]
|
|
269
|
-
},
|
|
270
|
-
"BEGIN": {
|
|
271
|
-
"contents": [
|
|
272
|
-
{
|
|
273
|
-
"value": "```sql\nBEGIN;\n UPDATE accounts SET balance = balance - 100 WHERE id = 1;\n UPDATE accounts SET balance = balance + 100 WHERE id = 2;\nCOMMIT;\n```\n**BEGIN** starts a transaction. All statements until COMMIT or ROLLBACK form an atomic unit. Use SAVEPOINT for partial rollbacks."
|
|
274
|
-
}
|
|
275
|
-
]
|
|
276
|
-
},
|
|
277
|
-
"COMMIT": {
|
|
278
|
-
"contents": [
|
|
279
|
-
{
|
|
280
|
-
"value": "```sql\nBEGIN;\n INSERT INTO logs (message) VALUES ('Operation completed');\nCOMMIT;\n```\n**COMMIT** makes all changes in the current transaction permanent. After commit, changes are visible to other sessions."
|
|
281
|
-
}
|
|
282
|
-
]
|
|
283
|
-
},
|
|
284
|
-
"ROLLBACK": {
|
|
285
|
-
"contents": [
|
|
286
|
-
{
|
|
287
|
-
"value": "```sql\nBEGIN;\n DELETE FROM users WHERE id = 42;\n -- Oops, wrong user!\nROLLBACK;\n```\n**ROLLBACK** undoes all changes since the last BEGIN. You can also ROLLBACK TO SAVEPOINT to undo partial work."
|
|
288
|
-
}
|
|
289
|
-
]
|
|
290
|
-
},
|
|
291
|
-
"CASE": {
|
|
292
|
-
"contents": [
|
|
293
|
-
{
|
|
294
|
-
"value": "```sql\nSELECT name,\n CASE\n WHEN salary > 100000 THEN 'Senior'\n WHEN salary > 50000 THEN 'Mid'\n ELSE 'Junior'\n END AS level\nFROM employees;\n```\n**CASE** is SQL's conditional expression. The searched form (CASE WHEN) evaluates conditions; the simple form (CASE expr WHEN) compares values. Always include ELSE for completeness."
|
|
295
|
-
}
|
|
296
|
-
]
|
|
297
|
-
},
|
|
298
|
-
"COALESCE": {
|
|
299
|
-
"contents": [
|
|
300
|
-
{
|
|
301
|
-
"value": "```sql\nSELECT COALESCE(nickname, first_name, 'Anonymous') AS display_name\nFROM users;\n```\n**COALESCE** returns the first non-NULL argument. Essential for providing fallback values and handling optional data."
|
|
302
|
-
}
|
|
303
|
-
]
|
|
304
|
-
},
|
|
305
|
-
"NULLIF": {
|
|
306
|
-
"contents": [
|
|
307
|
-
{
|
|
308
|
-
"value": "```sql\nSELECT total / NULLIF(count, 0) AS average\nFROM stats;\n```\n**NULLIF** returns NULL if both arguments are equal; otherwise returns the first. Commonly used to avoid division by zero."
|
|
309
|
-
}
|
|
310
|
-
]
|
|
311
|
-
},
|
|
312
|
-
"CAST": {
|
|
313
|
-
"contents": [
|
|
314
|
-
{
|
|
315
|
-
"value": "```sql\nSELECT CAST('2024-01-15' AS DATE);\nSELECT CAST(price AS INTEGER) FROM products;\n-- PostgreSQL shorthand:\nSELECT '2024-01-15'::DATE;\n```\n**CAST** converts a value to a specified type. PostgreSQL also supports the `::` operator. Use for type-safe comparisons and formatting."
|
|
316
|
-
}
|
|
317
|
-
]
|
|
318
|
-
},
|
|
319
|
-
"CREATE INDEX strategy": {
|
|
320
|
-
"contents": [
|
|
321
|
-
{
|
|
322
|
-
"value": "```sql\n-- B-tree (default): equality and range queries\nCREATE INDEX idx_email ON users (email);\n\n-- Partial: index only relevant rows\nCREATE INDEX idx_active ON users (email) WHERE active;\n\n-- Covering: avoid table lookups\nCREATE INDEX idx_cover ON orders (user_id) INCLUDE (total);\n\n-- GIN: JSONB, arrays, full-text\nCREATE INDEX idx_data ON docs USING GIN (data);\n```\n**Index strategies**: B-tree for most queries, partial for filtered subsets, covering (INCLUDE) to avoid heap fetches, GIN for JSONB/arrays, GiST for geometric/range types."
|
|
323
|
-
}
|
|
324
|
-
]
|
|
325
|
-
},
|
|
326
|
-
"EXPLAIN": {
|
|
327
|
-
"contents": [
|
|
328
|
-
{
|
|
329
|
-
"value": "```sql\nEXPLAIN ANALYZE\nSELECT u.name, COUNT(o.id)\nFROM users u\nLEFT JOIN orders o ON u.id = o.user_id\nGROUP BY u.name;\n```\n**EXPLAIN** shows the query plan. EXPLAIN ANALYZE actually executes the query and shows real timings. Look for Seq Scan on large tables (may need an index), Nested Loop vs Hash Join, and actual vs estimated row counts."
|
|
330
|
-
}
|
|
331
|
-
]
|
|
332
|
-
},
|
|
333
|
-
"GRANT": {
|
|
334
|
-
"contents": [
|
|
335
|
-
{
|
|
336
|
-
"value": "```sql\nGRANT SELECT, INSERT ON TABLE orders TO app_user;\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin;\nGRANT USAGE ON SCHEMA app TO readonly_role;\n```\n**GRANT** assigns permissions. Grant minimum required privileges (principle of least privilege). Use roles to manage permissions at scale."
|
|
337
|
-
}
|
|
338
|
-
]
|
|
339
|
-
},
|
|
340
|
-
"Pagination": {
|
|
341
|
-
"contents": [
|
|
342
|
-
{
|
|
343
|
-
"value": "```sql\n-- Offset pagination (simple but slow for large offsets)\nSELECT * FROM products ORDER BY id LIMIT 20 OFFSET 100;\n\n-- Keyset pagination (efficient for large datasets)\nSELECT * FROM products\nWHERE id > 120\nORDER BY id LIMIT 20;\n```\n**Pagination**: Offset-based is simple but scans skipped rows. Keyset (cursor) pagination is faster for deep pages — use an indexed column as the cursor."
|
|
344
|
-
}
|
|
345
|
-
]
|
|
346
|
-
},
|
|
347
|
-
"Upsert": {
|
|
348
|
-
"contents": [
|
|
349
|
-
{
|
|
350
|
-
"value": "```sql\n-- PostgreSQL\nINSERT INTO users (id, name, email)\nVALUES (1, 'Alice', 'a@b.com')\nON CONFLICT (id)\nDO UPDATE SET name = EXCLUDED.name, email = EXCLUDED.email;\n\n-- MySQL\nINSERT INTO users (id, name)\nVALUES (1, 'Alice')\nON DUPLICATE KEY UPDATE name = VALUES(name);\n```\n**Upsert** inserts a row or updates it if a conflict exists. PostgreSQL uses ON CONFLICT, MySQL uses ON DUPLICATE KEY UPDATE, SQL Server uses MERGE."
|
|
351
|
-
}
|
|
352
|
-
]
|
|
353
|
-
},
|
|
354
|
-
"CTE vs Subquery": {
|
|
355
|
-
"contents": [
|
|
356
|
-
{
|
|
357
|
-
"value": "```sql\n-- CTE (more readable, reusable)\nWITH recent_orders AS (\n SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'\n)\nSELECT u.name, COUNT(ro.id)\nFROM users u\nJOIN recent_orders ro ON u.id = ro.user_id\nGROUP BY u.name;\n\n-- Subquery (inline)\nSELECT u.name, (\n SELECT COUNT(*) FROM orders o\n WHERE o.user_id = u.id AND o.created_at > NOW() - INTERVAL '30 days'\n) AS order_count\nFROM users u;\n```\n**CTEs vs Subqueries**: CTEs improve readability and allow reuse. Subqueries can sometimes be optimized better by the planner. Use CTEs for complex multi-step queries; subqueries for simple inline lookups."
|
|
358
|
-
}
|
|
359
|
-
]
|
|
360
|
-
},
|
|
361
|
-
"Window vs GROUP BY": {
|
|
362
|
-
"contents": [
|
|
363
|
-
{
|
|
364
|
-
"value": "```sql\n-- GROUP BY: one row per group\nSELECT dept, AVG(salary) FROM employees GROUP BY dept;\n\n-- Window: all rows with aggregate\nSELECT name, dept, salary,\n AVG(salary) OVER (PARTITION BY dept) AS dept_avg\nFROM employees;\n```\n**Window functions** compute aggregates while keeping all rows, unlike GROUP BY which collapses them. Use windows when you need both detail and summary data."
|
|
365
|
-
}
|
|
366
|
-
]
|
|
367
|
-
},
|
|
368
|
-
"COPY": {
|
|
369
|
-
"contents": [
|
|
370
|
-
{
|
|
371
|
-
"value": "```sql\n-- Export\nCOPY users TO '/tmp/users.csv' WITH (FORMAT csv, HEADER);\n\n-- Import\nCOPY users (name, email) FROM '/tmp/users.csv'\nWITH (FORMAT csv, HEADER true, DELIMITER ',');\n```\n**COPY** (PostgreSQL) transfers data between a table and a file at high speed. Use FORMAT csv for CSV files. For client-side files, use \\copy in psql."
|
|
372
|
-
}
|
|
373
|
-
]
|
|
374
|
-
},
|
|
375
|
-
"CREATE FUNCTION": {
|
|
376
|
-
"contents": [
|
|
377
|
-
{
|
|
378
|
-
"value": "```sql\nCREATE OR REPLACE FUNCTION get_status(p_id INT)\nRETURNS TEXT AS $$\nDECLARE\n v_status TEXT;\nBEGIN\n SELECT status INTO v_status FROM orders WHERE id = p_id;\n RETURN COALESCE(v_status, 'unknown');\nEND;\n$$ LANGUAGE plpgsql;\n```\n**CREATE FUNCTION** defines reusable logic in the database. Use RETURNS TABLE for set-returning functions. PL/pgSQL supports variables, loops, and exception handling."
|
|
379
|
-
}
|
|
380
|
-
]
|
|
381
|
-
},
|
|
382
|
-
"CREATE TRIGGER": {
|
|
383
|
-
"contents": [
|
|
384
|
-
{
|
|
385
|
-
"value": "```sql\nCREATE OR REPLACE FUNCTION set_updated_at()\nRETURNS TRIGGER AS $$\nBEGIN\n NEW.updated_at = NOW();\n RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE TRIGGER trg_updated\nBEFORE UPDATE ON users\nFOR EACH ROW EXECUTE FUNCTION set_updated_at();\n```\n**CREATE TRIGGER** fires a function automatically on INSERT, UPDATE, or DELETE. Use BEFORE triggers for validation/modification, AFTER triggers for auditing."
|
|
386
|
-
}
|
|
387
|
-
]
|
|
388
|
-
},
|
|
389
|
-
"VACUUM": {
|
|
390
|
-
"contents": [
|
|
391
|
-
{
|
|
392
|
-
"value": "```sql\nVACUUM ANALYZE users;\nVACUUM FULL large_table;\n```\n**VACUUM** (PostgreSQL) reclaims dead tuple space and updates planner statistics. VACUUM runs concurrently; VACUUM FULL rewrites the entire table (requires exclusive lock). Autovacuum handles this automatically in most cases."
|
|
393
|
-
}
|
|
394
|
-
]
|
|
395
|
-
},
|
|
396
|
-
"Materialized View": {
|
|
397
|
-
"contents": [
|
|
398
|
-
{
|
|
399
|
-
"value": "```sql\nCREATE MATERIALIZED VIEW mv_monthly_stats AS\nSELECT DATE_TRUNC('month', created_at) AS month, COUNT(*)\nFROM orders GROUP BY 1;\n\n-- Refresh in background\nREFRESH MATERIALIZED VIEW CONCURRENTLY mv_monthly_stats;\n```\n**Materialized views** cache query results for repeated fast reads. Use CONCURRENTLY to avoid locking during refresh. Create a unique index to enable concurrent refresh."
|
|
400
|
-
}
|
|
401
|
-
]
|
|
402
|
-
},
|
|
403
|
-
"LIKE":
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
"
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
"
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
"
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
{
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1
|
+
{
|
|
2
|
+
"language": "sql",
|
|
3
|
+
"hovers": {
|
|
4
|
+
"SELECT": {
|
|
5
|
+
"contents": [
|
|
6
|
+
{
|
|
7
|
+
"value": "```sql\nSELECT name, email\nFROM users\nWHERE active = true\nORDER BY name;\n```\n**SELECT** retrieves rows from tables. Use DISTINCT for unique rows, aliases with AS, and JOIN for multi-table queries."
|
|
8
|
+
}
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"INSERT": {
|
|
12
|
+
"contents": [
|
|
13
|
+
{
|
|
14
|
+
"value": "```sql\nINSERT INTO users (name, email)\nVALUES ('Alice', 'alice@example.com');\n```\n**INSERT** adds new rows. Use multi-row VALUES for bulk inserts, INSERT...SELECT to copy between tables, and ON CONFLICT for upserts."
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"UPDATE": {
|
|
19
|
+
"contents": [
|
|
20
|
+
{
|
|
21
|
+
"value": "```sql\nUPDATE products\nSET price = price * 1.10\nWHERE category = 'electronics';\n```\n**UPDATE** modifies existing rows. Always include a WHERE clause to avoid updating every row. Use RETURNING to get affected rows."
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"DELETE": {
|
|
26
|
+
"contents": [
|
|
27
|
+
{
|
|
28
|
+
"value": "```sql\nDELETE FROM sessions\nWHERE expires_at < NOW();\n```\n**DELETE** removes rows. Use TRUNCATE for fast full-table deletion. Always use WHERE to avoid deleting all rows."
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"MERGE": {
|
|
33
|
+
"contents": [
|
|
34
|
+
{
|
|
35
|
+
"value": "```sql\nMERGE INTO inventory t\nUSING new_stock s ON t.sku = s.sku\nWHEN MATCHED THEN UPDATE SET t.qty = t.qty + s.qty\nWHEN NOT MATCHED THEN INSERT (sku, qty) VALUES (s.sku, s.qty);\n```\n**MERGE** (SQL:2003) performs insert, update, or delete in one statement based on a join condition."
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"TRUNCATE": {
|
|
40
|
+
"contents": [
|
|
41
|
+
{
|
|
42
|
+
"value": "```sql\nTRUNCATE TABLE logs;\n```\n**TRUNCATE** removes all rows quickly. Unlike DELETE, it doesn't fire row-level triggers and cannot be rolled back in some databases."
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"CREATE TABLE": {
|
|
47
|
+
"contents": [
|
|
48
|
+
{
|
|
49
|
+
"value": "```sql\nCREATE TABLE orders (\n id SERIAL PRIMARY KEY,\n user_id INT REFERENCES users(id),\n total NUMERIC(10,2) NOT NULL,\n created_at TIMESTAMP DEFAULT NOW()\n);\n```\n**CREATE TABLE** defines a new table with columns, data types, and constraints."
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"ALTER TABLE": {
|
|
54
|
+
"contents": [
|
|
55
|
+
{
|
|
56
|
+
"value": "```sql\nALTER TABLE users\n ADD COLUMN phone VARCHAR(20),\n ALTER COLUMN name SET NOT NULL;\n```\n**ALTER TABLE** modifies a table's structure. You can add/drop columns, change types, add/remove constraints, and rename objects."
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"DROP TABLE": {
|
|
61
|
+
"contents": [
|
|
62
|
+
{
|
|
63
|
+
"value": "```sql\nDROP TABLE IF EXISTS temp_data CASCADE;\n```\n**DROP TABLE** permanently removes a table. Use IF EXISTS to avoid errors and CASCADE to also drop dependent objects."
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"CREATE INDEX": {
|
|
68
|
+
"contents": [
|
|
69
|
+
{
|
|
70
|
+
"value": "```sql\nCREATE INDEX idx_users_email ON users (email);\nCREATE INDEX idx_active ON users (email) WHERE active = true;\n```\n**CREATE INDEX** speeds up lookups. Use UNIQUE for uniqueness, partial indexes with WHERE, and GIN/GiST for full-text or JSON."
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"CREATE VIEW": {
|
|
75
|
+
"contents": [
|
|
76
|
+
{
|
|
77
|
+
"value": "```sql\nCREATE VIEW active_orders AS\nSELECT o.*, u.name AS customer\nFROM orders o\nJOIN users u ON o.user_id = u.id\nWHERE o.status = 'active';\n```\n**CREATE VIEW** defines a virtual table based on a query. Materialized views store results physically for better read performance."
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"INNER JOIN": {
|
|
82
|
+
"contents": [
|
|
83
|
+
{
|
|
84
|
+
"value": "```sql\nSELECT u.name, o.total\nFROM users u\nINNER JOIN orders o ON u.id = o.user_id;\n```\n**INNER JOIN** returns only rows with matches in both tables. It's the most common join type — non-matching rows are excluded."
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"LEFT JOIN": {
|
|
89
|
+
"contents": [
|
|
90
|
+
{
|
|
91
|
+
"value": "```sql\nSELECT u.name, o.total\nFROM users u\nLEFT JOIN orders o ON u.id = o.user_id;\n```\n**LEFT JOIN** returns all rows from the left table. If no match exists in the right table, NULL is returned for right-side columns."
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
},
|
|
95
|
+
"RIGHT JOIN": {
|
|
96
|
+
"contents": [
|
|
97
|
+
{
|
|
98
|
+
"value": "```sql\nSELECT o.id, u.name\nFROM orders o\nRIGHT JOIN users u ON o.user_id = u.id;\n```\n**RIGHT JOIN** returns all rows from the right table, with NULLs for unmatched left-side columns. Less common — often rewritten as LEFT JOIN."
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
"FULL OUTER JOIN": {
|
|
103
|
+
"contents": [
|
|
104
|
+
{
|
|
105
|
+
"value": "```sql\nSELECT a.id, b.id\nFROM table_a a\nFULL OUTER JOIN table_b b ON a.key = b.key;\n```\n**FULL OUTER JOIN** returns all rows from both tables. NULLs fill in where there is no match on either side."
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"CROSS JOIN": {
|
|
110
|
+
"contents": [
|
|
111
|
+
{
|
|
112
|
+
"value": "```sql\nSELECT c.color, s.size\nFROM colors c\nCROSS JOIN sizes s;\n```\n**CROSS JOIN** produces the Cartesian product — every combination of rows. Useful for generating combinations or number/date series."
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
},
|
|
116
|
+
"LATERAL JOIN": {
|
|
117
|
+
"contents": [
|
|
118
|
+
{
|
|
119
|
+
"value": "```sql\nSELECT u.name, lat.recent_order\nFROM users u\nLEFT JOIN LATERAL (\n SELECT total AS recent_order\n FROM orders WHERE user_id = u.id\n ORDER BY created_at DESC LIMIT 1\n) lat ON true;\n```\n**LATERAL JOIN** allows a subquery to reference columns from preceding FROM items. Powerful for top-N-per-group and correlated lookups."
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"ROW_NUMBER": {
|
|
124
|
+
"contents": [
|
|
125
|
+
{
|
|
126
|
+
"value": "```sql\nSELECT name, salary,\n ROW_NUMBER() OVER (PARTITION BY dept ORDER BY salary DESC) AS rn\nFROM employees;\n```\n**ROW_NUMBER()** assigns a unique sequential integer to rows within each partition. Great for pagination, deduplication, and top-N queries."
|
|
127
|
+
}
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"RANK": {
|
|
131
|
+
"contents": [
|
|
132
|
+
{
|
|
133
|
+
"value": "```sql\nSELECT name, score,\n RANK() OVER (ORDER BY score DESC) AS rank\nFROM students;\n```\n**RANK()** assigns positions with gaps for ties. E.g., two rows tied at rank 1 → next rank is 3. Use DENSE_RANK for no gaps."
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
},
|
|
137
|
+
"DENSE_RANK": {
|
|
138
|
+
"contents": [
|
|
139
|
+
{
|
|
140
|
+
"value": "```sql\nSELECT name, score,\n DENSE_RANK() OVER (ORDER BY score DESC) AS drank\nFROM students;\n```\n**DENSE_RANK()** assigns positions without gaps. Tied rows share a rank, and the next distinct value gets the next rank."
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
"LAG": {
|
|
145
|
+
"contents": [
|
|
146
|
+
{
|
|
147
|
+
"value": "```sql\nSELECT date, revenue,\n revenue - LAG(revenue) OVER (ORDER BY date) AS change\nFROM daily_sales;\n```\n**LAG()** accesses a value from a previous row without a self-join. The optional offset defaults to 1, and a default value avoids NULLs at partition boundaries."
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
"LEAD": {
|
|
152
|
+
"contents": [
|
|
153
|
+
{
|
|
154
|
+
"value": "```sql\nSELECT date, revenue,\n LEAD(revenue) OVER (ORDER BY date) AS next_day\nFROM daily_sales;\n```\n**LEAD()** accesses a value from a following row. Commonly used for calculating forward-looking differences or predictions."
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"WITH": {
|
|
159
|
+
"contents": [
|
|
160
|
+
{
|
|
161
|
+
"value": "```sql\nWITH regional_sales AS (\n SELECT region, SUM(amount) AS total\n FROM orders GROUP BY region\n)\nSELECT region, total\nFROM regional_sales\nWHERE total > 100000;\n```\n**WITH (CTE)** defines named temporary result sets. CTEs improve readability, allow reuse within a query, and are essential for recursive queries."
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
"WITH RECURSIVE": {
|
|
166
|
+
"contents": [
|
|
167
|
+
{
|
|
168
|
+
"value": "```sql\nWITH RECURSIVE nums AS (\n SELECT 1 AS n\n UNION ALL\n SELECT n + 1 FROM nums WHERE n < 100\n)\nSELECT * FROM nums;\n```\n**WITH RECURSIVE** enables recursive queries for trees, hierarchies, graph traversal, and sequence generation. Requires a base case and a recursive term connected by UNION ALL."
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
"COUNT": {
|
|
173
|
+
"contents": [
|
|
174
|
+
{
|
|
175
|
+
"value": "```sql\nSELECT COUNT(*) AS total_users FROM users;\nSELECT COUNT(DISTINCT email) AS unique_emails FROM users;\n```\n**COUNT** tallies rows. COUNT(*) counts all rows including NULLs; COUNT(col) counts non-NULL values; COUNT(DISTINCT col) counts unique values."
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
},
|
|
179
|
+
"SUM": {
|
|
180
|
+
"contents": [
|
|
181
|
+
{
|
|
182
|
+
"value": "```sql\nSELECT department, SUM(salary) AS total_salary\nFROM employees\nGROUP BY department;\n```\n**SUM** calculates the total of numeric values. NULL values are ignored. Use with GROUP BY for category totals."
|
|
183
|
+
}
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
"AVG": {
|
|
187
|
+
"contents": [
|
|
188
|
+
{
|
|
189
|
+
"value": "```sql\nSELECT AVG(price) AS avg_price\nFROM products\nWHERE category = 'electronics';\n```\n**AVG** computes the arithmetic mean. NULL values are excluded from both the sum and the count."
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
193
|
+
"STRING_AGG": {
|
|
194
|
+
"contents": [
|
|
195
|
+
{
|
|
196
|
+
"value": "```sql\nSELECT department,\n STRING_AGG(name, ', ' ORDER BY name) AS members\nFROM employees\nGROUP BY department;\n```\n**STRING_AGG** (PostgreSQL) concatenates values with a delimiter. Use ORDER BY within the aggregate for deterministic results. MySQL equivalent: GROUP_CONCAT."
|
|
197
|
+
}
|
|
198
|
+
]
|
|
199
|
+
},
|
|
200
|
+
"CONCAT": {
|
|
201
|
+
"contents": [
|
|
202
|
+
{
|
|
203
|
+
"value": "```sql\nSELECT CONCAT(first_name, ' ', last_name) AS full_name\nFROM employees;\n```\n**CONCAT** joins strings together. Unlike the `||` operator, CONCAT treats NULL as empty string in many databases."
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
"SUBSTRING": {
|
|
208
|
+
"contents": [
|
|
209
|
+
{
|
|
210
|
+
"value": "```sql\nSELECT SUBSTRING(email FROM 1 FOR POSITION('@' IN email) - 1) AS username\nFROM users;\n```\n**SUBSTRING** extracts a portion of a string. Uses FROM/FOR syntax (ANSI) or comma-separated arguments depending on the database."
|
|
211
|
+
}
|
|
212
|
+
]
|
|
213
|
+
},
|
|
214
|
+
"REPLACE": {
|
|
215
|
+
"contents": [
|
|
216
|
+
{
|
|
217
|
+
"value": "```sql\nSELECT REPLACE(phone, '-', '') AS clean_phone\nFROM contacts;\n```\n**REPLACE** substitutes all occurrences of a substring. Useful for data cleaning and normalization."
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
"TRIM": {
|
|
222
|
+
"contents": [
|
|
223
|
+
{
|
|
224
|
+
"value": "```sql\nSELECT TRIM(BOTH ' ' FROM name) AS clean_name\nFROM users;\n```\n**TRIM** removes leading and/or trailing characters. LEADING removes from start, TRAILING from end, BOTH from both sides."
|
|
225
|
+
}
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
"NOW": {
|
|
229
|
+
"contents": [
|
|
230
|
+
{
|
|
231
|
+
"value": "```sql\nSELECT NOW();\n-- 2024-10-15 14:30:45.123456+00\n\nSELECT * FROM orders WHERE created_at > NOW() - INTERVAL '7 days';\n```\n**NOW()** returns the current date and time with time zone. Equivalent to CURRENT_TIMESTAMP. In a transaction, the value stays constant."
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
"DATE_TRUNC": {
|
|
236
|
+
"contents": [
|
|
237
|
+
{
|
|
238
|
+
"value": "```sql\nSELECT DATE_TRUNC('month', created_at) AS month,\n COUNT(*) AS orders\nFROM orders\nGROUP BY 1\nORDER BY 1;\n```\n**DATE_TRUNC** (PostgreSQL) truncates a timestamp to the specified precision (year, quarter, month, week, day, hour, minute, second). Essential for time-series grouping."
|
|
239
|
+
}
|
|
240
|
+
]
|
|
241
|
+
},
|
|
242
|
+
"EXTRACT": {
|
|
243
|
+
"contents": [
|
|
244
|
+
{
|
|
245
|
+
"value": "```sql\nSELECT EXTRACT(YEAR FROM created_at) AS year,\n EXTRACT(MONTH FROM created_at) AS month\nFROM orders;\n```\n**EXTRACT** retrieves a field (YEAR, MONTH, DAY, HOUR, etc.) from a date or timestamp. EPOCH extracts Unix timestamp."
|
|
246
|
+
}
|
|
247
|
+
]
|
|
248
|
+
},
|
|
249
|
+
"INTERVAL": {
|
|
250
|
+
"contents": [
|
|
251
|
+
{
|
|
252
|
+
"value": "```sql\nSELECT NOW() - INTERVAL '30 days' AS thirty_days_ago;\nSELECT NOW() + INTERVAL '2 hours 30 minutes';\n```\n**INTERVAL** represents a span of time. Supports years, months, days, hours, minutes, seconds. Used in date arithmetic."
|
|
253
|
+
}
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
"JSON_BUILD_OBJECT": {
|
|
257
|
+
"contents": [
|
|
258
|
+
{
|
|
259
|
+
"value": "```sql\nSELECT JSON_BUILD_OBJECT(\n 'id', u.id,\n 'name', u.name,\n 'email', u.email\n) AS user_json\nFROM users u;\n```\n**JSON_BUILD_OBJECT** (PostgreSQL) constructs a JSON object from key-value pairs. Useful for building API responses directly in SQL."
|
|
260
|
+
}
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
"jsonb operators": {
|
|
264
|
+
"contents": [
|
|
265
|
+
{
|
|
266
|
+
"value": "```sql\n-- Extract as JSON: data -> 'key'\n-- Extract as text: data ->> 'key'\n-- Path extract: data #> '{a,b}'\n-- Contains: data @> '{\"status\":\"active\"}'\n-- Key exists: data ? 'email'\n-- Any key exists: data ?| array['a','b']\n\nSELECT * FROM docs WHERE data @> '{\"type\":\"report\"}';\n```\n**JSONB operators** (PostgreSQL) provide fast JSON querying. Use GIN indexes for @>, ?, and ?| operators."
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
"BEGIN": {
|
|
271
|
+
"contents": [
|
|
272
|
+
{
|
|
273
|
+
"value": "```sql\nBEGIN;\n UPDATE accounts SET balance = balance - 100 WHERE id = 1;\n UPDATE accounts SET balance = balance + 100 WHERE id = 2;\nCOMMIT;\n```\n**BEGIN** starts a transaction. All statements until COMMIT or ROLLBACK form an atomic unit. Use SAVEPOINT for partial rollbacks."
|
|
274
|
+
}
|
|
275
|
+
]
|
|
276
|
+
},
|
|
277
|
+
"COMMIT": {
|
|
278
|
+
"contents": [
|
|
279
|
+
{
|
|
280
|
+
"value": "```sql\nBEGIN;\n INSERT INTO logs (message) VALUES ('Operation completed');\nCOMMIT;\n```\n**COMMIT** makes all changes in the current transaction permanent. After commit, changes are visible to other sessions."
|
|
281
|
+
}
|
|
282
|
+
]
|
|
283
|
+
},
|
|
284
|
+
"ROLLBACK": {
|
|
285
|
+
"contents": [
|
|
286
|
+
{
|
|
287
|
+
"value": "```sql\nBEGIN;\n DELETE FROM users WHERE id = 42;\n -- Oops, wrong user!\nROLLBACK;\n```\n**ROLLBACK** undoes all changes since the last BEGIN. You can also ROLLBACK TO SAVEPOINT to undo partial work."
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
},
|
|
291
|
+
"CASE": {
|
|
292
|
+
"contents": [
|
|
293
|
+
{
|
|
294
|
+
"value": "```sql\nSELECT name,\n CASE\n WHEN salary > 100000 THEN 'Senior'\n WHEN salary > 50000 THEN 'Mid'\n ELSE 'Junior'\n END AS level\nFROM employees;\n```\n**CASE** is SQL's conditional expression. The searched form (CASE WHEN) evaluates conditions; the simple form (CASE expr WHEN) compares values. Always include ELSE for completeness."
|
|
295
|
+
}
|
|
296
|
+
]
|
|
297
|
+
},
|
|
298
|
+
"COALESCE": {
|
|
299
|
+
"contents": [
|
|
300
|
+
{
|
|
301
|
+
"value": "```sql\nSELECT COALESCE(nickname, first_name, 'Anonymous') AS display_name\nFROM users;\n```\n**COALESCE** returns the first non-NULL argument. Essential for providing fallback values and handling optional data."
|
|
302
|
+
}
|
|
303
|
+
]
|
|
304
|
+
},
|
|
305
|
+
"NULLIF": {
|
|
306
|
+
"contents": [
|
|
307
|
+
{
|
|
308
|
+
"value": "```sql\nSELECT total / NULLIF(count, 0) AS average\nFROM stats;\n```\n**NULLIF** returns NULL if both arguments are equal; otherwise returns the first. Commonly used to avoid division by zero."
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
},
|
|
312
|
+
"CAST": {
|
|
313
|
+
"contents": [
|
|
314
|
+
{
|
|
315
|
+
"value": "```sql\nSELECT CAST('2024-01-15' AS DATE);\nSELECT CAST(price AS INTEGER) FROM products;\n-- PostgreSQL shorthand:\nSELECT '2024-01-15'::DATE;\n```\n**CAST** converts a value to a specified type. PostgreSQL also supports the `::` operator. Use for type-safe comparisons and formatting."
|
|
316
|
+
}
|
|
317
|
+
]
|
|
318
|
+
},
|
|
319
|
+
"CREATE INDEX strategy": {
|
|
320
|
+
"contents": [
|
|
321
|
+
{
|
|
322
|
+
"value": "```sql\n-- B-tree (default): equality and range queries\nCREATE INDEX idx_email ON users (email);\n\n-- Partial: index only relevant rows\nCREATE INDEX idx_active ON users (email) WHERE active;\n\n-- Covering: avoid table lookups\nCREATE INDEX idx_cover ON orders (user_id) INCLUDE (total);\n\n-- GIN: JSONB, arrays, full-text\nCREATE INDEX idx_data ON docs USING GIN (data);\n```\n**Index strategies**: B-tree for most queries, partial for filtered subsets, covering (INCLUDE) to avoid heap fetches, GIN for JSONB/arrays, GiST for geometric/range types."
|
|
323
|
+
}
|
|
324
|
+
]
|
|
325
|
+
},
|
|
326
|
+
"EXPLAIN": {
|
|
327
|
+
"contents": [
|
|
328
|
+
{
|
|
329
|
+
"value": "```sql\nEXPLAIN ANALYZE\nSELECT u.name, COUNT(o.id)\nFROM users u\nLEFT JOIN orders o ON u.id = o.user_id\nGROUP BY u.name;\n```\n**EXPLAIN** shows the query plan. EXPLAIN ANALYZE actually executes the query and shows real timings. Look for Seq Scan on large tables (may need an index), Nested Loop vs Hash Join, and actual vs estimated row counts."
|
|
330
|
+
}
|
|
331
|
+
]
|
|
332
|
+
},
|
|
333
|
+
"GRANT": {
|
|
334
|
+
"contents": [
|
|
335
|
+
{
|
|
336
|
+
"value": "```sql\nGRANT SELECT, INSERT ON TABLE orders TO app_user;\nGRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO admin;\nGRANT USAGE ON SCHEMA app TO readonly_role;\n```\n**GRANT** assigns permissions. Grant minimum required privileges (principle of least privilege). Use roles to manage permissions at scale."
|
|
337
|
+
}
|
|
338
|
+
]
|
|
339
|
+
},
|
|
340
|
+
"Pagination": {
|
|
341
|
+
"contents": [
|
|
342
|
+
{
|
|
343
|
+
"value": "```sql\n-- Offset pagination (simple but slow for large offsets)\nSELECT * FROM products ORDER BY id LIMIT 20 OFFSET 100;\n\n-- Keyset pagination (efficient for large datasets)\nSELECT * FROM products\nWHERE id > 120\nORDER BY id LIMIT 20;\n```\n**Pagination**: Offset-based is simple but scans skipped rows. Keyset (cursor) pagination is faster for deep pages — use an indexed column as the cursor."
|
|
344
|
+
}
|
|
345
|
+
]
|
|
346
|
+
},
|
|
347
|
+
"Upsert": {
|
|
348
|
+
"contents": [
|
|
349
|
+
{
|
|
350
|
+
"value": "```sql\n-- PostgreSQL\nINSERT INTO users (id, name, email)\nVALUES (1, 'Alice', 'a@b.com')\nON CONFLICT (id)\nDO UPDATE SET name = EXCLUDED.name, email = EXCLUDED.email;\n\n-- MySQL\nINSERT INTO users (id, name)\nVALUES (1, 'Alice')\nON DUPLICATE KEY UPDATE name = VALUES(name);\n```\n**Upsert** inserts a row or updates it if a conflict exists. PostgreSQL uses ON CONFLICT, MySQL uses ON DUPLICATE KEY UPDATE, SQL Server uses MERGE."
|
|
351
|
+
}
|
|
352
|
+
]
|
|
353
|
+
},
|
|
354
|
+
"CTE vs Subquery": {
|
|
355
|
+
"contents": [
|
|
356
|
+
{
|
|
357
|
+
"value": "```sql\n-- CTE (more readable, reusable)\nWITH recent_orders AS (\n SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'\n)\nSELECT u.name, COUNT(ro.id)\nFROM users u\nJOIN recent_orders ro ON u.id = ro.user_id\nGROUP BY u.name;\n\n-- Subquery (inline)\nSELECT u.name, (\n SELECT COUNT(*) FROM orders o\n WHERE o.user_id = u.id AND o.created_at > NOW() - INTERVAL '30 days'\n) AS order_count\nFROM users u;\n```\n**CTEs vs Subqueries**: CTEs improve readability and allow reuse. Subqueries can sometimes be optimized better by the planner. Use CTEs for complex multi-step queries; subqueries for simple inline lookups."
|
|
358
|
+
}
|
|
359
|
+
]
|
|
360
|
+
},
|
|
361
|
+
"Window vs GROUP BY": {
|
|
362
|
+
"contents": [
|
|
363
|
+
{
|
|
364
|
+
"value": "```sql\n-- GROUP BY: one row per group\nSELECT dept, AVG(salary) FROM employees GROUP BY dept;\n\n-- Window: all rows with aggregate\nSELECT name, dept, salary,\n AVG(salary) OVER (PARTITION BY dept) AS dept_avg\nFROM employees;\n```\n**Window functions** compute aggregates while keeping all rows, unlike GROUP BY which collapses them. Use windows when you need both detail and summary data."
|
|
365
|
+
}
|
|
366
|
+
]
|
|
367
|
+
},
|
|
368
|
+
"COPY": {
|
|
369
|
+
"contents": [
|
|
370
|
+
{
|
|
371
|
+
"value": "```sql\n-- Export\nCOPY users TO '/tmp/users.csv' WITH (FORMAT csv, HEADER);\n\n-- Import\nCOPY users (name, email) FROM '/tmp/users.csv'\nWITH (FORMAT csv, HEADER true, DELIMITER ',');\n```\n**COPY** (PostgreSQL) transfers data between a table and a file at high speed. Use FORMAT csv for CSV files. For client-side files, use \\copy in psql."
|
|
372
|
+
}
|
|
373
|
+
]
|
|
374
|
+
},
|
|
375
|
+
"CREATE FUNCTION": {
|
|
376
|
+
"contents": [
|
|
377
|
+
{
|
|
378
|
+
"value": "```sql\nCREATE OR REPLACE FUNCTION get_status(p_id INT)\nRETURNS TEXT AS $$\nDECLARE\n v_status TEXT;\nBEGIN\n SELECT status INTO v_status FROM orders WHERE id = p_id;\n RETURN COALESCE(v_status, 'unknown');\nEND;\n$$ LANGUAGE plpgsql;\n```\n**CREATE FUNCTION** defines reusable logic in the database. Use RETURNS TABLE for set-returning functions. PL/pgSQL supports variables, loops, and exception handling."
|
|
379
|
+
}
|
|
380
|
+
]
|
|
381
|
+
},
|
|
382
|
+
"CREATE TRIGGER": {
|
|
383
|
+
"contents": [
|
|
384
|
+
{
|
|
385
|
+
"value": "```sql\nCREATE OR REPLACE FUNCTION set_updated_at()\nRETURNS TRIGGER AS $$\nBEGIN\n NEW.updated_at = NOW();\n RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE TRIGGER trg_updated\nBEFORE UPDATE ON users\nFOR EACH ROW EXECUTE FUNCTION set_updated_at();\n```\n**CREATE TRIGGER** fires a function automatically on INSERT, UPDATE, or DELETE. Use BEFORE triggers for validation/modification, AFTER triggers for auditing."
|
|
386
|
+
}
|
|
387
|
+
]
|
|
388
|
+
},
|
|
389
|
+
"VACUUM": {
|
|
390
|
+
"contents": [
|
|
391
|
+
{
|
|
392
|
+
"value": "```sql\nVACUUM ANALYZE users;\nVACUUM FULL large_table;\n```\n**VACUUM** (PostgreSQL) reclaims dead tuple space and updates planner statistics. VACUUM runs concurrently; VACUUM FULL rewrites the entire table (requires exclusive lock). Autovacuum handles this automatically in most cases."
|
|
393
|
+
}
|
|
394
|
+
]
|
|
395
|
+
},
|
|
396
|
+
"Materialized View": {
|
|
397
|
+
"contents": [
|
|
398
|
+
{
|
|
399
|
+
"value": "```sql\nCREATE MATERIALIZED VIEW mv_monthly_stats AS\nSELECT DATE_TRUNC('month', created_at) AS month, COUNT(*)\nFROM orders GROUP BY 1;\n\n-- Refresh in background\nREFRESH MATERIALIZED VIEW CONCURRENTLY mv_monthly_stats;\n```\n**Materialized views** cache query results for repeated fast reads. Use CONCURRENTLY to avoid locking during refresh. Create a unique index to enable concurrent refresh."
|
|
400
|
+
}
|
|
401
|
+
]
|
|
402
|
+
},
|
|
403
|
+
"LIKE": {
|
|
404
|
+
"contents": [
|
|
405
|
+
{
|
|
406
|
+
"value": "## LIKE\n\n```sql\nexpression LIKE pattern [ESCAPE escape_char]\nexpression ILIKE pattern -- case-insensitive (PostgreSQL)\n```\n\nPattern matching with wildcards:\n- `%` — matches any sequence of characters\n- `_` — matches any single character\n\n```sql\n-- Starts with 'John'\nSELECT * FROM users WHERE name LIKE 'John%';\n\n-- Contains 'admin'\nSELECT * FROM users WHERE email LIKE '%admin%';\n\n-- Exactly 3 characters\nSELECT * FROM codes WHERE code LIKE '___';\n\n-- Escape literal %\nSELECT * FROM data WHERE value LIKE '100\\%%' ESCAPE '\\\\';\n\n-- Case-insensitive (PostgreSQL)\nSELECT * FROM users WHERE name ILIKE '%john%';\n```\n\n**Performance tip:** Leading `%` prevents index usage. Consider `pg_trgm` extension for fast `LIKE '%pattern%'`."
|
|
407
|
+
}
|
|
408
|
+
]
|
|
409
|
+
},
|
|
410
|
+
"BETWEEN": {
|
|
411
|
+
"contents": [
|
|
412
|
+
{
|
|
413
|
+
"value": "## BETWEEN\n\n```sql\nexpression BETWEEN low AND high\nexpression NOT BETWEEN low AND high\n```\n\nInclusive range test. Equivalent to `expr >= low AND expr <= high`.\n\n```sql\n-- Numeric range\nSELECT * FROM products WHERE price BETWEEN 10 AND 50;\n\n-- Date range\nSELECT * FROM orders\nWHERE created_at BETWEEN '2024-01-01' AND '2024-12-31';\n\n-- NOT BETWEEN\nSELECT * FROM users WHERE age NOT BETWEEN 18 AND 65;\n```\n\n**Note:** BETWEEN is inclusive on both ends. For timestamps, be careful with end boundary."
|
|
414
|
+
}
|
|
415
|
+
]
|
|
416
|
+
},
|
|
417
|
+
"IN": {
|
|
418
|
+
"contents": [
|
|
419
|
+
{
|
|
420
|
+
"value": "## IN\n\n```sql\nexpression IN (value1, value2, ...)\nexpression IN (subquery)\nexpression NOT IN (values)\n```\n\nTest membership in a set.\n\n```sql\n-- Literal values\nSELECT * FROM users WHERE role IN ('admin', 'editor', 'mod');\n\n-- Subquery\nSELECT * FROM products WHERE category_id IN (\n SELECT id FROM categories WHERE active = true\n);\n\n-- NOT IN\nSELECT * FROM orders WHERE status NOT IN ('cancelled', 'refunded');\n```\n\n**Warning:** `NOT IN` with NULLs returns unexpected results. Prefer `NOT EXISTS` when subquery may contain NULLs."
|
|
421
|
+
}
|
|
422
|
+
]
|
|
423
|
+
},
|
|
424
|
+
"EXISTS": {
|
|
425
|
+
"contents": [
|
|
426
|
+
{
|
|
427
|
+
"value": "## EXISTS\n\n```sql\nEXISTS (subquery)\nNOT EXISTS (subquery)\n```\n\nReturns TRUE if subquery produces any rows.\n\n```sql\n-- Find users with orders\nSELECT * FROM users u\nWHERE EXISTS (\n SELECT 1 FROM orders o WHERE o.user_id = u.id\n);\n\n-- Find users without orders\nSELECT * FROM users u\nWHERE NOT EXISTS (\n SELECT 1 FROM orders o WHERE o.user_id = u.id\n);\n```\n\n**Performance:** EXISTS stops scanning as soon as one row is found. Often faster than `IN` for large datasets."
|
|
428
|
+
}
|
|
429
|
+
]
|
|
430
|
+
},
|
|
431
|
+
"data_types": {
|
|
432
|
+
"contents": [
|
|
433
|
+
{
|
|
434
|
+
"value": "## SQL Data Types\n\n| Type | Description | Example |\n|------|-------------|---------|\n| `INTEGER` / `INT` | 32-bit signed integer | `age INTEGER` |\n| `BIGINT` | 64-bit integer | `id BIGINT` |\n| `SMALLINT` | 16-bit integer | `quantity SMALLINT` |\n| `SERIAL` | Auto-increment integer | `id SERIAL PRIMARY KEY` |\n| `NUMERIC(p,s)` | Exact decimal | `price NUMERIC(10,2)` |\n| `REAL` / `FLOAT4` | 32-bit floating point | `score REAL` |\n| `DOUBLE PRECISION` | 64-bit floating point | `value DOUBLE PRECISION` |\n| `VARCHAR(n)` | Variable-length string | `name VARCHAR(100)` |\n| `TEXT` | Unlimited string | `bio TEXT` |\n| `CHAR(n)` | Fixed-length string | `code CHAR(3)` |\n| `BOOLEAN` | true/false | `active BOOLEAN` |\n| `DATE` | Date only | `birthday DATE` |\n| `TIME` | Time only | `start_time TIME` |\n| `TIMESTAMP` | Date + time | `created_at TIMESTAMP` |\n| `TIMESTAMPTZ` | With timezone | `event_at TIMESTAMPTZ` |\n| `INTERVAL` | Time duration | `duration INTERVAL` |\n| `UUID` | UUID v4 | `id UUID` |\n| `JSONB` | Binary JSON | `data JSONB` |\n| `BYTEA` | Binary data | `file BYTEA` |\n| `ARRAY` | Array of any type | `tags TEXT[]` |"
|
|
435
|
+
}
|
|
436
|
+
]
|
|
437
|
+
},
|
|
438
|
+
"constraints": {
|
|
439
|
+
"contents": [
|
|
440
|
+
{
|
|
441
|
+
"value": "## Constraints\n\n```sql\nCREATE TABLE example (\n id SERIAL PRIMARY KEY,\n email VARCHAR(255) NOT NULL UNIQUE,\n age INTEGER CHECK (age >= 0 AND age < 200),\n role VARCHAR(20) DEFAULT 'user',\n dept_id INTEGER REFERENCES departments(id) ON DELETE SET NULL,\n \n -- Table-level constraints\n CONSTRAINT valid_email CHECK (email LIKE '%@%'),\n CONSTRAINT unique_per_dept UNIQUE (email, dept_id)\n);\n```\n\n| Constraint | Description |\n|-----------|-------------|\n| `PRIMARY KEY` | Unique + NOT NULL, one per table |\n| `FOREIGN KEY` | References another table |\n| `UNIQUE` | All values must be distinct |\n| `NOT NULL` | Prevents NULL |\n| `CHECK` | Custom boolean condition |\n| `DEFAULT` | Value when not specified |\n| `EXCLUDE` | Exclusion constraint (PostgreSQL) |\n\n**ON DELETE actions:** `CASCADE`, `SET NULL`, `SET DEFAULT`, `RESTRICT`, `NO ACTION`"
|
|
442
|
+
}
|
|
443
|
+
]
|
|
444
|
+
},
|
|
445
|
+
"ABS": {
|
|
446
|
+
"contents": [
|
|
447
|
+
{
|
|
448
|
+
"value": "## ABS\n\n```sql\nABS(number) → number\n```\n\nReturns absolute (non-negative) value.\n\n```sql\nSELECT ABS(-42); -- 42\nSELECT ABS(price - cost) AS margin FROM products;\n```"
|
|
449
|
+
}
|
|
450
|
+
]
|
|
451
|
+
},
|
|
452
|
+
"CEIL": {
|
|
453
|
+
"contents": [
|
|
454
|
+
{
|
|
455
|
+
"value": "## CEIL / CEILING\n\n```sql\nCEIL(number) → integer\n```\n\nRound up to nearest integer.\n\n```sql\nSELECT CEIL(4.2); -- 5\nSELECT CEIL(-4.8); -- -4\n```"
|
|
456
|
+
}
|
|
457
|
+
]
|
|
458
|
+
},
|
|
459
|
+
"FLOOR": {
|
|
460
|
+
"contents": [
|
|
461
|
+
{
|
|
462
|
+
"value": "## FLOOR\n\n```sql\nFLOOR(number) → integer\n```\n\nRound down to nearest integer.\n\n```sql\nSELECT FLOOR(4.8); -- 4\nSELECT FLOOR(-4.2); -- -5\n```"
|
|
463
|
+
}
|
|
464
|
+
]
|
|
465
|
+
},
|
|
466
|
+
"ROUND": {
|
|
467
|
+
"contents": [
|
|
468
|
+
{
|
|
469
|
+
"value": "## ROUND\n\n```sql\nROUND(number [, decimal_places]) → number\n```\n\nRound to specified decimal places (default 0).\n\n```sql\nSELECT ROUND(3.14159); -- 3\nSELECT ROUND(3.14159, 2); -- 3.14\nSELECT ROUND(1234, -2); -- 1200\n```"
|
|
470
|
+
}
|
|
471
|
+
]
|
|
472
|
+
},
|
|
473
|
+
"POWER": {
|
|
474
|
+
"contents": [
|
|
475
|
+
{
|
|
476
|
+
"value": "## POWER\n\n```sql\nPOWER(base, exponent) → number\n```\n\nRaise number to a power.\n\n```sql\nSELECT POWER(2, 10); -- 1024\nSELECT POWER(27, 1.0/3); -- 3 (cube root)\n```"
|
|
477
|
+
}
|
|
478
|
+
]
|
|
479
|
+
},
|
|
480
|
+
"SQRT": {
|
|
481
|
+
"contents": [
|
|
482
|
+
{
|
|
483
|
+
"value": "## SQRT\n\n```sql\nSQRT(number) → number\n```\n\nSquare root.\n\n```sql\nSELECT SQRT(144); -- 12\n```"
|
|
484
|
+
}
|
|
485
|
+
]
|
|
486
|
+
},
|
|
487
|
+
"MOD": {
|
|
488
|
+
"contents": [
|
|
489
|
+
{
|
|
490
|
+
"value": "## MOD\n\n```sql\nMOD(dividend, divisor) → number\n-- or: dividend % divisor\n```\n\nRemainder of integer division.\n\n```sql\nSELECT MOD(10, 3); -- 1\nSELECT 10 % 3; -- 1 (operator form)\n```"
|
|
491
|
+
}
|
|
492
|
+
]
|
|
493
|
+
},
|
|
494
|
+
"UPPER": {
|
|
495
|
+
"contents": [
|
|
496
|
+
{
|
|
497
|
+
"value": "## UPPER / LOWER\n\n```sql\nUPPER(string) → text\nLOWER(string) → text\n```\n\n```sql\nSELECT UPPER('hello'); -- 'HELLO'\nSELECT LOWER('HELLO'); -- 'hello'\n```"
|
|
498
|
+
}
|
|
499
|
+
]
|
|
500
|
+
},
|
|
501
|
+
"LENGTH": {
|
|
502
|
+
"contents": [
|
|
503
|
+
{
|
|
504
|
+
"value": "## LENGTH\n\n```sql\nLENGTH(string) → integer\nCHAR_LENGTH(string) → integer -- SQL standard\n```\n\nReturn string length.\n\n```sql\nSELECT LENGTH('hello'); -- 5\n```"
|
|
505
|
+
}
|
|
506
|
+
]
|
|
507
|
+
},
|
|
508
|
+
"POSITION": {
|
|
509
|
+
"contents": [
|
|
510
|
+
{
|
|
511
|
+
"value": "## POSITION\n\n```sql\nPOSITION(substring IN string) → integer\n-- or: STRPOS(string, substring)\n```\n\nFind position of substring (1-based, 0 if not found).\n\n```sql\nSELECT POSITION('world' IN 'hello world'); -- 7\n```"
|
|
512
|
+
}
|
|
513
|
+
]
|
|
514
|
+
},
|
|
515
|
+
"LPAD": {
|
|
516
|
+
"contents": [
|
|
517
|
+
{
|
|
518
|
+
"value": "## LPAD / RPAD\n\n```sql\nLPAD(string, length [, fill]) → text\nRPAD(string, length [, fill]) → text\n```\n\nPad string to specified length.\n\n```sql\nSELECT LPAD('42', 5, '0'); -- '00042'\nSELECT RPAD('hi', 5, '.'); -- 'hi...'\n```"
|
|
519
|
+
}
|
|
520
|
+
]
|
|
521
|
+
},
|
|
522
|
+
"SPLIT_PART": {
|
|
523
|
+
"contents": [
|
|
524
|
+
{
|
|
525
|
+
"value": "## SPLIT_PART\n\n```sql\nSPLIT_PART(string, delimiter, position) → text\n```\n\nSplit string and return nth part.\n\n```sql\nSELECT SPLIT_PART('a.b.c', '.', 2); -- 'b'\nSELECT SPLIT_PART('john@example.com', '@', 1); -- 'john'\n```"
|
|
526
|
+
}
|
|
527
|
+
]
|
|
528
|
+
},
|
|
529
|
+
"Window functions": {
|
|
530
|
+
"contents": [
|
|
531
|
+
{
|
|
532
|
+
"value": "## Window Functions\n\n```sql\nfunction() OVER (\n [PARTITION BY column]\n [ORDER BY column [ASC|DESC]]\n [frame_clause]\n)\n```\n\n**Ranking:**\n```sql\nSELECT name, salary,\n ROW_NUMBER() OVER (ORDER BY salary DESC) as row_num,\n RANK() OVER (ORDER BY salary DESC) as rank,\n DENSE_RANK() OVER (ORDER BY salary DESC) as dense_rank,\n NTILE(4) OVER (ORDER BY salary DESC) as quartile\nFROM employees;\n```\n\n**Value access:**\n```sql\nSELECT date, value,\n LAG(value, 1) OVER (ORDER BY date) as prev_value,\n LEAD(value, 1) OVER (ORDER BY date) as next_value,\n FIRST_VALUE(value) OVER (ORDER BY date) as first,\n LAST_VALUE(value) OVER (ORDER BY date\n ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as last\nFROM metrics;\n```\n\n**Frame clause:**\n- `ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW` (default)\n- `ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING`\n- `RANGE BETWEEN INTERVAL '7 days' PRECEDING AND CURRENT ROW`"
|
|
533
|
+
}
|
|
534
|
+
]
|
|
535
|
+
},
|
|
536
|
+
"MAX": {
|
|
537
|
+
"contents": [
|
|
538
|
+
{
|
|
539
|
+
"value": "## MAX / MIN\n\n```sql\nMAX(expression) → same type\nMIN(expression) → same type\n```\n\nReturn maximum/minimum value.\n\n```sql\nSELECT MAX(salary), MIN(salary) FROM employees;\nSELECT department, MAX(salary) FROM employees GROUP BY department;\n```"
|
|
540
|
+
}
|
|
541
|
+
]
|
|
542
|
+
},
|
|
543
|
+
"ARRAY_AGG": {
|
|
544
|
+
"contents": [
|
|
545
|
+
{
|
|
546
|
+
"value": "## ARRAY_AGG\n\n```sql\nARRAY_AGG(expression [ORDER BY ...]) → array\n```\n\nCollect values into an array.\n\n```sql\nSELECT department,\n ARRAY_AGG(name ORDER BY name) as member_array\nFROM employees\nGROUP BY department;\n```"
|
|
547
|
+
}
|
|
548
|
+
]
|
|
549
|
+
},
|
|
550
|
+
"GENERATE_SERIES": {
|
|
551
|
+
"contents": [
|
|
552
|
+
{
|
|
553
|
+
"value": "## generate_series\n\n```sql\ngenerate_series(start, stop [, step])\n```\n\nGenerate a series of values (PostgreSQL).\n\n```sql\n-- Numbers\nSELECT generate_series(1, 10);\nSELECT generate_series(0, 100, 10); -- 0, 10, 20, ...\n\n-- Dates\nSELECT generate_series(\n '2024-01-01'::date,\n '2024-12-31'::date,\n '1 month'::interval\n);\n\n-- Fill gaps in time series\nSELECT d::date, COALESCE(count, 0)\nFROM generate_series('2024-01-01', '2024-01-31', '1 day') d\nLEFT JOIN daily_counts ON daily_counts.day = d::date;\n```"
|
|
554
|
+
}
|
|
555
|
+
]
|
|
556
|
+
},
|
|
557
|
+
"BIGINT": {
|
|
558
|
+
"contents": [
|
|
559
|
+
{
|
|
560
|
+
"value": "```sql\nCREATE TABLE events (\n id BIGINT PRIMARY KEY,\n timestamp_ms BIGINT NOT NULL\n);\n-- Range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807\n```\n**BIGINT** is an 8-byte integer type. Use for large IDs, timestamps in milliseconds, or any value exceeding the INTEGER range (~2.1 billion). Available in all major databases."
|
|
561
|
+
}
|
|
562
|
+
]
|
|
563
|
+
},
|
|
564
|
+
"BIGSERIAL": {
|
|
565
|
+
"contents": [
|
|
566
|
+
{
|
|
567
|
+
"value": "```sql\nCREATE TABLE logs (\n id BIGSERIAL PRIMARY KEY,\n message TEXT\n);\n-- Equivalent to: BIGINT NOT NULL DEFAULT nextval('logs_id_seq')\n```\n**BIGSERIAL** (PostgreSQL) is an auto-incrementing 8-byte integer. Creates a sequence automatically. Use when SERIAL range (2.1B) is insufficient. MySQL equivalent: `BIGINT AUTO_INCREMENT`."
|
|
568
|
+
}
|
|
569
|
+
]
|
|
570
|
+
},
|
|
571
|
+
"BOOLEAN": {
|
|
572
|
+
"contents": [
|
|
573
|
+
{
|
|
574
|
+
"value": "```sql\nCREATE TABLE users (\n active BOOLEAN DEFAULT true\n);\nSELECT * FROM users WHERE active = true;\n-- PostgreSQL: true/false, MySQL: TINYINT(1)/BOOL\n```\n**BOOLEAN** stores true/false values. PostgreSQL has native BOOLEAN; MySQL implements it as TINYINT(1). Accepts `TRUE`, `FALSE`, `1`, `0`."
|
|
575
|
+
}
|
|
576
|
+
]
|
|
577
|
+
},
|
|
578
|
+
"BYTEA": {
|
|
579
|
+
"contents": [
|
|
580
|
+
{
|
|
581
|
+
"value": "```sql\nCREATE TABLE files (\n content BYTEA\n);\nINSERT INTO files VALUES (decode('48656C6C6F', 'hex'));\n```\n**BYTEA** (PostgreSQL) stores binary data (byte arrays). Equivalent to MySQL's BLOB. Supports hex and escape input formats. Use for small binary objects; consider large objects or file storage for bigger data."
|
|
582
|
+
}
|
|
583
|
+
]
|
|
584
|
+
},
|
|
585
|
+
"CHAR": {
|
|
586
|
+
"contents": [
|
|
587
|
+
{
|
|
588
|
+
"value": "```sql\nCREATE TABLE countries (\n code CHAR(2) PRIMARY KEY -- always 2 characters, padded\n);\n```\n**CHAR(n)** is a fixed-length character type, right-padded with spaces to length `n`. More efficient than VARCHAR for truly fixed-length data (country codes, currency codes). Max length varies by database."
|
|
589
|
+
}
|
|
590
|
+
]
|
|
591
|
+
},
|
|
592
|
+
"CIDR": {
|
|
593
|
+
"contents": [
|
|
594
|
+
{
|
|
595
|
+
"value": "```sql\nCREATE TABLE networks (\n subnet CIDR NOT NULL\n);\nSELECT * FROM networks WHERE subnet >>= '192.168.1.5';\n```\n**CIDR** (PostgreSQL) stores IPv4/IPv6 network addresses with subnet mask. Supports network containment operators (`>>=`, `<<=`, `&&`). Use INET for host addresses, CIDR for network addresses."
|
|
596
|
+
}
|
|
597
|
+
]
|
|
598
|
+
},
|
|
599
|
+
"DATE": {
|
|
600
|
+
"contents": [
|
|
601
|
+
{
|
|
602
|
+
"value": "```sql\nCREATE TABLE events (\n event_date DATE DEFAULT CURRENT_DATE\n);\nSELECT * FROM events WHERE event_date BETWEEN '2024-01-01' AND '2024-12-31';\n```\n**DATE** stores calendar dates (year, month, day) without time. Format: `YYYY-MM-DD`. Range varies by database. Use TIMESTAMP when time is also needed."
|
|
603
|
+
}
|
|
604
|
+
]
|
|
605
|
+
},
|
|
606
|
+
"DECIMAL": {
|
|
607
|
+
"contents": [
|
|
608
|
+
{
|
|
609
|
+
"value": "```sql\nCREATE TABLE products (\n price DECIMAL(10, 2) -- up to 99999999.99\n);\n```\n**DECIMAL(precision, scale)** stores exact numeric values. `precision` = total digits, `scale` = digits after decimal. No floating-point rounding errors. Essential for financial/monetary data. Alias: NUMERIC."
|
|
610
|
+
}
|
|
611
|
+
]
|
|
612
|
+
},
|
|
613
|
+
"ENUM": {
|
|
614
|
+
"contents": [
|
|
615
|
+
{
|
|
616
|
+
"value": "```sql\n-- PostgreSQL:\nCREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');\nCREATE TABLE people (current_mood mood);\n-- MySQL:\nCREATE TABLE shirts (size ENUM('S', 'M', 'L', 'XL'));\n```\n**ENUM** defines a column with a fixed set of allowed values. PostgreSQL creates a custom type; MySQL defines inline. Provides type safety and storage efficiency. Adding values requires ALTER TYPE/TABLE."
|
|
617
|
+
}
|
|
618
|
+
]
|
|
619
|
+
},
|
|
620
|
+
"FLOAT": {
|
|
621
|
+
"contents": [
|
|
622
|
+
{
|
|
623
|
+
"value": "```sql\nCREATE TABLE sensors (\n reading FLOAT\n);\n-- Approximate numeric, 4 or 8 bytes\n-- Use DECIMAL for exact precision (financial data)\n```\n**FLOAT** stores approximate floating-point numbers (IEEE 754). Fast computation but subject to rounding errors. Use DECIMAL/NUMERIC for exact precision. FLOAT = single precision (4 bytes), DOUBLE = double precision (8 bytes)."
|
|
624
|
+
}
|
|
625
|
+
]
|
|
626
|
+
},
|
|
627
|
+
"INET": {
|
|
628
|
+
"contents": [
|
|
629
|
+
{
|
|
630
|
+
"value": "```sql\nCREATE TABLE connections (\n ip_addr INET NOT NULL\n);\nSELECT * FROM connections WHERE ip_addr << '192.168.0.0/16';\n```\n**INET** (PostgreSQL) stores IPv4/IPv6 host addresses with optional subnet mask. Supports containment (`<<`, `>>`), comparison, and bitwise operators. More space-efficient than storing IPs as strings."
|
|
631
|
+
}
|
|
632
|
+
]
|
|
633
|
+
},
|
|
634
|
+
"INTEGER": {
|
|
635
|
+
"contents": [
|
|
636
|
+
{
|
|
637
|
+
"value": "```sql\nCREATE TABLE users (\n age INTEGER CHECK (age >= 0)\n);\n-- Range: -2,147,483,648 to 2,147,483,647 (4 bytes)\n```\n**INTEGER** (INT) is a 4-byte signed integer type. The most common numeric type. Range: ±2.1 billion. Aliases: INT, INT4. Use BIGINT for larger ranges, SMALLINT for smaller storage."
|
|
638
|
+
}
|
|
639
|
+
]
|
|
640
|
+
},
|
|
641
|
+
"JSON": {
|
|
642
|
+
"contents": [
|
|
643
|
+
{
|
|
644
|
+
"value": "```sql\nCREATE TABLE api_logs (\n payload JSON NOT NULL\n);\n-- PostgreSQL:\nSELECT payload->>'name' FROM api_logs;\n-- MySQL:\nSELECT JSON_EXTRACT(payload, '$.name') FROM api_logs;\n```\n**JSON** stores JSON data with validation. PostgreSQL stores as text (reparsed on access); use JSONB for indexed binary storage. MySQL supports JSON with path extraction functions."
|
|
645
|
+
}
|
|
646
|
+
]
|
|
647
|
+
},
|
|
648
|
+
"JSONB": {
|
|
649
|
+
"contents": [
|
|
650
|
+
{
|
|
651
|
+
"value": "```sql\nCREATE TABLE documents (\n data JSONB NOT NULL\n);\nCREATE INDEX idx_data ON documents USING gin(data);\nSELECT * FROM documents WHERE data @> '{\"type\": \"invoice\"}';\nSELECT data->>'name', data->'address'->>'city' FROM documents;\n```\n**JSONB** (PostgreSQL) stores JSON in decomposed binary format. Faster to query than JSON, supports GIN indexing, and containment operators (`@>`, `<@`, `?`, `?|`, `?&`). Slight overhead on insert due to parsing."
|
|
652
|
+
}
|
|
653
|
+
]
|
|
654
|
+
},
|
|
655
|
+
"NUMERIC": {
|
|
656
|
+
"contents": [
|
|
657
|
+
{
|
|
658
|
+
"value": "```sql\nCREATE TABLE transactions (\n amount NUMERIC(15, 4) NOT NULL\n);\n```\n**NUMERIC(precision, scale)** stores exact decimal numbers. Identical to DECIMAL. No rounding errors. Preferred for financial calculations. Without precision, PostgreSQL allows arbitrary precision (slower)."
|
|
659
|
+
}
|
|
660
|
+
]
|
|
661
|
+
},
|
|
662
|
+
"REAL": {
|
|
663
|
+
"contents": [
|
|
664
|
+
{
|
|
665
|
+
"value": "```sql\nCREATE TABLE measurements (\n value REAL -- 4-byte floating point\n);\n```\n**REAL** is a 4-byte single-precision floating-point type (IEEE 754). Approximately 6 decimal digits of precision. Alias for FLOAT4 in PostgreSQL. Use DOUBLE PRECISION for more accuracy."
|
|
666
|
+
}
|
|
667
|
+
]
|
|
668
|
+
},
|
|
669
|
+
"SERIAL": {
|
|
670
|
+
"contents": [
|
|
671
|
+
{
|
|
672
|
+
"value": "```sql\nCREATE TABLE users (\n id SERIAL PRIMARY KEY,\n name TEXT NOT NULL\n);\n-- Equivalent to: INTEGER NOT NULL DEFAULT nextval('users_id_seq')\n```\n**SERIAL** (PostgreSQL) is an auto-incrementing 4-byte integer. Automatically creates a sequence. MySQL equivalent: `INT AUTO_INCREMENT`. PostgreSQL 10+ recommends `GENERATED ALWAYS AS IDENTITY` instead."
|
|
673
|
+
}
|
|
674
|
+
]
|
|
675
|
+
},
|
|
676
|
+
"SMALLINT": {
|
|
677
|
+
"contents": [
|
|
678
|
+
{
|
|
679
|
+
"value": "```sql\nCREATE TABLE config (\n priority SMALLINT DEFAULT 0\n);\n-- Range: -32,768 to 32,767 (2 bytes)\n```\n**SMALLINT** is a 2-byte integer type. Use for small-range values to save storage: ports, percentages, small counters. Range: -32,768 to 32,767."
|
|
680
|
+
}
|
|
681
|
+
]
|
|
682
|
+
},
|
|
683
|
+
"TEXT": {
|
|
684
|
+
"contents": [
|
|
685
|
+
{
|
|
686
|
+
"value": "```sql\nCREATE TABLE posts (\n content TEXT NOT NULL\n);\n```\n**TEXT** stores variable-length strings with no specified maximum length. In PostgreSQL, functionally equivalent to VARCHAR without a limit. In MySQL, supports up to ~4GB (LONGTEXT). Use for large text fields where length is unpredictable."
|
|
687
|
+
}
|
|
688
|
+
]
|
|
689
|
+
},
|
|
690
|
+
"TIMESTAMP": {
|
|
691
|
+
"contents": [
|
|
692
|
+
{
|
|
693
|
+
"value": "```sql\nCREATE TABLE events (\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n```\n**TIMESTAMP** stores date and time (no timezone info). Format: `YYYY-MM-DD HH:MM:SS`. Use TIMESTAMPTZ for timezone-aware storage. Microsecond precision in PostgreSQL."
|
|
694
|
+
}
|
|
695
|
+
]
|
|
696
|
+
},
|
|
697
|
+
"TIMESTAMPTZ": {
|
|
698
|
+
"contents": [
|
|
699
|
+
{
|
|
700
|
+
"value": "```sql\nCREATE TABLE events (\n created_at TIMESTAMPTZ DEFAULT NOW()\n);\n-- Stored as UTC, displayed in session timezone\nSET timezone = 'America/New_York';\nSELECT created_at FROM events;\n```\n**TIMESTAMPTZ** (PostgreSQL) is a timezone-aware timestamp. Stores internally as UTC; converts to/from the session's timezone on I/O. **Always prefer TIMESTAMPTZ over TIMESTAMP** for correct time handling across timezones."
|
|
701
|
+
}
|
|
702
|
+
]
|
|
703
|
+
},
|
|
704
|
+
"UUID": {
|
|
705
|
+
"contents": [
|
|
706
|
+
{
|
|
707
|
+
"value": "```sql\nCREATE TABLE users (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid()\n);\n-- Example: 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'\n```\n**UUID** stores 128-bit universally unique identifiers. 16 bytes storage. Use `gen_random_uuid()` (PostgreSQL 13+) or `uuid_generate_v4()` (uuid-ossp extension). Ideal for distributed systems where sequential IDs are impractical."
|
|
708
|
+
}
|
|
709
|
+
]
|
|
710
|
+
},
|
|
711
|
+
"VARCHAR": {
|
|
712
|
+
"contents": [
|
|
713
|
+
{
|
|
714
|
+
"value": "```sql\nCREATE TABLE users (\n email VARCHAR(255) NOT NULL UNIQUE,\n name VARCHAR(100)\n);\n```\n**VARCHAR(n)** stores variable-length strings up to `n` characters. No padding (unlike CHAR). Most common string type. Without `n`, PostgreSQL treats it as unlimited length. MySQL max is 65,535 bytes per row."
|
|
715
|
+
}
|
|
716
|
+
]
|
|
717
|
+
},
|
|
718
|
+
"ARRAY": {
|
|
719
|
+
"contents": [
|
|
720
|
+
{
|
|
721
|
+
"value": "```sql\nCREATE TABLE posts (\n tags TEXT[] DEFAULT '{}'\n);\nINSERT INTO posts (tags) VALUES (ARRAY['sql', 'database']);\nSELECT * FROM posts WHERE 'sql' = ANY(tags);\nSELECT tags[1] FROM posts; -- 1-indexed\n```\n**ARRAY** (PostgreSQL) allows columns to hold arrays of any data type. Supports indexing (`[n]`), containment (`@>`, `<@`), overlap (`&&`), and `ANY`/`ALL` operators. Create GIN indexes for fast array searches."
|
|
722
|
+
}
|
|
723
|
+
]
|
|
724
|
+
},
|
|
725
|
+
"CHAR_LENGTH": {
|
|
726
|
+
"contents": [
|
|
727
|
+
{
|
|
728
|
+
"value": "```sql\nSELECT CHAR_LENGTH('Hello'); -- 5\nSELECT CHAR_LENGTH('日本語'); -- 3 (characters, not bytes)\n```\n**CHAR_LENGTH** (CHARACTER_LENGTH) returns the number of characters in a string. Unlike `LENGTH`/`OCTET_LENGTH`, counts characters not bytes — important for multi-byte encodings."
|
|
729
|
+
}
|
|
730
|
+
]
|
|
731
|
+
},
|
|
732
|
+
"INITCAP": {
|
|
733
|
+
"contents": [
|
|
734
|
+
{
|
|
735
|
+
"value": "```sql\nSELECT INITCAP('hello world'); -- 'Hello World'\nSELECT INITCAP('hELLO'); -- 'Hello'\n```\n**INITCAP** (PostgreSQL) capitalizes the first letter of each word and lowercases the rest. Word boundaries are non-alphanumeric characters."
|
|
736
|
+
}
|
|
737
|
+
]
|
|
738
|
+
},
|
|
739
|
+
"LEFT": {
|
|
740
|
+
"contents": [
|
|
741
|
+
{
|
|
742
|
+
"value": "```sql\nSELECT LEFT('Hello World', 5); -- 'Hello'\nSELECT LEFT('abcdef', 3); -- 'abc'\n```\n**LEFT** returns the leftmost `n` characters from a string. Equivalent to `SUBSTRING(str FROM 1 FOR n)`."
|
|
743
|
+
}
|
|
744
|
+
]
|
|
745
|
+
},
|
|
746
|
+
"RIGHT": {
|
|
747
|
+
"contents": [
|
|
748
|
+
{
|
|
749
|
+
"value": "```sql\nSELECT RIGHT('Hello World', 5); -- 'World'\nSELECT RIGHT('abcdef', 3); -- 'def'\n```\n**RIGHT** returns the rightmost `n` characters from a string."
|
|
750
|
+
}
|
|
751
|
+
]
|
|
752
|
+
},
|
|
753
|
+
"LOWER": {
|
|
754
|
+
"contents": [
|
|
755
|
+
{
|
|
756
|
+
"value": "```sql\nSELECT LOWER('HELLO'); -- 'hello'\nSELECT * FROM users WHERE LOWER(email) = 'user@example.com';\n```\n**LOWER** converts a string to all lowercase characters. Locale-aware. Common for case-insensitive comparisons (though `ILIKE` or `CITEXT` may be preferred in PostgreSQL)."
|
|
757
|
+
}
|
|
758
|
+
]
|
|
759
|
+
},
|
|
760
|
+
"REPEAT": {
|
|
761
|
+
"contents": [
|
|
762
|
+
{
|
|
763
|
+
"value": "```sql\nSELECT REPEAT('ab', 3); -- 'ababab'\nSELECT REPEAT('-', 20); -- '--------------------'\n```\n**REPEAT** returns a string repeated `n` times. Useful for formatting and padding."
|
|
764
|
+
}
|
|
765
|
+
]
|
|
766
|
+
},
|
|
767
|
+
"REVERSE": {
|
|
768
|
+
"contents": [
|
|
769
|
+
{
|
|
770
|
+
"value": "```sql\nSELECT REVERSE('Hello'); -- 'olleH'\n```\n**REVERSE** returns a string with characters in reverse order."
|
|
771
|
+
}
|
|
772
|
+
]
|
|
773
|
+
},
|
|
774
|
+
"RPAD": {
|
|
775
|
+
"contents": [
|
|
776
|
+
{
|
|
777
|
+
"value": "```sql\nSELECT RPAD('Hello', 10, '.'); -- 'Hello.....'\nSELECT RPAD('Hi', 5); -- 'Hi '\n```\n**RPAD** pads a string on the right to a specified length using a fill character (default: space). Complements LPAD."
|
|
778
|
+
}
|
|
779
|
+
]
|
|
780
|
+
},
|
|
781
|
+
"TRANSLATE": {
|
|
782
|
+
"contents": [
|
|
783
|
+
{
|
|
784
|
+
"value": "```sql\nSELECT TRANSLATE('Hello', 'Helo', 'JXYZ'); -- 'JXYYz'\nSELECT TRANSLATE('12345', '135', 'ace'); -- 'a2c4e'\n```\n**TRANSLATE** replaces characters one-to-one. Each character in the second argument is replaced by the corresponding character in the third argument. Characters with no match are removed."
|
|
785
|
+
}
|
|
786
|
+
]
|
|
787
|
+
},
|
|
788
|
+
"FORMAT": {
|
|
789
|
+
"contents": [
|
|
790
|
+
{
|
|
791
|
+
"value": "```sql\n-- PostgreSQL:\nSELECT FORMAT('Hello %s, you are %s', 'World', 'great');\n-- MySQL:\nSELECT FORMAT(1234567.891, 2); -- '1,234,567.89'\n```\n**FORMAT** formats strings (PostgreSQL) or numbers (MySQL). PostgreSQL uses C-style `%s`/`%I`/`%L` placeholders. MySQL formats numbers with locale-aware grouping."
|
|
792
|
+
}
|
|
793
|
+
]
|
|
794
|
+
},
|
|
795
|
+
"MD5": {
|
|
796
|
+
"contents": [
|
|
797
|
+
{
|
|
798
|
+
"value": "```sql\nSELECT MD5('hello'); -- '5d41402abc4b2a76b9719d911017c592'\n```\n**MD5** returns the MD5 hash of a string as a 32-character hex string. **Not secure for passwords** — use `crypt()` from pgcrypto or application-level hashing. Useful for checksums and data deduplication."
|
|
799
|
+
}
|
|
800
|
+
]
|
|
801
|
+
},
|
|
802
|
+
"CONVERT": {
|
|
803
|
+
"contents": [
|
|
804
|
+
{
|
|
805
|
+
"value": "```sql\n-- PostgreSQL:\nSELECT CONVERT('text', 'UTF8', 'LATIN1');\n-- MySQL:\nSELECT CONVERT('123', SIGNED); -- type casting\nSELECT CONVERT('text' USING utf8mb4);\n```\n**CONVERT** converts between character encodings (PostgreSQL) or performs type casting (MySQL). Use CAST for standard cross-database type conversion."
|
|
806
|
+
}
|
|
807
|
+
]
|
|
808
|
+
},
|
|
809
|
+
"EXP": {
|
|
810
|
+
"contents": [
|
|
811
|
+
{
|
|
812
|
+
"value": "```sql\nSELECT EXP(1); -- 2.718281828... (e)\nSELECT EXP(2); -- 7.389056099...\n```\n**EXP** returns e raised to the specified power (natural exponential). Inverse of LN (natural logarithm)."
|
|
813
|
+
}
|
|
814
|
+
]
|
|
815
|
+
},
|
|
816
|
+
"LN": {
|
|
817
|
+
"contents": [
|
|
818
|
+
{
|
|
819
|
+
"value": "```sql\nSELECT LN(2.718281828); -- ~1.0\nSELECT LN(EXP(5)); -- 5.0\n```\n**LN** returns the natural logarithm (base e) of a number. Inverse of EXP. Returns NULL for non-positive inputs."
|
|
820
|
+
}
|
|
821
|
+
]
|
|
822
|
+
},
|
|
823
|
+
"LOG": {
|
|
824
|
+
"contents": [
|
|
825
|
+
{
|
|
826
|
+
"value": "```sql\nSELECT LOG(100); -- 2.0 (base 10 in MySQL, PostgreSQL)\nSELECT LOG(2, 8); -- 3.0 (base 2 of 8, PostgreSQL)\n```\n**LOG** returns the logarithm. With one argument: base-10 (MySQL/PostgreSQL). With two arguments (PostgreSQL): `LOG(base, value)`. Use LN for natural log."
|
|
827
|
+
}
|
|
828
|
+
]
|
|
829
|
+
},
|
|
830
|
+
"SIGN": {
|
|
831
|
+
"contents": [
|
|
832
|
+
{
|
|
833
|
+
"value": "```sql\nSELECT SIGN(-5); -- -1\nSELECT SIGN(0); -- 0\nSELECT SIGN(42); -- 1\n```\n**SIGN** returns -1 for negative, 0 for zero, or 1 for positive numbers. Useful for conditional logic based on value polarity."
|
|
834
|
+
}
|
|
835
|
+
]
|
|
836
|
+
},
|
|
837
|
+
"RANDOM": {
|
|
838
|
+
"contents": [
|
|
839
|
+
{
|
|
840
|
+
"value": "```sql\n-- PostgreSQL:\nSELECT RANDOM(); -- 0.0 to 1.0\nSELECT FLOOR(RANDOM() * 100 + 1); -- 1 to 100\n-- MySQL: RAND()\nSELECT * FROM users ORDER BY RANDOM() LIMIT 10;\n```\n**RANDOM** (PostgreSQL) / **RAND** (MySQL) returns a random floating-point value between 0 and 1. Combine with FLOOR for integer ranges. Use `ORDER BY RANDOM()` for random row selection (slow on large tables)."
|
|
841
|
+
}
|
|
842
|
+
]
|
|
843
|
+
},
|
|
844
|
+
"TRUNC": {
|
|
845
|
+
"contents": [
|
|
846
|
+
{
|
|
847
|
+
"value": "```sql\nSELECT TRUNC(42.8); -- 42\nSELECT TRUNC(42.876, 2); -- 42.87\nSELECT TRUNC(-42.8); -- -42\n```\n**TRUNC** truncates a number toward zero to the specified decimal places (default: 0). Unlike ROUND, always truncates without rounding. Also available for timestamps in PostgreSQL (`DATE_TRUNC`)."
|
|
848
|
+
}
|
|
849
|
+
]
|
|
850
|
+
},
|
|
851
|
+
"MIN": {
|
|
852
|
+
"contents": [
|
|
853
|
+
{
|
|
854
|
+
"value": "```sql\nSELECT MIN(price) FROM products;\nSELECT category, MIN(price) AS cheapest FROM products GROUP BY category;\n```\n**MIN** returns the minimum value in a set. Works with numbers, strings, dates, and timestamps. NULL values are ignored. Use with GROUP BY for per-group minimums."
|
|
855
|
+
}
|
|
856
|
+
]
|
|
857
|
+
},
|
|
858
|
+
"AGE": {
|
|
859
|
+
"contents": [
|
|
860
|
+
{
|
|
861
|
+
"value": "```sql\nSELECT AGE(TIMESTAMP '2024-01-01', TIMESTAMP '2000-06-15');\n-- '23 years 6 mons 17 days'\nSELECT AGE(TIMESTAMP '2024-01-01'); -- age from current_date\n```\n**AGE** (PostgreSQL) calculates the interval between two timestamps, or between a timestamp and the current date. Returns an INTERVAL value with years, months, and days."
|
|
862
|
+
}
|
|
863
|
+
]
|
|
864
|
+
},
|
|
865
|
+
"DATEDIFF": {
|
|
866
|
+
"contents": [
|
|
867
|
+
{
|
|
868
|
+
"value": "```sql\n-- MySQL:\nSELECT DATEDIFF('2024-12-31', '2024-01-01'); -- 365\n-- SQL Server:\nSELECT DATEDIFF(day, '2024-01-01', '2024-12-31'); -- 365\nSELECT DATEDIFF(month, '2024-01-01', '2024-07-01'); -- 6\n```\n**DATEDIFF** returns the difference between two dates. MySQL returns days; SQL Server accepts a datepart (day, month, year, etc.). PostgreSQL uses subtraction: `date1 - date2`."
|
|
869
|
+
}
|
|
870
|
+
]
|
|
871
|
+
},
|
|
872
|
+
"DATE_PART": {
|
|
873
|
+
"contents": [
|
|
874
|
+
{
|
|
875
|
+
"value": "```sql\nSELECT DATE_PART('year', TIMESTAMP '2024-06-15'); -- 2024\nSELECT DATE_PART('month', CURRENT_DATE); -- current month\nSELECT DATE_PART('dow', TIMESTAMP '2024-06-15'); -- day of week (0=Sun)\n```\n**DATE_PART** (PostgreSQL) extracts a field from a date/timestamp. Similar to EXTRACT but returns float instead of numeric. Fields: year, month, day, hour, minute, second, dow, doy, epoch, etc."
|
|
876
|
+
}
|
|
877
|
+
]
|
|
878
|
+
},
|
|
879
|
+
"MAKE_DATE": {
|
|
880
|
+
"contents": [
|
|
881
|
+
{
|
|
882
|
+
"value": "```sql\nSELECT MAKE_DATE(2024, 6, 15); -- '2024-06-15'\nSELECT MAKE_DATE(year, 1, 1) FROM generate_series(2020, 2024) AS year;\n```\n**MAKE_DATE** (PostgreSQL) constructs a DATE from year, month, and day integers. Validates the input values. Useful for building dates dynamically in queries."
|
|
883
|
+
}
|
|
884
|
+
]
|
|
885
|
+
},
|
|
886
|
+
"MAKE_INTERVAL": {
|
|
887
|
+
"contents": [
|
|
888
|
+
{
|
|
889
|
+
"value": "```sql\nSELECT MAKE_INTERVAL(years => 1, months => 6); -- '1 year 6 mons'\nSELECT NOW() + MAKE_INTERVAL(days => 30);\n```\n**MAKE_INTERVAL** (PostgreSQL) constructs an INTERVAL from named components (years, months, weeks, days, hours, mins, secs). More readable than `INTERVAL '...'` for dynamic interval construction."
|
|
890
|
+
}
|
|
891
|
+
]
|
|
892
|
+
},
|
|
893
|
+
"TO_CHAR": {
|
|
894
|
+
"contents": [
|
|
895
|
+
{
|
|
896
|
+
"value": "```sql\nSELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS'); -- '2024-06-15 14:30:00'\nSELECT TO_CHAR(1234.5, 'FM$9,999.00'); -- '$1,234.50'\nSELECT TO_CHAR(NOW(), 'Day, DD Month YYYY'); -- 'Saturday, 15 June 2024'\n```\n**TO_CHAR** (PostgreSQL) converts dates, timestamps, or numbers to formatted strings. Rich pattern system: YYYY (year), MM (month), DD (day), HH24 (24h hour), MI (minute), SS (second), FM (fill mode)."
|
|
897
|
+
}
|
|
898
|
+
]
|
|
899
|
+
},
|
|
900
|
+
"TO_DATE": {
|
|
901
|
+
"contents": [
|
|
902
|
+
{
|
|
903
|
+
"value": "```sql\nSELECT TO_DATE('15/06/2024', 'DD/MM/YYYY'); -- 2024-06-15\nSELECT TO_DATE('June 15, 2024', 'Month DD, YYYY');\n```\n**TO_DATE** (PostgreSQL) parses a string into a DATE using the specified format pattern. Use TO_TIMESTAMP for date+time strings."
|
|
904
|
+
}
|
|
905
|
+
]
|
|
906
|
+
},
|
|
907
|
+
"TO_TIMESTAMP": {
|
|
908
|
+
"contents": [
|
|
909
|
+
{
|
|
910
|
+
"value": "```sql\nSELECT TO_TIMESTAMP('2024-06-15 14:30:00', 'YYYY-MM-DD HH24:MI:SS');\nSELECT TO_TIMESTAMP(1718461800); -- from Unix epoch\n```\n**TO_TIMESTAMP** converts a string (with format) or Unix epoch integer to a TIMESTAMPTZ value. Commonly used for importing date strings from external sources."
|
|
911
|
+
}
|
|
912
|
+
]
|
|
913
|
+
},
|
|
914
|
+
"CURRENT_DATE": {
|
|
915
|
+
"contents": [
|
|
916
|
+
{
|
|
917
|
+
"value": "```sql\nSELECT CURRENT_DATE; -- '2024-06-15'\nCREATE TABLE logs (\n log_date DATE DEFAULT CURRENT_DATE\n);\n```\n**CURRENT_DATE** returns today's date (no time). Standard SQL function (no parentheses). In PostgreSQL, uses the session timezone."
|
|
918
|
+
}
|
|
919
|
+
]
|
|
920
|
+
},
|
|
921
|
+
"CURRENT_TIME": {
|
|
922
|
+
"contents": [
|
|
923
|
+
{
|
|
924
|
+
"value": "```sql\nSELECT CURRENT_TIME; -- '14:30:00.123456+00'\n```\n**CURRENT_TIME** returns the current time with timezone. Standard SQL. Less commonly used than CURRENT_TIMESTAMP or NOW(). Use AT TIME ZONE for timezone conversion."
|
|
925
|
+
}
|
|
926
|
+
]
|
|
927
|
+
},
|
|
928
|
+
"CURRENT_TIMESTAMP": {
|
|
929
|
+
"contents": [
|
|
930
|
+
{
|
|
931
|
+
"value": "```sql\nSELECT CURRENT_TIMESTAMP; -- '2024-06-15 14:30:00.123456+00'\nCREATE TABLE events (\n created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP\n);\n```\n**CURRENT_TIMESTAMP** returns the current date and time with timezone. Standard SQL equivalent of `NOW()`. Value is fixed at the start of the current transaction in PostgreSQL."
|
|
932
|
+
}
|
|
933
|
+
]
|
|
934
|
+
},
|
|
935
|
+
"GEN_RANDOM_UUID": {
|
|
936
|
+
"contents": [
|
|
937
|
+
{
|
|
938
|
+
"value": "```sql\nSELECT gen_random_uuid(); -- 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'\nCREATE TABLE items (\n id UUID PRIMARY KEY DEFAULT gen_random_uuid()\n);\n```\n**gen_random_uuid** (PostgreSQL 13+) generates a random v4 UUID. Built-in, no extension needed. For older versions, use `uuid_generate_v4()` from the uuid-ossp extension."
|
|
939
|
+
}
|
|
940
|
+
]
|
|
941
|
+
},
|
|
942
|
+
"BOOL_AND": {
|
|
943
|
+
"contents": [
|
|
944
|
+
{
|
|
945
|
+
"value": "```sql\nSELECT BOOL_AND(is_active) FROM users; -- true only if ALL are true\nSELECT dept, BOOL_AND(completed) FROM tasks GROUP BY dept;\n```\n**BOOL_AND** (PostgreSQL) returns TRUE if all values are true (logical AND aggregate). Returns NULL if no rows. MySQL equivalent: `BIT_AND` or `MIN`."
|
|
946
|
+
}
|
|
947
|
+
]
|
|
948
|
+
},
|
|
949
|
+
"BOOL_OR": {
|
|
950
|
+
"contents": [
|
|
951
|
+
{
|
|
952
|
+
"value": "```sql\nSELECT BOOL_OR(is_admin) FROM users; -- true if ANY is true\n```\n**BOOL_OR** (PostgreSQL) returns TRUE if any value is true (logical OR aggregate). NULL values are ignored."
|
|
953
|
+
}
|
|
954
|
+
]
|
|
955
|
+
},
|
|
956
|
+
"GROUP_CONCAT": {
|
|
957
|
+
"contents": [
|
|
958
|
+
{
|
|
959
|
+
"value": "```sql\n-- MySQL:\nSELECT dept, GROUP_CONCAT(name SEPARATOR ', ') FROM employees GROUP BY dept;\nSELECT GROUP_CONCAT(DISTINCT tag ORDER BY tag) FROM post_tags;\n-- PostgreSQL equivalent: STRING_AGG(name, ', ')\n```\n**GROUP_CONCAT** (MySQL) concatenates values from multiple rows into a single string with a separator. Supports DISTINCT, ORDER BY, and custom SEPARATOR. PostgreSQL uses `STRING_AGG` instead."
|
|
960
|
+
}
|
|
961
|
+
]
|
|
962
|
+
},
|
|
963
|
+
"CUME_DIST": {
|
|
964
|
+
"contents": [
|
|
965
|
+
{
|
|
966
|
+
"value": "```sql\nSELECT name, score,\n CUME_DIST() OVER (ORDER BY score) AS percentile\nFROM students;\n-- Returns: cumulative distribution (0 < value <= 1)\n```\n**CUME_DIST** calculates the cumulative distribution of a value: the fraction of rows with values less than or equal to the current row's value. Returns a value between 0 (exclusive) and 1 (inclusive)."
|
|
967
|
+
}
|
|
968
|
+
]
|
|
969
|
+
},
|
|
970
|
+
"FIRST_VALUE": {
|
|
971
|
+
"contents": [
|
|
972
|
+
{
|
|
973
|
+
"value": "```sql\nSELECT name, dept, salary,\n FIRST_VALUE(name) OVER (\n PARTITION BY dept ORDER BY salary DESC\n ) AS highest_paid\nFROM employees;\n```\n**FIRST_VALUE** returns the first value in the window frame. Commonly used to get the top-ranked item per group. Use with appropriate ORDER BY and frame clause."
|
|
974
|
+
}
|
|
975
|
+
]
|
|
976
|
+
},
|
|
977
|
+
"LAST_VALUE": {
|
|
978
|
+
"contents": [
|
|
979
|
+
{
|
|
980
|
+
"value": "```sql\nSELECT name, dept, salary,\n LAST_VALUE(name) OVER (\n PARTITION BY dept ORDER BY salary\n ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING\n ) AS highest_paid\nFROM employees;\n```\n**LAST_VALUE** returns the last value in the window frame. **Important**: the default frame is `ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW`, so you usually need to specify `UNBOUNDED FOLLOWING` to see the actual last value."
|
|
981
|
+
}
|
|
982
|
+
]
|
|
983
|
+
},
|
|
984
|
+
"NTH_VALUE": {
|
|
985
|
+
"contents": [
|
|
986
|
+
{
|
|
987
|
+
"value": "```sql\nSELECT name, salary,\n NTH_VALUE(name, 2) OVER (\n ORDER BY salary DESC\n ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING\n ) AS second_highest\nFROM employees;\n```\n**NTH_VALUE** returns the value of the nth row in the window frame. Returns NULL if the nth row doesn't exist. Requires explicit frame specification for correct results."
|
|
988
|
+
}
|
|
989
|
+
]
|
|
990
|
+
},
|
|
991
|
+
"NTILE": {
|
|
992
|
+
"contents": [
|
|
993
|
+
{
|
|
994
|
+
"value": "```sql\nSELECT name, score,\n NTILE(4) OVER (ORDER BY score DESC) AS quartile\nFROM students;\n-- Divides rows into 4 roughly equal groups (1-4)\n```\n**NTILE** divides the ordered result set into `n` roughly equal groups (buckets) and assigns a bucket number (1 to n) to each row. Useful for percentile analysis and tiered grouping."
|
|
995
|
+
}
|
|
996
|
+
]
|
|
997
|
+
},
|
|
998
|
+
"PERCENT_RANK": {
|
|
999
|
+
"contents": [
|
|
1000
|
+
{
|
|
1001
|
+
"value": "```sql\nSELECT name, score,\n PERCENT_RANK() OVER (ORDER BY score) AS pct_rank\nFROM students;\n-- Returns: (rank - 1) / (total rows - 1), range 0.0 to 1.0\n```\n**PERCENT_RANK** calculates the relative rank of a row as a percentage: `(rank - 1) / (total_rows - 1)`. First row is always 0.0. Useful for comparing relative standing."
|
|
1002
|
+
}
|
|
1003
|
+
]
|
|
1004
|
+
},
|
|
1005
|
+
"PERCENTILE_CONT": {
|
|
1006
|
+
"contents": [
|
|
1007
|
+
{
|
|
1008
|
+
"value": "```sql\nSELECT\n PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary) AS median,\n PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY response_time) AS p95\nFROM employees;\n```\n**PERCENTILE_CONT** calculates a continuous (interpolated) percentile. `0.5` = median, `0.95` = 95th percentile. Uses linear interpolation between adjacent values. Ordered-set aggregate function."
|
|
1009
|
+
}
|
|
1010
|
+
]
|
|
1011
|
+
},
|
|
1012
|
+
"PERCENTILE_DISC": {
|
|
1013
|
+
"contents": [
|
|
1014
|
+
{
|
|
1015
|
+
"value": "```sql\nSELECT\n PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY salary) AS median\nFROM employees;\n```\n**PERCENTILE_DISC** returns the first value whose cumulative distribution is >= the specified fraction. Unlike PERCENTILE_CONT, returns an actual value from the data set (no interpolation)."
|
|
1016
|
+
}
|
|
1017
|
+
]
|
|
1018
|
+
},
|
|
1019
|
+
"JSON_AGG": {
|
|
1020
|
+
"contents": [
|
|
1021
|
+
{
|
|
1022
|
+
"value": "```sql\nSELECT JSON_AGG(name) FROM users;\n-- ['Alice', 'Bob', 'Charlie']\nSELECT dept, JSON_AGG(ROW_TO_JSON(e)) FROM employees e GROUP BY dept;\n```\n**JSON_AGG** (PostgreSQL) aggregates values into a JSON array. Preserves data types. Use with ROW_TO_JSON or JSONB_BUILD_OBJECT for structured JSON output. NULL values are included."
|
|
1023
|
+
}
|
|
1024
|
+
]
|
|
1025
|
+
},
|
|
1026
|
+
"JSON_ARRAY": {
|
|
1027
|
+
"contents": [
|
|
1028
|
+
{
|
|
1029
|
+
"value": "```sql\n-- MySQL 8.0+:\nSELECT JSON_ARRAY(1, 'hello', true); -- [1, \"hello\", true]\n-- PostgreSQL uses JSON_BUILD_ARRAY:\nSELECT JSON_BUILD_ARRAY(1, 'hello', true);\n```\n**JSON_ARRAY** (MySQL) constructs a JSON array from arguments. PostgreSQL equivalent: `JSON_BUILD_ARRAY`. Handles type conversion automatically."
|
|
1030
|
+
}
|
|
1031
|
+
]
|
|
1032
|
+
},
|
|
1033
|
+
"JSON_ARRAY_LENGTH": {
|
|
1034
|
+
"contents": [
|
|
1035
|
+
{
|
|
1036
|
+
"value": "```sql\n-- PostgreSQL:\nSELECT JSON_ARRAY_LENGTH('[1,2,3]'::json); -- 3\n-- MySQL:\nSELECT JSON_LENGTH('[1,2,3]'); -- 3\n```\n**JSON_ARRAY_LENGTH** returns the number of elements in a JSON array. Returns NULL for non-array JSON values."
|
|
1037
|
+
}
|
|
1038
|
+
]
|
|
1039
|
+
},
|
|
1040
|
+
"JSON_EACH": {
|
|
1041
|
+
"contents": [
|
|
1042
|
+
{
|
|
1043
|
+
"value": "```sql\nSELECT key, value\nFROM JSON_EACH('{\"a\":1,\"b\":2,\"c\":3}'::json);\n-- Returns: a|1, b|2, c|3\n-- Use JSON_EACH_TEXT for text values\n```\n**JSON_EACH** (PostgreSQL) expands a JSON object into key-value rows. Returns `key` (text) and `value` (json). Use `JSON_EACH_TEXT` for text values. Essential for iterating over dynamic JSON structures."
|
|
1044
|
+
}
|
|
1045
|
+
]
|
|
1046
|
+
},
|
|
1047
|
+
"JSON_EXTRACT": {
|
|
1048
|
+
"contents": [
|
|
1049
|
+
{
|
|
1050
|
+
"value": "```sql\n-- MySQL:\nSELECT JSON_EXTRACT(data, '$.name'); -- '\"Alice\"'\nSELECT data->>'$.name'; -- 'Alice' (unquoted)\nSELECT JSON_EXTRACT(data, '$.items[0]');\n-- PostgreSQL uses -> and ->> operators instead\n```\n**JSON_EXTRACT** (MySQL) extracts a value from JSON using a JSONPath expression. `$` = root, `.key` = object member, `[n]` = array index. MySQL also supports `->` and `->>` shorthand."
|
|
1051
|
+
}
|
|
1052
|
+
]
|
|
1053
|
+
},
|
|
1054
|
+
"JSON_OBJECT": {
|
|
1055
|
+
"contents": [
|
|
1056
|
+
{
|
|
1057
|
+
"value": "```sql\n-- MySQL 8.0+:\nSELECT JSON_OBJECT('name', 'Alice', 'age', 30);\n-- {\"name\": \"Alice\", \"age\": 30}\n-- PostgreSQL:\nSELECT JSONB_BUILD_OBJECT('name', 'Alice', 'age', 30);\n```\n**JSON_OBJECT** (MySQL) constructs a JSON object from key-value pairs. PostgreSQL uses `JSON_BUILD_OBJECT` / `JSONB_BUILD_OBJECT`."
|
|
1058
|
+
}
|
|
1059
|
+
]
|
|
1060
|
+
},
|
|
1061
|
+
"JSON_REMOVE": {
|
|
1062
|
+
"contents": [
|
|
1063
|
+
{
|
|
1064
|
+
"value": "```sql\n-- MySQL:\nSELECT JSON_REMOVE('{\"a\":1,\"b\":2}', '$.b'); -- '{\"a\":1}'\nSELECT JSON_REMOVE('[1,2,3]', '$[1]'); -- '[1,3]'\n-- PostgreSQL: use - operator\nSELECT '{\"a\":1,\"b\":2}'::jsonb - 'b';\n```\n**JSON_REMOVE** (MySQL) removes elements from JSON by path. PostgreSQL uses the `-` operator for JSONB."
|
|
1065
|
+
}
|
|
1066
|
+
]
|
|
1067
|
+
},
|
|
1068
|
+
"JSON_SET": {
|
|
1069
|
+
"contents": [
|
|
1070
|
+
{
|
|
1071
|
+
"value": "```sql\n-- MySQL:\nSELECT JSON_SET('{\"a\":1}', '$.b', 2); -- '{\"a\":1,\"b\":2}'\nSELECT JSON_SET(data, '$.status', 'active') FROM records;\n-- PostgreSQL: use || operator\nSELECT '{\"a\":1}'::jsonb || '{\"b\":2}'::jsonb;\n```\n**JSON_SET** (MySQL) inserts or updates values in JSON by path. Creates missing keys. PostgreSQL uses `||` for merge or `JSONB_SET` for path-based updates."
|
|
1072
|
+
}
|
|
1073
|
+
]
|
|
1074
|
+
},
|
|
1075
|
+
"JSON_TYPEOF": {
|
|
1076
|
+
"contents": [
|
|
1077
|
+
{
|
|
1078
|
+
"value": "```sql\nSELECT JSON_TYPEOF('123'::json); -- 'number'\nSELECT JSON_TYPEOF('\"hello\"'::json); -- 'string'\nSELECT JSON_TYPEOF('[1,2]'::json); -- 'array'\nSELECT JSON_TYPEOF('{}'::json); -- 'object'\n```\n**JSON_TYPEOF** (PostgreSQL) returns the type of a JSON value as text: 'object', 'array', 'string', 'number', 'boolean', or 'null'."
|
|
1079
|
+
}
|
|
1080
|
+
]
|
|
1081
|
+
},
|
|
1082
|
+
"GREATEST": {
|
|
1083
|
+
"contents": [
|
|
1084
|
+
{
|
|
1085
|
+
"value": "```sql\nSELECT GREATEST(10, 20, 5); -- 20\nSELECT GREATEST(price, min_price); -- ensures minimum\nSELECT GREATEST('2024-01-01'::date, start_date);\n```\n**GREATEST** returns the largest value from a list of expressions. Works with numbers, strings, dates. NULL handling varies by database (PostgreSQL ignores NULLs, MySQL returns NULL if any argument is NULL)."
|
|
1086
|
+
}
|
|
1087
|
+
]
|
|
1088
|
+
},
|
|
1089
|
+
"LEAST": {
|
|
1090
|
+
"contents": [
|
|
1091
|
+
{
|
|
1092
|
+
"value": "```sql\nSELECT LEAST(10, 20, 5); -- 5\nSELECT LEAST(price, max_price); -- cap at maximum\n```\n**LEAST** returns the smallest value from a list of expressions. Counterpart to GREATEST. Same NULL handling behavior."
|
|
1093
|
+
}
|
|
1094
|
+
]
|
|
1095
|
+
},
|
|
1096
|
+
"IFNULL": {
|
|
1097
|
+
"contents": [
|
|
1098
|
+
{
|
|
1099
|
+
"value": "```sql\n-- MySQL:\nSELECT IFNULL(nickname, 'Anonymous') FROM users;\n-- Equivalent PostgreSQL: COALESCE(nickname, 'Anonymous')\n```\n**IFNULL** (MySQL) returns the first argument if not NULL, otherwise the second. Two-argument version of COALESCE. Use COALESCE for cross-database compatibility."
|
|
1100
|
+
}
|
|
1101
|
+
]
|
|
1102
|
+
},
|
|
1103
|
+
"IIF": {
|
|
1104
|
+
"contents": [
|
|
1105
|
+
{
|
|
1106
|
+
"value": "```sql\n-- SQL Server:\nSELECT IIF(score >= 60, 'Pass', 'Fail') FROM students;\n-- Equivalent: CASE WHEN score >= 60 THEN 'Pass' ELSE 'Fail' END\n```\n**IIF** (SQL Server) is a shorthand for a simple CASE expression. Takes a boolean condition, true-value, and false-value. Use CASE for cross-database compatibility."
|
|
1107
|
+
}
|
|
1108
|
+
]
|
|
1109
|
+
},
|
|
1110
|
+
"NVL": {
|
|
1111
|
+
"contents": [
|
|
1112
|
+
{
|
|
1113
|
+
"value": "```sql\n-- Oracle:\nSELECT NVL(commission, 0) FROM employees;\n-- Equivalent PostgreSQL/MySQL: COALESCE(commission, 0)\n```\n**NVL** (Oracle) replaces NULL with a specified value. Use COALESCE for standard SQL compatibility."
|
|
1114
|
+
}
|
|
1115
|
+
]
|
|
1116
|
+
},
|
|
1117
|
+
"REGEXP_REPLACE": {
|
|
1118
|
+
"contents": [
|
|
1119
|
+
{
|
|
1120
|
+
"value": "```sql\nSELECT REGEXP_REPLACE('Hello 123 World', '[0-9]+', 'NUM');\n-- 'Hello NUM World'\nSELECT REGEXP_REPLACE('a b c', '\\s+', ' ', 'g'); -- 'a b c'\n```\n**REGEXP_REPLACE** replaces substrings matching a regular expression. PostgreSQL requires `'g'` flag for global replacement. Powerful for data cleaning and transformation."
|
|
1121
|
+
}
|
|
1122
|
+
]
|
|
1123
|
+
},
|
|
1124
|
+
"UNNEST": {
|
|
1125
|
+
"contents": [
|
|
1126
|
+
{
|
|
1127
|
+
"value": "```sql\nSELECT UNNEST(ARRAY[1, 2, 3]); -- returns 3 rows\nSELECT id, UNNEST(tags) AS tag FROM posts; -- expand array column\nSELECT * FROM UNNEST(ARRAY['a','b'], ARRAY[1,2]) AS t(letter, number);\n```\n**UNNEST** (PostgreSQL) expands an array into a set of rows. Can unnest multiple arrays in parallel. Essential for working with array columns in joins and filters."
|
|
1128
|
+
}
|
|
1129
|
+
]
|
|
1130
|
+
},
|
|
1131
|
+
"ALTER ROLE": {
|
|
1132
|
+
"contents": [
|
|
1133
|
+
{
|
|
1134
|
+
"value": "```sql\nALTER ROLE myuser WITH PASSWORD 'new_password';\nALTER ROLE myuser WITH SUPERUSER;\nALTER ROLE myuser SET search_path = myschema, public;\nALTER ROLE myuser VALID UNTIL '2025-01-01';\n```\n**ALTER ROLE** (PostgreSQL) modifies role attributes: password, privileges (SUPERUSER, CREATEDB, CREATEROLE), connection limits, configuration parameters, and validity period."
|
|
1135
|
+
}
|
|
1136
|
+
]
|
|
1137
|
+
},
|
|
1138
|
+
"ALTER SEQUENCE": {
|
|
1139
|
+
"contents": [
|
|
1140
|
+
{
|
|
1141
|
+
"value": "```sql\nALTER SEQUENCE users_id_seq RESTART WITH 1000;\nALTER SEQUENCE orders_id_seq INCREMENT BY 10;\nALTER SEQUENCE orders_id_seq OWNED BY orders.id;\n```\n**ALTER SEQUENCE** modifies a sequence's properties: restart value, increment, min/max values, cache size, or ownership. Commonly used to reset auto-increment counters."
|
|
1142
|
+
}
|
|
1143
|
+
]
|
|
1144
|
+
},
|
|
1145
|
+
"CHECK": {
|
|
1146
|
+
"contents": [
|
|
1147
|
+
{
|
|
1148
|
+
"value": "```sql\nCREATE TABLE products (\n price DECIMAL(10,2) CHECK (price > 0),\n quantity INTEGER CHECK (quantity >= 0),\n CONSTRAINT valid_dates CHECK (end_date > start_date)\n);\n```\n**CHECK** constraint validates that column values satisfy a boolean expression. Enforced on INSERT and UPDATE. Can reference multiple columns when defined as a table constraint. Named constraints improve error messages."
|
|
1149
|
+
}
|
|
1150
|
+
]
|
|
1151
|
+
},
|
|
1152
|
+
"DEFAULT": {
|
|
1153
|
+
"contents": [
|
|
1154
|
+
{
|
|
1155
|
+
"value": "```sql\nCREATE TABLE users (\n role VARCHAR(20) DEFAULT 'user',\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n is_active BOOLEAN DEFAULT true,\n id UUID DEFAULT gen_random_uuid()\n);\n```\n**DEFAULT** specifies the value used when no value is provided for a column on INSERT. Can be a constant, function call, or expression. Applied when the column is omitted or explicitly set to DEFAULT."
|
|
1156
|
+
}
|
|
1157
|
+
]
|
|
1158
|
+
},
|
|
1159
|
+
"FOREIGN KEY": {
|
|
1160
|
+
"contents": [
|
|
1161
|
+
{
|
|
1162
|
+
"value": "```sql\nCREATE TABLE orders (\n id SERIAL PRIMARY KEY,\n user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,\n product_id INTEGER,\n CONSTRAINT fk_product FOREIGN KEY (product_id)\n REFERENCES products(id) ON DELETE SET NULL\n);\n-- Actions: CASCADE, SET NULL, SET DEFAULT, RESTRICT, NO ACTION\n```\n**FOREIGN KEY** enforces referential integrity between tables. The referenced column must have a UNIQUE or PRIMARY KEY constraint. ON DELETE/UPDATE actions control behavior when the parent row is modified."
|
|
1163
|
+
}
|
|
1164
|
+
]
|
|
1165
|
+
},
|
|
1166
|
+
"NOT NULL": {
|
|
1167
|
+
"contents": [
|
|
1168
|
+
{
|
|
1169
|
+
"value": "```sql\nCREATE TABLE users (\n email VARCHAR(255) NOT NULL,\n name TEXT NOT NULL\n);\nALTER TABLE users ALTER COLUMN phone SET NOT NULL;\n```\n**NOT NULL** constraint prevents a column from accepting NULL values. One of the most common constraints. Add/remove with ALTER TABLE. Use CHECK constraints for more complex validation."
|
|
1170
|
+
}
|
|
1171
|
+
]
|
|
1172
|
+
},
|
|
1173
|
+
"PRIMARY KEY": {
|
|
1174
|
+
"contents": [
|
|
1175
|
+
{
|
|
1176
|
+
"value": "```sql\nCREATE TABLE users (\n id SERIAL PRIMARY KEY\n);\nCREATE TABLE order_items (\n order_id INTEGER,\n product_id INTEGER,\n PRIMARY KEY (order_id, product_id) -- composite\n);\n```\n**PRIMARY KEY** uniquely identifies each row. Combines NOT NULL + UNIQUE. Each table can have only one primary key. Composite primary keys span multiple columns. Automatically creates a unique index."
|
|
1177
|
+
}
|
|
1178
|
+
]
|
|
1179
|
+
},
|
|
1180
|
+
"UNIQUE": {
|
|
1181
|
+
"contents": [
|
|
1182
|
+
{
|
|
1183
|
+
"value": "```sql\nCREATE TABLE users (\n email VARCHAR(255) UNIQUE,\n CONSTRAINT unique_name UNIQUE (first_name, last_name)\n);\nCREATE UNIQUE INDEX idx_email ON users(LOWER(email));\n```\n**UNIQUE** constraint ensures all values in a column (or column combination) are distinct. Unlike PRIMARY KEY, allows one NULL (PostgreSQL) or no NULLs (MySQL). Creates an index automatically."
|
|
1184
|
+
}
|
|
1185
|
+
]
|
|
1186
|
+
},
|
|
1187
|
+
"CREATE DATABASE": {
|
|
1188
|
+
"contents": [
|
|
1189
|
+
{
|
|
1190
|
+
"value": "```sql\nCREATE DATABASE myapp;\nCREATE DATABASE myapp\n ENCODING 'UTF8'\n LC_COLLATE 'en_US.UTF-8'\n TEMPLATE template0;\n```\n**CREATE DATABASE** creates a new database. PostgreSQL supports encoding, collation, and template options. Requires CREATEDB privilege. Cannot be run inside a transaction block."
|
|
1191
|
+
}
|
|
1192
|
+
]
|
|
1193
|
+
},
|
|
1194
|
+
"CREATE MATERIALIZED VIEW": {
|
|
1195
|
+
"contents": [
|
|
1196
|
+
{
|
|
1197
|
+
"value": "```sql\nCREATE MATERIALIZED VIEW monthly_stats AS\nSELECT DATE_TRUNC('month', created_at) AS month,\n COUNT(*) AS total, SUM(amount) AS revenue\nFROM orders GROUP BY 1;\n\nCREATE UNIQUE INDEX ON monthly_stats (month);\nREFRESH MATERIALIZED VIEW CONCURRENTLY monthly_stats;\n```\n**CREATE MATERIALIZED VIEW** (PostgreSQL) stores query results physically on disk. Much faster reads than regular views but data can become stale. Use `REFRESH MATERIALIZED VIEW` to update. `CONCURRENTLY` allows reads during refresh (requires unique index)."
|
|
1198
|
+
}
|
|
1199
|
+
]
|
|
1200
|
+
},
|
|
1201
|
+
"CREATE PROCEDURE": {
|
|
1202
|
+
"contents": [
|
|
1203
|
+
{
|
|
1204
|
+
"value": "```sql\nCREATE PROCEDURE transfer_funds(\n sender_id INT, receiver_id INT, amount DECIMAL\n)\nLANGUAGE plpgsql AS $$\nBEGIN\n UPDATE accounts SET balance = balance - amount WHERE id = sender_id;\n UPDATE accounts SET balance = balance + amount WHERE id = receiver_id;\n COMMIT;\nEND; $$;\n\nCALL transfer_funds(1, 2, 100.00);\n```\n**CREATE PROCEDURE** (PostgreSQL 11+) defines a stored procedure. Unlike functions, procedures can manage transactions (COMMIT/ROLLBACK). Invoked with CALL. Use for multi-step transactional operations."
|
|
1205
|
+
}
|
|
1206
|
+
]
|
|
1207
|
+
},
|
|
1208
|
+
"CREATE ROLE": {
|
|
1209
|
+
"contents": [
|
|
1210
|
+
{
|
|
1211
|
+
"value": "```sql\nCREATE ROLE readonly WITH LOGIN PASSWORD 'secret';\nCREATE ROLE admin WITH SUPERUSER CREATEDB CREATEROLE LOGIN;\nGRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;\n```\n**CREATE ROLE** (PostgreSQL) creates a database role (user/group). Options: LOGIN, PASSWORD, SUPERUSER, CREATEDB, CREATEROLE, REPLICATION, CONNECTION LIMIT, VALID UNTIL. Roles without LOGIN act as groups."
|
|
1212
|
+
}
|
|
1213
|
+
]
|
|
1214
|
+
},
|
|
1215
|
+
"CREATE SCHEMA": {
|
|
1216
|
+
"contents": [
|
|
1217
|
+
{
|
|
1218
|
+
"value": "```sql\nCREATE SCHEMA app;\nCREATE TABLE app.users (id SERIAL PRIMARY KEY);\nSET search_path = app, public;\n```\n**CREATE SCHEMA** creates a namespace within a database. Schemas organize tables, views, and functions. Use `search_path` to set default schema resolution order. Default schema is `public`."
|
|
1219
|
+
}
|
|
1220
|
+
]
|
|
1221
|
+
},
|
|
1222
|
+
"CREATE SEQUENCE": {
|
|
1223
|
+
"contents": [
|
|
1224
|
+
{
|
|
1225
|
+
"value": "```sql\nCREATE SEQUENCE order_num_seq\n START WITH 1000\n INCREMENT BY 1\n NO CYCLE;\nSELECT nextval('order_num_seq'); -- 1000, 1001, ...\n```\n**CREATE SEQUENCE** creates a number generator. Used implicitly by SERIAL/BIGSERIAL. Functions: `nextval()` (advance and return), `currval()` (current), `setval()` (set). Sequences are not rolled back on transaction abort."
|
|
1226
|
+
}
|
|
1227
|
+
]
|
|
1228
|
+
},
|
|
1229
|
+
"CREATE TYPE": {
|
|
1230
|
+
"contents": [
|
|
1231
|
+
{
|
|
1232
|
+
"value": "```sql\nCREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');\nCREATE TYPE address AS (\n street TEXT, city TEXT, zip VARCHAR(10)\n);\nCREATE TABLE people (\n current_mood mood,\n home address\n);\n```\n**CREATE TYPE** (PostgreSQL) creates a custom data type: ENUM (fixed set of values), composite (structured row), range, or base type. Enum types provide type safety; composite types enable structured columns."
|
|
1233
|
+
}
|
|
1234
|
+
]
|
|
1235
|
+
},
|
|
1236
|
+
"DROP DATABASE": {
|
|
1237
|
+
"contents": [
|
|
1238
|
+
{
|
|
1239
|
+
"value": "```sql\nDROP DATABASE myapp;\nDROP DATABASE IF EXISTS myapp;\n```\n**DROP DATABASE** permanently deletes a database and all its contents. Irreversible. Cannot drop a database with active connections. Use IF EXISTS to avoid errors."
|
|
1240
|
+
}
|
|
1241
|
+
]
|
|
1242
|
+
},
|
|
1243
|
+
"DROP INDEX": {
|
|
1244
|
+
"contents": [
|
|
1245
|
+
{
|
|
1246
|
+
"value": "```sql\nDROP INDEX idx_users_email;\nDROP INDEX IF EXISTS idx_users_email;\nDROP INDEX CONCURRENTLY idx_users_email; -- PostgreSQL, no lock\n```\n**DROP INDEX** removes an index. `CONCURRENTLY` (PostgreSQL) avoids locking the table during removal. Removing unused indexes improves write performance."
|
|
1247
|
+
}
|
|
1248
|
+
]
|
|
1249
|
+
},
|
|
1250
|
+
"DROP ROLE": {
|
|
1251
|
+
"contents": [
|
|
1252
|
+
{
|
|
1253
|
+
"value": "```sql\nDROP ROLE myuser;\nDROP ROLE IF EXISTS myuser;\n-- Must revoke all privileges and reassign owned objects first\nREASSIGN OWNED BY myuser TO postgres;\nDROP OWNED BY myuser;\nDROP ROLE myuser;\n```\n**DROP ROLE** removes a database role. The role must not own any objects or have granted privileges. Use REASSIGN OWNED and DROP OWNED first to clean up."
|
|
1254
|
+
}
|
|
1255
|
+
]
|
|
1256
|
+
},
|
|
1257
|
+
"DROP SCHEMA": {
|
|
1258
|
+
"contents": [
|
|
1259
|
+
{
|
|
1260
|
+
"value": "```sql\nDROP SCHEMA app;\nDROP SCHEMA IF EXISTS app CASCADE; -- drop all contained objects\n```\n**DROP SCHEMA** removes a schema. `CASCADE` drops all contained objects (tables, views, functions). Without CASCADE, fails if schema is not empty."
|
|
1261
|
+
}
|
|
1262
|
+
]
|
|
1263
|
+
},
|
|
1264
|
+
"DROP VIEW": {
|
|
1265
|
+
"contents": [
|
|
1266
|
+
{
|
|
1267
|
+
"value": "```sql\nDROP VIEW user_summary;\nDROP VIEW IF EXISTS user_summary CASCADE;\n```\n**DROP VIEW** removes a view. `CASCADE` drops dependent views. Does not affect underlying tables."
|
|
1268
|
+
}
|
|
1269
|
+
]
|
|
1270
|
+
},
|
|
1271
|
+
"ALL": {
|
|
1272
|
+
"contents": [
|
|
1273
|
+
{
|
|
1274
|
+
"value": "```sql\nSELECT * FROM products WHERE price > ALL (\n SELECT price FROM products WHERE category = 'budget'\n);\n-- price must be greater than EVERY value in the subquery\n```\n**ALL** compares a value against all values returned by a subquery. `> ALL` means greater than the maximum; `< ALL` means less than the minimum. Returns TRUE if the comparison holds for every value."
|
|
1275
|
+
}
|
|
1276
|
+
]
|
|
1277
|
+
},
|
|
1278
|
+
"ANY": {
|
|
1279
|
+
"contents": [
|
|
1280
|
+
{
|
|
1281
|
+
"value": "```sql\nSELECT * FROM products WHERE price > ANY (\n SELECT price FROM products WHERE category = 'premium'\n);\n-- PostgreSQL array: WHERE 'admin' = ANY(roles)\n```\n**ANY** (SOME) compares a value against any value returned by a subquery or array. Returns TRUE if the comparison holds for at least one value. In PostgreSQL, also works with arrays: `value = ANY(array_column)`."
|
|
1282
|
+
}
|
|
1283
|
+
]
|
|
1284
|
+
},
|
|
1285
|
+
"EXCEPT": {
|
|
1286
|
+
"contents": [
|
|
1287
|
+
{
|
|
1288
|
+
"value": "```sql\nSELECT email FROM all_users\nEXCEPT\nSELECT email FROM unsubscribed;\n-- Returns emails in all_users but NOT in unsubscribed\n```\n**EXCEPT** returns rows from the first query that are not in the second query (set difference). Removes duplicates by default. Use `EXCEPT ALL` to keep duplicates."
|
|
1289
|
+
}
|
|
1290
|
+
]
|
|
1291
|
+
},
|
|
1292
|
+
"HAVING": {
|
|
1293
|
+
"contents": [
|
|
1294
|
+
{
|
|
1295
|
+
"value": "```sql\nSELECT department, AVG(salary) AS avg_salary\nFROM employees\nGROUP BY department\nHAVING AVG(salary) > 50000;\n-- WHERE filters rows BEFORE grouping\n-- HAVING filters groups AFTER aggregation\n```\n**HAVING** filters groups after GROUP BY aggregation. Unlike WHERE (which filters individual rows before grouping), HAVING operates on aggregate results. Can reference aggregate functions."
|
|
1296
|
+
}
|
|
1297
|
+
]
|
|
1298
|
+
},
|
|
1299
|
+
"ILIKE": {
|
|
1300
|
+
"contents": [
|
|
1301
|
+
{
|
|
1302
|
+
"value": "```sql\nSELECT * FROM users WHERE name ILIKE '%john%'; -- case-insensitive\nSELECT * FROM users WHERE email ILIKE '%@gmail.com';\n```\n**ILIKE** (PostgreSQL) performs case-insensitive pattern matching with `%` (any chars) and `_` (single char) wildcards. MySQL's LIKE is case-insensitive by default with most collations."
|
|
1303
|
+
}
|
|
1304
|
+
]
|
|
1305
|
+
},
|
|
1306
|
+
"INTERSECT": {
|
|
1307
|
+
"contents": [
|
|
1308
|
+
{
|
|
1309
|
+
"value": "```sql\nSELECT user_id FROM premium_users\nINTERSECT\nSELECT user_id FROM active_users;\n-- Returns user_ids that appear in BOTH queries\n```\n**INTERSECT** returns only rows that appear in both queries (set intersection). Removes duplicates by default. Use `INTERSECT ALL` to preserve duplicates."
|
|
1310
|
+
}
|
|
1311
|
+
]
|
|
1312
|
+
},
|
|
1313
|
+
"NATURAL JOIN": {
|
|
1314
|
+
"contents": [
|
|
1315
|
+
{
|
|
1316
|
+
"value": "```sql\nSELECT * FROM orders NATURAL JOIN customers;\n-- Automatically joins on all columns with matching names\n-- Equivalent to: JOIN customers USING (customer_id) -- if that's the matching column\n```\n**NATURAL JOIN** automatically joins tables on all columns with the same name. Convenient but fragile — adding columns with matching names can break queries. Prefer explicit JOIN ON for clarity."
|
|
1317
|
+
}
|
|
1318
|
+
]
|
|
1319
|
+
},
|
|
1320
|
+
"UNION": {
|
|
1321
|
+
"contents": [
|
|
1322
|
+
{
|
|
1323
|
+
"value": "```sql\nSELECT name, email FROM customers\nUNION\nSELECT name, email FROM suppliers;\n-- Removes duplicates. Column count and types must match.\n```\n**UNION** combines results from two or more SELECT statements, removing duplicate rows. Queries must have the same number of columns with compatible types. More expensive than UNION ALL due to deduplication."
|
|
1324
|
+
}
|
|
1325
|
+
]
|
|
1326
|
+
},
|
|
1327
|
+
"UNION ALL": {
|
|
1328
|
+
"contents": [
|
|
1329
|
+
{
|
|
1330
|
+
"value": "```sql\nSELECT name FROM customers\nUNION ALL\nSELECT name FROM suppliers;\n-- Keeps all rows including duplicates (faster than UNION)\n```\n**UNION ALL** combines results from two SELECT statements without removing duplicates. Faster than UNION since no deduplication is needed. Use when duplicates are acceptable or impossible."
|
|
1331
|
+
}
|
|
1332
|
+
]
|
|
1333
|
+
},
|
|
1334
|
+
"CLUSTER": {
|
|
1335
|
+
"contents": [
|
|
1336
|
+
{
|
|
1337
|
+
"value": "```sql\nCLUSTER users USING idx_users_created;\nCLUSTER users; -- re-cluster using previously set index\nCLUSTER; -- re-cluster all previously clustered tables\n```\n**CLUSTER** (PostgreSQL) physically reorders table rows to match an index, improving sequential scan performance for that index. One-time operation — subsequent inserts are not ordered. Locks the table during operation."
|
|
1338
|
+
}
|
|
1339
|
+
]
|
|
1340
|
+
},
|
|
1341
|
+
"COMMENT ON": {
|
|
1342
|
+
"contents": [
|
|
1343
|
+
{
|
|
1344
|
+
"value": "```sql\nCOMMENT ON TABLE users IS 'Main user accounts table';\nCOMMENT ON COLUMN users.email IS 'Primary contact email, must be unique';\nCOMMENT ON FUNCTION calculate_tax IS 'Returns tax amount for given price';\n```\n**COMMENT ON** (PostgreSQL) adds a descriptive comment to a database object. Comments are stored in `pg_description` and visible in `\\d+` and information_schema. Use for documentation purposes."
|
|
1345
|
+
}
|
|
1346
|
+
]
|
|
1347
|
+
},
|
|
1348
|
+
"DEALLOCATE": {
|
|
1349
|
+
"contents": [
|
|
1350
|
+
{
|
|
1351
|
+
"value": "```sql\nPREPARE my_query (int) AS SELECT * FROM users WHERE id = $1;\nEXECUTE my_query(42);\nDEALLOCATE my_query;\nDEALLOCATE ALL;\n```\n**DEALLOCATE** removes a previously prepared statement, freeing its resources. Use `DEALLOCATE ALL` to remove all prepared statements in the current session."
|
|
1352
|
+
}
|
|
1353
|
+
]
|
|
1354
|
+
},
|
|
1355
|
+
"EXECUTE": {
|
|
1356
|
+
"contents": [
|
|
1357
|
+
{
|
|
1358
|
+
"value": "```sql\nPREPARE user_query (int) AS SELECT * FROM users WHERE id = $1;\nEXECUTE user_query(42);\n-- Dynamic SQL in PL/pgSQL:\nEXECUTE 'SELECT count(*) FROM ' || quote_ident(table_name) INTO row_count;\n```\n**EXECUTE** runs a previously prepared statement with parameter values. In PL/pgSQL, also executes dynamic SQL strings. Use `USING` clause in PL/pgSQL to pass parameters safely."
|
|
1359
|
+
}
|
|
1360
|
+
]
|
|
1361
|
+
},
|
|
1362
|
+
"LOCK TABLE": {
|
|
1363
|
+
"contents": [
|
|
1364
|
+
{
|
|
1365
|
+
"value": "```sql\nBEGIN;\nLOCK TABLE accounts IN EXCLUSIVE MODE;\n-- perform critical updates\nCOMMIT;\n-- Modes: ACCESS SHARE, ROW SHARE, ROW EXCLUSIVE,\n-- SHARE, SHARE ROW EXCLUSIVE, EXCLUSIVE, ACCESS EXCLUSIVE\n```\n**LOCK TABLE** (PostgreSQL) explicitly locks a table for the current transaction. Most operations acquire locks automatically. Explicit locking is needed for operations requiring consistency across multiple statements."
|
|
1366
|
+
}
|
|
1367
|
+
]
|
|
1368
|
+
},
|
|
1369
|
+
"PREPARE": {
|
|
1370
|
+
"contents": [
|
|
1371
|
+
{
|
|
1372
|
+
"value": "```sql\nPREPARE user_by_id (int) AS\n SELECT * FROM users WHERE id = $1;\nEXECUTE user_by_id(42);\nDEALLOCATE user_by_id;\n```\n**PREPARE** creates a prepared statement with optional parameter placeholders ($1, $2, ...). Parsed and planned once, executed multiple times. Improves performance for repeated queries and prevents SQL injection."
|
|
1373
|
+
}
|
|
1374
|
+
]
|
|
1375
|
+
},
|
|
1376
|
+
"REINDEX": {
|
|
1377
|
+
"contents": [
|
|
1378
|
+
{
|
|
1379
|
+
"value": "```sql\nREINDEX INDEX idx_users_email;\nREINDEX TABLE users;\nREINDEX DATABASE myapp;\nREINDEX (VERBOSE) TABLE users;\n```\n**REINDEX** (PostgreSQL) rebuilds one or more indexes. Fixes index corruption and reclaims bloated index space. Locks the table (use `CONCURRENTLY` in PostgreSQL 12+ to avoid locking)."
|
|
1380
|
+
}
|
|
1381
|
+
]
|
|
1382
|
+
},
|
|
1383
|
+
"RELEASE SAVEPOINT": {
|
|
1384
|
+
"contents": [
|
|
1385
|
+
{
|
|
1386
|
+
"value": "```sql\nBEGIN;\nINSERT INTO orders VALUES (1, 100);\nSAVEPOINT sp1;\nINSERT INTO orders VALUES (2, 200);\nRELEASE SAVEPOINT sp1; -- confirm, savepoint no longer needed\nCOMMIT;\n```\n**RELEASE SAVEPOINT** destroys a savepoint without rolling back. The savepoint's work becomes part of the parent transaction. Frees resources associated with the savepoint."
|
|
1387
|
+
}
|
|
1388
|
+
]
|
|
1389
|
+
},
|
|
1390
|
+
"REVOKE": {
|
|
1391
|
+
"contents": [
|
|
1392
|
+
{
|
|
1393
|
+
"value": "```sql\nREVOKE INSERT, UPDATE ON users FROM readonly_role;\nREVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM myuser;\nREVOKE CONNECT ON DATABASE myapp FROM public;\n```\n**REVOKE** removes previously granted privileges from a role. Inverse of GRANT. Can revoke on tables, schemas, databases, sequences, and functions. Use to enforce least-privilege access."
|
|
1394
|
+
}
|
|
1395
|
+
]
|
|
1396
|
+
},
|
|
1397
|
+
"SAVEPOINT": {
|
|
1398
|
+
"contents": [
|
|
1399
|
+
{
|
|
1400
|
+
"value": "```sql\nBEGIN;\nINSERT INTO users VALUES (1, 'Alice');\nSAVEPOINT sp1;\nINSERT INTO users VALUES (2, 'Bob'); -- this might fail\nROLLBACK TO SAVEPOINT sp1; -- undo Bob only\nINSERT INTO users VALUES (3, 'Charlie');\nCOMMIT; -- commits Alice and Charlie\n```\n**SAVEPOINT** creates a named point within a transaction to which you can later roll back. Allows partial rollback without aborting the entire transaction. Essential for error recovery in complex transactions."
|
|
1401
|
+
}
|
|
1402
|
+
]
|
|
1403
|
+
}
|
|
1404
|
+
}
|
|
1405
|
+
}
|