Introduction MS SQLServer is a database server Product of Microsoft Enables user to write queries and other SQL statements and execute them Consists of several features. A few are: Query Analyzer Profiler Service Manager Bulk Copy Program (BCP)
3.
Profiler Monitoring tool Used for performance tuning Uses traces – an event monitoring protocol Event may be a query or a transaction like logins etc
4.
Service Manager Helpsus to manage services More than one instance of SQL server can be installed in a machine First Instance is called as default instance Rest of the instances (16 max) are called as named instances Service manager helps in starting or stopping the instances individually
5.
Instances Each instanceis hidden from another instance Enhances security Every instance has its own set of Users, Admins, Databases, Collations Advantage of having multiple instance is Multi company support (Each company can have its own instance and create databases on the same server, independent on each other) Server consolidation (Can host up to 10 server applications on a single machine)
6.
BCP Bulk CopyProgram A powerful command line utility that enables us to transfer large number of records from a file to database Time taken for copying to and from database is very less Helps in back up and restoration
7.
Query Analyzer Allowsus to write queries and SQL statements Checks syntax of the SQL statement written Executes the statements Store and reload statements Save the results in file View reports (either as grid or as a text)
8.
SQL Database Objects A SQL Server database has lot of objects like Tables Views Stored Procedures Functions Rules Defaults Cursors Triggers
9.
System Databases Bydefault SQL server has 4 databases Master : System defined stored procedures, login details, configuration settings etc Model : Template for creating a database Tempdb : Stores temporary tables. This db is created when the server starts and dropped when the server shuts down Msdb : Has tables that have details with respect to alerts, jobs. Deals with SQL Server Agent Service
10.
Creating a database We need to use Master database for creating a database By default the size of a database is 1 MB A database consists of Master Data File (.mdf) Primary Log File (.ldf)
11.
Database operations Changinga database Use <dbname> Creating a database Create database <dbname> Dropping a database Drop database <dbname>
12.
SQL Server Datatypes Integer : Stores whole number Float : Stores real numbers Text : Stores characters Decimal: Stores real numbers Money : Stores monetary data. Supports 4 places after decimal Date : Stores date and time Binary : Stores images and other large objects Miscellaneous : Different types special to SQL Server. (Refer to notes for more info)
Select Statements Toexecute a statement in MS SQL, Select the statement and Click on the Execute button in the query analyser or press F5 This is used to retrive records from a table Eg. Select * from table1; This will fetch all rows and all columns from table1 Eg. Select col1,col2 from table1 This will fetch col1 and col2 from table1 for all rows Eg. Select * from table1 where <<condn>> This will fetch all rows from table1 that satisfies a condition Eg. Select col1,col2 from table1 where <<condn>> This will fetch col1 and col2 of rows from table1 that satisfies a condition
15.
Select Options Aggregatefunctions Sum(col1): sum of data in the column col1 Max(col1): data with maximum value in col1 Min(col1): data with minimum value in col1 Avg(col1): Average of data in col1 Count(col1): Number of not null records in table Grouping – Group by col1 : Groups data by col1 Ordering – Order by col1 : Orders the result in ascending order (default order) of col1 Filtering – Where <<condn>> and Having <<condn>>
16.
Table management Create tabletablename ( col1 data type, col2 data type ); - Creates a table with two columns Drop table tablename; - Drops the table structure
17.
Insert statements Insertingdata to all columns Insert into tablename(col1,col2) values(v1,v2) Insert into tablename values(v1,v2) Inserting data to selected columns Insert into tablename(col1) values (v1) Insert into tablename(col2) values (v2)
18.
Update statement Update tabletablename Set colname=value - This updates all rows with colname set to value Update table tablename Set colname=value Where <<condition>> - This updates selected rows with colname as value only if the row satisfies the condition
19.
Delete statements Delete fromtable1; Deletes all rows in table1 Delete from table1 where <<condition>> Deletes few rows from table1 if they satisfy the condition
20.
Truncate statement Truncatetable tablename Removes all rows in a table Resets the table. Truncate does the following, where as delete statement does not Releases the memory used Resets the identity value Does not invoke delete trigger
21.
Alter statements Usedto modify table structure Add new column Change data type of existing column Delete a column Add or remove constraints like foreign key, primary key
22.
More table commands Viewing tables in a data base: Exec sp_tables “a%” This gives all tables in the current database that starts with “a” Viewing table strucure: Exec sp_columns <<tablename>> Exec sp_columns student;
23.
Joins Cross Join Cartesian product. Simply merges two tables. Inner Join Cross join with a condition. Used to find matching records in the two tables Outer Join Used to find un matched rows in the two tables Self Join Joining a table with itself
24.
Cross Join There aretwo tables A and B A has a column Id and data (1,2,3) B has a column Id and data (A,B) If I put Select A.Id, B.Id from A,B This generates output as A 1 B 1 C 1 A 2 B 2 C 2
25.
Self Join There isa table called Emp with the following structure: empid ename mgrid 1 A null 2 B 1 3 C 1 4 D 2 If I want to print all managers using self join, I should write quey as: select e1.ename from emp e1,emp e2 where e1.mgrid = e2.empid
26.
Inner Join I have2 tables Student(sid,Name) and Marks(Sid,Subject,Score) If I want to print the marks of all students in the following format, Name Subject Score Select Name,Subject,Score from Student s join Marks m On s.sid = m.sid
27.
Outer Join Rightouter Join Print all the records in the second table with null values for missing records in the first table Left outer Join Print all the records in the first table with null values for missing records in the second table Full outer Join Prints all records in both the table with null values for missing records in both the table
28.
Left Outer Join Ihave a table Employee (Eid, Ename, Mid) and a table Machine (Mid,ManufacturerName) Employee Eid EName Mid 1 ABC 1 2 DEF 3 Machine MidManufacturerName 1 Zenith 2 HP
29.
Left Outer Join Iwant to print the employee name and machine name. If I write a query using inner join, then the second employee will not be displayed as the mid in his record is not avilable with the second table. So I go for left outer join. The query is as shown below: Select Ename, ManufacturerName from Employee e left outer join Machine m on e.Mid = m.Mid
30.
Right outer Join Assumedata in the tables like this: Employee EidEName Mid 1 ABC 1 2 DEF Machine Mid ManufacturerName 1 Zenith 2 HP
31.
Right Outer Join IfI want to find which machine is unallocated, I can use right outer join. The query is as follows: Select Ename, ManufacturerName from Employee e right outer join Machine m on e.Mid = m.Mid This yields a result ABC Zenith HP
32.
Full Outer Join Assumedata in the tables like this: Employee Eid EName Mid 1 ABC 1 2 DEF 3 GHI 2 Machine MidManufacturerName 1 Zenith 2 HP 3 Compaq
33.
Full Outer Join IfI want to find people who have been un allocated with a system and machines that are been un allocated, I can go for full outer join. Query is like this: Select Ename, ManufacturerName from Employee e full outer join Machine m on e.Mid = m.Mid This yields a result ABC Zenith DEF GHI HP Compaq
34.
Views Views arelogical tables They are pre compiled objects We can select few columns or rows from a table and put the data set in a view and can use view in the same way as we use tables
35.
Views Create views: Createview viewname as select stmt Create view view_emp as select empid, empname from employee; Select from views: Select * from viewname Select empid,empname view_emp; Drop views: Drop view viewname Drop view view_emp;
36.
String Functions Substring(string,start,length)– Will fetch characters starting at a specific index extending to length specified. Left(string,length) – Fetches number of characters specified by length from left of the string Right(string,length) – Fetches number of characters specified by length from right of the string Len(string) – Returns the length of a string
37.
String Functions Ltrim(string)– Removes leading spaces in a string Rtrim(string) – Removes trailing spaces in a string Lower(string) – Converts the characters in a string to lower case Upper(string) – Converts the characters in a string to upper case
38.
Numeric Functions ABS(Number)– Fetches the modulo value (Positive value) of a number CEILING(Number) – Fetches the closest integer greater than the number FLOOR(Number) – Fetches the closest integer smaller than the number EXP(Number) – Fetches the exponent of a number
39.
Numeric Functions POWER(x,y)– Fetches x raised to the power of y LOG(Number) – Fetches the natural logarithmic value of the number LOG10(Number) – Fetches log to the base 10 of a number SQRT(Number) – Fetches the square root of a number
40.
Indexes Indexes makesearch and retrieve fast in a database This is for optimizing the select statement Types of index Unique Non unique Clustered Non clustered
41.
Index Create index indexnameon tablename(columnname) This creates a non clustered index on a table Create unique clustered index index_name on Student(sname); This creates a unique and clustered index on the Column Sname.
42.
Sequences This createsan auto increment for a column If a table has a column with sequence or auto increment, the user need not insert data explicitly for the column Sequence is implemented using the concept of Identity
43.
Identity Identity has A seed An increment Seed is the initial value Increment is the value by which we need to skip to fetch the nextvalue Identity(1,2) will generate sequence numbers 1,3,5,7…
44.
Sample Create table table1 ( Idinteger identity(1,1), Name varchar(10) ) It is enough if we insert like this: Insert into table1(name) values(‘Ram’); Ram will automatically assigned value 1 for id
Editor's Notes
#11 Use master; Create database dbtest On primary ( name = softsmith, filename = ‘c:\test\softsmith.mdf’, size = 10 MB, maxsize = 20, filegrowth = 2 ) Log on ( name = softsmithlog, filename = ‘c:\test\softsmith.ldf’, size = 10 MB, maxsize = 20, filegrowth = 2 ) This creates a database with the name softsmith. The datafile softsmith.mdf and log file softsmith.ldf will be created in the path c:\test. The size of database is 10 MB.
#12 Integer: Bit - 1 bit Tinyint - 1 byte Smallint - 2 bytes Int - 4 bytes Bigint - 8 bytes Float: Float Real Text: Non unicode string: A character occupies 1 byte Char Varchar Text Unicode string: A character occupies 2 bytes Nchar Nvarchar Ntext Decimal: has precision and scale Decimal(p,s) Numeric(p,s) P = total digits in a number S = number of digits after decimal point Eg. Numeric(4,2) can store 22.56 and so on Money: Data like 23.2234 Money Smallmoney Date: Smalldatetime – Range – 1-1-1900 to 6-6-2079 Datetime - Range – 1-1-1753 to 31-12-9999 Binary: Binary Varbinary Image Misc: Uniqueidentifier – Unique id – can be accessed and modified through function getUid() and setUid() Cursor – Special data type meant for row by row operation Sql_variant – Generic data types Table – table data type – stores table data Timestamp – Uniqe value in a database
#14 To execute a statement in MS SQL, Select the statement and Click on the Execute button in the query analyser or press F5
#15 To select distinct rows, we need to use the distinct key word Select distinct name from orders; Orders -------- Id Name -- ------- 1 Ram 2 Krish 3 Ram 4 Raj Will fetch Ram Krish Raj Select count(name) from orders; will yield the result as 4 Sum, max, min, avg can be applied only on numbers. Select sum(id) from orders will yield the result as 10 Select max(id) from orders will yield the result as 4 Select min(id) from orders will yield the result as 1 Select avg(id) from orders will yield the result as 2.5 Order by Select * from Orders order by name; 2 Krish 4 Raj 1 Ram 3 Ram Select * from Orders order by name desc; 3 Ram 1 Ram 4 Raj 2 Krish Where: Select * from orders where name = ‘Raj’; will result in Id Name -- ------- 4 Raj Having: Select Name, count(id) from Orders Group by name Having count(id) > 1 This will display names and number of occurances of name from orders table if the number of occurances Is > 1 Name count(id) Ram 2 If we miss the having, it simply displays Name and occurance of name in the table. Select Name, count(id) from Orders Group by name Name count(id) Krish 1 Raj 1 Ram 2
#17 insert into Student values(1,'Ramu') insert into Student(sid,sname) values(6,'Raj') insert into Student(sid) values(2) insert into Student(sname) values('Seetha')
#18 update student set sid=3 This will set sid =3 for all students update student set sid=1 where sname='Ramu‘ This will set sid as 1 only for Ramu
#19 delete from student where sid between 1 and 3 This will delete students with sid 1,2,3
#21 Add new column: Alter table test add grade char(1); Modify a column data type: Alter table test alter column grade varchar(10); Delete a column: Alter table test drop column grade;
#40 A table can have only one clustered index and any number of non clustered index (upto 249) Unique index – When a unique index exists, the Database Engine checks for duplicate values each time data is added by a insert operations. Insert operations that would generate duplicate key values are rolled back, and the Database Engine displays an error message. Clustered index - clustered index can be rebuilt or reorganized on demand to control table fragmentation. A clustered index can also be created on a view. This improves the performance. Non clustered index - Creates an index that specifies the logical ordering of a table. With a nonclustered index, the physical order of the data rows is independent of their indexed order.