This page contains the essential commands to manage databases using SQL (Structured Query Language). I use it as a refference for myself. I don't pretend to be an SQL-expert. Others may use this reference freely. If you have any suggestions or comments please e-mail me!
Some commands depend on the type of server used. I experiment with four servers, Microsoft SQL Server, Borland Interbase Server, MySQL Server en Sybase SQL Anywhere. If a command is specific to one server I indicate this with an icon.
- indicates that the command works with MS SQL Server.
- indicates the command works with Borland InterBase Server.
- indicates that the command works with MySQL Server.
- indicates that the command works with Sybase SQL Anywhere.
1. List all the databases on the server:
sp_databasesshow databases
2. Select a database to use:
use databasename3. List tables in the database:
show tablessp_help There is another, more complicated, command to retrieve the names of the tables in the database, but where you get a list of ALL tables, including system tables using sp_help, you can specify to view only user defined tables
select * from SYSOBJECTS
where TYPE = 'U'
order by NAME If you want to see the tables of an InterBase database use the menu "Metadata", "Show..." and select "Tables" in the "View Information on"-dropdown. Click "OK" and you see the tables of the active database. Using ISQL you can use show tables
To see the tables in Sybase press functionkey F7.
4. List fields in a table:
describe tabelnamesp_help tablename To see the fields of an InterBase database use the menu "Metadata", "Show..." and select "Tables" in the "View Information on"-dropdown. Type the name of the database in the "Object name"-textfield. Click "OK" and you see the fields of the specified table. Using ISQL you can use show table tablename
To see the fields in a Sybase table press functionkey F7, select the table and click "Columns".
5. Create a database:
create database databasenameon
(name='databasename_dat',
filename='c:\mssql7\data\databasename_dat.mdf',
size=2mb,
filegrowth=1mb)
log on
(name='databasename_log',
filename='c\mssql7\data\databasename_log.ldf',
size=2mb,
filegrowth=1mb)
6. Create a table in the database en store values in it:
create table tablename(fieldname1 datatype1, fieldname2 datatype2, ...)
insert into tablename
values(fieldvalue1, fieldvalue2, ...)
7. Constraints:
(fieldname1 datatype1 check (fieldname1 in ('value1', 'value2', ...)), fieldname2 datatype2, ...)
(fieldname1 datatype1, fieldname2 datatype2 default 'value', fieldname3 datatype3, ...)
8. Select all records from table:
select * from tablenameorder by fieldnameNote that this command could take some time and put a lot of stress on the processor and memory of the server if you try to view a large database this way. On my server (Pentium MMX 233 Mhz - 64 Mb memory) it took 1:25 minutes to retrieve 25000 records from a database and it gave warnigs of shortage in virtual memory, so please don't try this on a production database (;-). Usualy it is better to select fields and conditions to limit the amount of records and the stress on the server.
9. Select set of records from table:
select fieldname1, fieldname2, ... from tablenamewhere fieldname = "condition"
order by fieldname
Comparison Operators that can be used in the condition are:
=, !=, <>, <, >, <=, >= and LIKE.With LIKE you can specify e.g. all the names beginning with S as 'name LIKE "s%"'.
You can also use boolean operators to specify more then one condition (OR, AND, NOT, BETWEEN, IN). With 'BETWEEN' you give a minimum and maximum value to the condition, with 'IN' you can give a list of values.
Example:
select Firstname, Lastname, Department from Employeeswhere Lastname LIKE "Van%" AND
Badge BETWEEN 121990 and 141990 AND
Department IN ("Sales", "Logistics")
order by Lastname
This statement retrieves all the employees where Lastname begins with "Van", whose badgenumbers are between 121990 and 141990, who work at the Sales- or Logisticsdepartment, and displays their Lastname, Firstname and Dapartment ordered by Lastname.
Note theat the 'ORDER BY' statemant can have more then one fieldname and can also take 'asc' or 'desc' as last argument (for ascending or descnding order).
10. Retrieve unique values
select distinct fieldname from table11. Add records to a table:
insert into tablename (fieldname1, fieldname2, ...)values ('value1', 'value2', ...)
If you leave out the fieldnames then the values must match the number of fields in the table. If you only want to add a value to some fields you have to specify them and the values must mach the number of specified fields. The unspecified fields are filled with NULL or the default constraint defined in the table. You could concider to specify defaults like "unknown" or "N/A" to avoid a NULL-value in the field.
12. Updating records in a table;
update tablenameset fieldname1='value1', fieldname2='value2', ...
where fieldname3 = condition
If you ommit the 'where'-statement the update will be performed on ALL the records in the table!
13. Deleting a record from a table
delete from tablenamewhere fieldname=condition
Be arefull in using this command!! Ommitting the 'where'-statement will erae ALL the records in the table and leave you with an empty table!!!
14. Adding a field to the records in a table:
alter table tablenameadd fieldname datatype
The new field is filled with NULL and can be filled using the update-command after adding the field.
15. Changing the width of a field
alter table tablenamealter column fieldname newdatatypealter table tablename
modify fieldname newdatatype
16. Removing field from the records
alter table tablenamedrop column fieldnamealter table tablename
drop fieldname
17. Combine two querries:
select fieldname from tablenameunion
select fieldname2 from tablename2
order by fieldname
This union will remove all duplicates. To retain duplicates you have to use 'union all'
18. Basic SQL-functions:
Returns the arithmeticaverage of the fields.
where fieldname=condition
Returns the number of records that match the condition.
Returns the largest value of fieldname.
Returns the smallest value of fieldname.
Returns the summation value of fieldname.
converts one datatype into another.
19. String functions
20. Arithmetic functions:
ACOS, ASIN, ATAN, ATAN2, COS, COT, SIN, TAN, DEGREES, RADIANS, CEILING, FLOOR, EXP, LOG, LOG10, PI(), POWER, ABS, RAND, ROUND, SIGN, SQRT.21. TEXT and IMAGE functions:
22. Date functions:
23. Views:
Note that a view under SQL is the same as a query you create with Access.23.1 Create views:
create view viewname asselect fieldname1, fieldname2, ... from tablename1, tablename2, ...
where fieldname = conditionYou can't edit a view using SQL. You can use the Enterprise Manager of MS SQL to edit a view or you can delete a view and recreate it with the same name.
You can use alternative names for the columns in a view:
create view viewname (col1, col2, col3, ...)as
select fieldname1, fieldname2, ... from tablename1, tablename2, ...
where fieldname = condition
23.2 Display definition of a view:
sp_helptext viewnameTo prevent the possibility to view the definition of a view you can use encryption:create view viewname with encryption as
select fieldname1, fieldname2, ... from tablename1, tablename2, ...
where fieldname = condition
23.3 Display associations of a view:
sp_depends viewname23.4 Delete a view from the database:
drop view viewname1, viewname2, ...23.5 Insert records through a view:
insert into viewnamevalues ('value1', 'value2', ...)You can insert rows through the view that DON'T match the WHERE-statement inthe view definition, but then you can't retrieve the new row with the view. If you want to prevent this you can use the check option:
create view viewname as
select fieldname1, fieldname2, ... from tablename1, tablename2, ...
where fieldname = condition with check option
23.6 Delete records through a view:
delete from viewname where fieldname = conditionYou can't delete records through a view that don't match the WHERE-statement in the view definition.23.7 Updating records through a view:
update viewname set fieldname='value' where fieldname=conditionYou can update a record through a view so that it doesn't match the WHERE-statement anymore. You can't update a view if the updated columns belong to different tables.24. Indexes:
24.1 Simple index:
create index index_nameon table_name (fieldname)
24.2 Unique index:
create unique index index_nameon table_name (fieldname)This kind of index enforces integrity of the table by disallowing duplicete values in the indexed field.
24.3 Clustered index:
create clustered index index_nameon table_name (fieldname)A clustered index forces SQL Server to phisicaly store the table data in the exact order of of the index. This improves the performance of the table. You can only have obne clustered index on a table, the selected fieldname should be choosen carefully and every table should have an clustered index.
24.4 Display index info:
sp_helpindex tablename24.5 Deleting an index:
drop index table_name.index_name24.6 Primary and foreign keys:
You can specify a primary key on a table while creating it (see constraint), or you can add a primary key to an existing table by altering it. alter table table_name add constraint constraint_name primary key24.7 Display primary and foreign keys info:
sp_helpconstraint table_name24.6 Deleting primary and foreign keys:
alter table table_name drop constraint constraint_name25. Transaction:
A transaction is a series of SQL-statements performed at once, with the ability to undo the changes if something goes wrong during the processing of the statements. A transaction is enclosed in "begin tran" and "commit tran".Example:begin tran update tablename set fieldname = newvalue where fieldname = condition update tablename2 set fieldname = newvalue where fieldname = condition if @@error != 0 begin rollback tran print 'Error occured, no rows updated' return end commit tranYou can nest one transaction ino another by using named transactions. Be shure however to include a 'commit tran' for every 'begin tran' to avoid leaving a transaction open.
Example:
begin tran tran1_name update tablename set fieldname = newvalue where fieldname = condition begin tran tran2_name update tablename set fieldnname = newvalue where fieldname = condition if @@error != 0 begin rollback tran tran2_name print 'Failed to update tablename' return end commit tran tran2_name commit tran tran1_name
26. Rules:
A rule controls the values that can be entered into a field of a table. To apply a rule to a field you have to take two steps: create the rule and bind the rule to the field.26.1 Create a rule:
create rule rule_nameas @fieldname in ('value1','value2','value3')
26.2 Bind a rule:
sp_bindrule 'rule_name', 'table_name.field_name'26.3 Unbind a rule:
sp_unbindrule table_name.field_name26.4 Drop a rule:
drop rule rule_name!!You first have to unbind the rule before you can drop it!!To display rule bindings you can use 'sp_help tablename', to display the rules you can use 'sp_helptext rule_name' and to rename a rule you can use 'sp_rename rule_name, new_name'.
27. Defaults:
A default is create to provide a value for a field if the user doesn't fill in one. Just like creating rules you have to make to steps to apply ad efault: create it and bind it to a field in a table.27.1 Create a default:
create default default_name as value27.2 Bind a default:
sp_bindefault default_name, 'tablename.fieldname'27.3 Unbind a default:
sp_unbindefault 'tablename.fieldname'27.4 Drop a default:
drop default default_name!!You first have to unbind the default before you can drop it!!To display default bindings you can use 'sp_help tablename', to display the default you can use 'sp_helptext default_name' and to rename a default you can use 'sp_rename default_name, new_name'.
28. Stored procedures:
Stored procedures are routines or series of SQL-commands that run on the server side. The benefits are performance, because the server typically is the most powerfull computer on the network, and security, because you can control add/change/delete/list operations.28.1 Create a stored procedure:
create procedure procedure_nameas procedure_commandsTo execute the procedure you use 'exec procedure_name'. You can use parameters in procedures to pass values to the procedure:
create procedure procedure_name (@p1 type, @p2 type, ...)
as insert into table_name
values (@p1, @p2, ...)
Now you can execute this procedure by passing values to it:
exec procedure_name (value1, value2, ...)
You can also use variables in a procedure. You first have to declare them (declare @var_name var_type) and then you can assign a value to it (select @var_name = expression).
28.2 Display a stored procedure:
sp_helptext procedure_name28.3 Delete a stored procedure:
drop procedure procedure_nameIf you want to alter a procedure, you first have to drop it and then recreate it under the same name.28.4 Procedure Auto Execution:
You can automaticaly run a procedure every time the server is started by using:sp_makestartup procedure_namesp_unmakestartup procedure_name removes the procedure from the startupprocedures
sp_helpstartup displays the procedures currently running at startup
28.5 Flow-control statements:
The following statements can be used in stored procedures to control the flow of the procedure:- if ... else ...
- begin ... end
- while ...
- break
- continue
- goto
- return
- raiserror
- waitfor
- case ... when
29. Datatypes:
This is an overview of the different datatypes used by the different servers.MySQL | Borland InterBase Server | MS SQL Server | Sybase SQL |
---|---|---|---|
tinyint | - | tinyint | tinyint |
smallint | smallint | smallint | smallint |
mediumint | - | - | - |
int | int | int | int |
bigint | - | - | - |
- | numeric | numeric | numeric |
decimal | decimal | decimal | decimal |
- | - | real | real |
float | float | float | float |
double | double precision | - | double |
date | date | - | date |
- | - | smalldatetime | - |
datetime | - | datetime | - |
timestamp | - | timestamp | timestamp |
time | - | - | time |
year | - | - | - |
char(n) | char(n) | char(n) | char(n) |
varchar(n) | varchar(n) | varchar(n) | varchar(n) |
- | - | - | long varchar |
tinytext | - | - | - |
text | - | text | - |
- | - | ntext | - |
mediumtext | - | - | - |
longtext | - | - | - |
- | nchar(n) | nchar(n) | - |
- | nchar varying(n) | nvarchar(n) | - |
- | - | binary(n) | binary(n) |
- | - | varbinary(n) | - |
- | - | - | long binary |
tinyblob | - | - | - |
- | - | image | - |
blob | blob | - | - |
mediumblob | - | - | - |
longblob | - | - | - |
enum | - | - | - |
set | - | - | - |
- | - | bit | - |
- | - | uniqueidentifier | - |
- | - | money | - |
No comments:
Post a Comment