Talking to the world
A useful program reads input (from the keyboard, a file, a network call, or another program) and produces output (to the screen, a file, or another network call). SQL provides simple helpers for the basic cases and powerful libraries for the rest.
```sql
-- Read:
SELECT * FROM users WHERE age >= 18;-- Write: INSERT INTO users (name, age) VALUES ('Aman', 20); UPDATE users SET age = 21 WHERE name = 'Aman'; DELETE FROM users WHERE active = FALSE; ```
Buffering and performance
Reading or writing one byte at a time is usually slow. SQL buffers I/O behind the scenes so that small reads and writes are batched into larger ones. When you need maximum performance — large log files, streaming uploads — drop down to the buffered or streaming APIs explicitly.
Closing resources
Files, sockets and database connections must be closed when you are done with them. Forgetting leaks operating-system resources and eventually crashes long-running programs. Use the language's built-in with / using / defer construct (it has a different name in each language) to guarantee cleanup happens.