Kapitel 7. Reserverade ord

Innehållsförteckning
Lista över reserverade ord
Satsbyggnad
Inbyggda funktioner

Det är viktigt att känna till de reserverade orden som används av SQL eftersom att de inte får användas för att namnge tabeller eller poster.

Lista över reserverade ord

add, all, alter, analyse, and, as, asc, asensitive, auto_increment

bdb, before, berkeleydb, between, bigint, binary, blob, both, btree, by

call, cascade, case, change, char, character, check, collate, column, columns, connection, constraint, create, cross, current_date, current_time, current_timestamp, cursor

database, databases, day_hour, day_minute, day_second, dec, decimal, declare, default, delayed, delete, desc, describe, distinct, distinctrow, div, double, drop

else, elseif, enclosed, errors, escaped, exists, explain

false, fields, float, for, force, foreign, from, fulltext

grant, group

hash, having, high_priority, hour_minute, hour_second

if, ignore, in, index, infile, inner, innodb, inout, insensitive, insert, int, integer, interval, into, io_thread, is, iterate

join

key, keys, kill

leading, leave, left, like, limit, lines, load, localtime, localtimestamp, lock, long, longblob, longtext, loop, low_priority

master_server_id, match, mediumblob, mediumint, mediumtext, middleint, minute_second, mod, mrg_myisam

natural, not, no_write_to_binlog, null, numeric

on, optimize, option, optinally, or, order, out, outer, outfile

precision, primary, privileges, procedure, purge

read, real, references, regexp, rename, repeat, replace, require, restrict, return, returns, revoke, right, rlike, rtree

select, sensitive, separator, set, show, smallint, some, soname, spatial, specific, sql_big_result, sql_calc_found_rows, sql_small_result, ssl, starting, straight_join, striped

table, tables, terminated, then, tinyblob, tinyint, tinytext, to, trailing, true, types

union, unique, unlock, unsigned, until, update, usage, use, user_resources, using

values, varbinary, varchar, varcharacter, varying

warnings, when, where, while, with, write

xor

year_month

zerofill

Satsbyggnad

När du jobbar mot en SQL-server skriver du kommandon, dessa kommandon måste följa en strikt syntax annars förstår inte SQL-servern vad du vill. Normalt skriver du kommandot du vill att SQL-servern skall utföra och avslutar med ett semikolon (;) följt av enter.

Syntaxen för select ser ut så här:


SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL] utrycket, ... [INTO (OUTFILE | DUMPFILE)
  'filnamn' export_val] [FROM tabell [WHERE definition] [GROUP BY (unsigned
    int | fältnamn | formel) [ASC | DESC], ... [WITH ROLLUP]] [HAVING
    definition] [ORDER BY (unsigned int | fältnamn | formel) [ASC | DESC],
    ...] [LIMIT [offset,] rader | rader OFFSET offset] [PROCEDURE
    procedure_namn(argument lista)] [FOR UPDATE | LOCK IN SHARE MODE]]

Inte så svårt, eller hur?

Du kan omöjligt lära dig alla kommandonas syntax utantill, men du skall förstå vad syntaxen är och vart du hittar den. På MySQL's hemsida finns referenser till alla SQL-kommandonas syntax. Leta upp syntaxen för insert och update och titta igenom dem.

Nu använder vi vår syntax för att bygga ett kommando:


select * from folkbokforing where ort='helsingborg' and alder > 20 limit 10;

Vad tror du ovanstående select gör?

Inbyggda funktioner

I SQL finns en massa olika funktioner som du kan använda, vi går igenom en del av dessa. Denna förteckning är inte alls komplett, men tar upp de vanligaste funktionerna, som du faktiskt kan ha nytta av.

övriga funktioner

database() returnerar namnet på den databas som du jobbar med för tillfället.


select database();

encrypt(s, salt) krypterar strängen s med valfri salt. Om du använder samma sträng, men byter ut salt får du olika krypterade strängar. Säg att vi vill spara ett lösenord för användare i en databas. Vi använder deras användarnamn som sträng och deras lösenord som salt. I databasen lagrar vi användarnamnet i klartext och den krypterade strängen vi får från encrypt. För att verifiera sig måste användaren ange rätt användarnamn och lösenord och vår applikation använder dessa för att skapa en ny krypterad sträng, om vi får samma krypterade sträng har användaren angett rätt lösenord.

Fördel? Lösenordet lagras inte i klartext i databasen och det går inte att få fram det med hjälp av användarnamnet och den lagrade krypterade strängen.


select encrypt('data','world');

md5(s) returnerar en md5summa för strängen s. md5 är ett sätt att beräkna kontrollsummor på data. Med hjälp av md5-funktionen kan vi kontrollera integritet i databasen, att inte data som lagras förändrats på något otillåtet sätt.


select md5('data');

password(s) returnerar en krypterad sträng av strängen s. Kan användas på samma sätt som encrypt.


select password('data');

version() returnerar vilken version av MySQL du använder.


select version();

count(x) returnerar hur många poster det finns i tabellen i fält x.


select count(*) from elev;
select count(*) as elever from elev;

count(distinct x) returnerar antalet unika poster det finns i tabellen i fält x.


select count(distinct namn) from elev;

avg(x) returnerar medelvärdet från fältet x i tabellen.


select avg(alder) from elev;

min(x) returnerar det minsta värdet från fältet x i tabellen.


select min(alder) from elev;

max(x) returnerar det högsta värdet från fältet x i tabellen.


select max(alder) from elev;

sum(x) returnerar summan av alla värden i fältet x i tabellen.


select sum(alder) from elev;