====== SQLite ====== The Standard stuff is pretty easy. There is also a good [[https://www.tutorialspoint.com/sqlite|summeray]]. Here we go with a quick start to create a DB-file with a table in it and do some stuff. # sqlite3 sqlite> .table mydb.db sqlite> CREATE TABLE IF NOT EXISTS T_names(name TEXT, birthyear INT); sqlite> INSERT INTO T_names VALUES ('John Smith', 1999); sqlite> INSERT INTO T_names VALUES ('Jack Doe', 1998); sqlite> SELECT * FROM T_names; sqlite> SELECT name FROM T_names WHERE birthyear=1998; sqlite> UPDATE T_names SET birthyear=1997 WHERE name = 'Jack Doe'; sqlite> SELECT * FROM T_names LIMIT 1; ====== mySQL / MariaDB ====== CREATE DATABASE IF NOT EXISTS meineDB; CREATE USER 'benutzer'@'localhost' IDENTIFIED BY 'passwort'; GRANT ALL PRIVILEGES ON meineDB . * TO 'benutzer'@'localhost'; Grant Access from remote IP (10.11.12.13) GRANT ALL ON meineDB.* to 'benutzer'@'10.11.12.13' IDENTIFIED BY 'passwort' WITH GRANT OPTION; ====== PostgreSQL ====== A useful tutorial is [[https://www.tutorialspoint.com/postgresql/|here]]. Create, drop and list DB CREATE DATABASE dbname; DROP DATABASE dbname; \l #List DBs Connect to DB \c dbname #Connect to DB Select with multiple LIKE and NOT LIKE SELECT something, anything FROM T_table WHERE something != 'thing' AND anything LIKE '%any%' AND anything NOT LIKE '%stuff%' AND anything NOT LIKE '%other%'; SELECT something, anything FROM T_table WHERE something LIKE ANY (ARRAY['%som%', '%thing', 'any%', 'stuff%']) Create a new DB and User and change DB-Owner CREATE DATABASE mynewdb; CREATE USER myuser WITH PASSWORD 'Aw5s0m4Secur3'; ALTER DATABASE mynewdb OWNER TO myuser; Copying PostgreSQL database to another server pg_dump -C mynewdb | psql -h db.server.host -U myuser mynewdb Original command from [[https://stackoverflow.com/questions/1237725/copying-postgresql-database-to-another-server|stackoverflow]]. ===== Enable remote connections ===== - Find your postgresql.conf sudo -u postgres psql -c "SHOW config_file;" - Open the postgresql.conf #listen_addresses = 'localhost' listen_addresses = '*' # OR a specific IP instead of the wildcard for all IPs - Find your pg_hba.conf (on RHEL based distros: /var/lib/pgsql/data/pg_hba.conf) - Add the following lines # Allow external host all all 10.11.12.0/24 scram-sha-256 # for a network host all all 192.168.1.111/32 scram-sha-256 # for a single IP - Restart the DBMS systemctl restart postgresql.service ===== A method to get the lastest timestamp ===== From my point of view I've a good and a bad example The good example: SELECT something FROM table WHERE time_stamp = (SELECT MAX(time_stamp) FROM table); The bad example: SELECT something FROM table WHERE time_stamp = (SELECT time_stamp FROM table ORDER BY time_stamp DESC NULLS LAST LIMIT 1); ===== Other usefull stuff ===== Switch off the pages from CLI(shell) sudo -u postgres psql -P pager=off -d database -c "SELECT something FROM table;" Copy a SELECT to a CSV from CLI(shell) sudo -u postgres psql -d database -c "COPY (SELECT something, other_stuff FROM table GROUP BY something) TO '/tmp/result.csv' WITH CSV HEADER;" {{tag>[Good2Know]}}