SQL:结构化查询语言,是国际化标准组织采纳的标准数据库语言作用:数据库管理员可以用利用次语言操作数据库系统,即:SQL是一种能够被数据库系统读懂的操作语言。
T—SQL是微软公司针对SQL Server这种关系数据库所定义的一种SQL语言,用户可以完成Server数据库中的所有操作。
SQL的分类:(1):数据定义语言,DDL用来创建数据库和数据库中的各种对象数据库中的对象包括:表、视图、索引、存储过程、触发器DDL常用的命令包括:create、alter、drop(2):数据操纵语言,DML可以完成对数据库中数据的查询、更新、删除、插入的功能DML常用的命令包括:select、update、delete、insert(3)数据控制语言,DCLDCL常用的命令包括:grant、revoke、deny(4)数据类型1、数字数据类型a、整型数据类型:bigint、int、smallint、tinyintb、浮点数据类型:float、realc、固定精度数据类型:decimal、numericd、货币数据类型:money、smallmoney将数据格式转换成字符串方法:STR(ID;---ID为数据类型,STR(ID为字符串2、字符数据类型:varchar、char、text、nchar、nvarchar、ntext区别char和varchar数据类型:char数据类型是存放固定长度的字符Varchar数据类型是存放动态长度的字符char(14,实际放入到数据库的字符长度为14个字符,如果实际存储的长度小于定义的长度,那么数据库会在次字符串后面加上3个空格1、insert 语句:insert语句是属于SQL语言中的DML作用:为表插入数据你向一个表中插入一条新记录,但有一个字段没有提供数据。
在这种情况下,有下面的四种可能:1、如果该字段有一个缺省值(默认值),该值会被使用。
2、如果该字段可以接受空值,而且没有缺省值,则会被插入空值。
3、如果该字段不能接受空值,而且没有缺省值,就会出现错误。
你会收到错误信息:The column in table mytable may not be null.4、如果该字段是一个标识字段,那么它会自动产生一个新值。
当你向一个有标识字段的表中插入新记录时,只要忽略该字段,标识字段会给自己赋一个新值。
使用INSERT语句可向文本型字段中插入数据。
但是,如果你需要输入很长的字符串,你应该使用WRITETEXT语句。
语法:insert into 表名(列名1,列名2,….. values(值1,值2,….注意:(列名1,列名2,…..可以不写,这样的话,插入的values(值1,值2,….中的值必须包含表中的所有列,不然会报错。
把INSERT 语句与SELECT 语句结合起来,可以添加多个记录。
像这样:代码:INSERT mytable (first_column,second_columnSELECT another_first,another_secondFROM anothertable WHERE another_first=’Copy Me!’这个语句从anothertable拷贝记录到mytable.只有表anothertable中字段another_first的值为’Copy Me!’的记录才被拷贝。
2、update 语句它也是属于SQL语句中的DML, 可以修改表的数据,使用WHERE子句来选择更新特定的记录。
需要更新很长的字符串,应使用UPDATETEXT语句。
如果你不提供WHERE子句,表中的所有记录都将被更新。
语法:update 表名 set 列名1=值1,列名2=值2,……..[where 条件….]update student set sage=20 where sno=’s014’----修改一列update student set sage=20,set ssex=’女’ where sno=’s014’----修改多列逗号隔开3、delete语句也是属于SQL语句中的DML作用:可删除表中的一行或多行,在SQL SELECT 语句中可以使用的任何条件都可以在DELECT 语句的WHERE子句中使用。
删除应该表中的所有记录,应使用TRUNCATE TABLE语句。
语法:delete from 表名[where 条件….]delete from student----删除表student中所有数据delete from student where sno = ‘s014’----删除表student中编号是014的一行delete from student where sno >= ‘s013’ --删除表student中编号大于等于013的行4、建立索引Create INDEX index_name ON table_name (column_name说明:对某个表格建立索引后,数据库会对相应列进行自然排序,以增加查询时的速度。
4、基本查询技术:数据库中提供一种可以将表中的数据查询出来的技术,称为select查询select查询技术的基本语法格式select [列名1,列名2,…..] | from 表名1,表名2[where 条件][group by分组的列名][having聚合函数比较操作][order by 排序的列名](1)查询语句中的“*”号代表将表中的列全部显示出来select * from student(2)如果只想在查询中显示某一列用:select sno sname sage from student注意:“*”和列名只能够二选一,不能够同时出现(3)在查询的时候可以为表或者列定义别名A:为列定义别名select sno as 学号 ,sname as 姓名 from student或:select ‘学号’=sno, ‘姓名’=sname from studentB:为表定义别名select sno sname sage ssex from student a好处:当出现多张表联系起来作查询的时候,如果多张表中含有相同的列名的时候,为表定义别名使得查询比较方便例如:想查询课程是由哪些老师就是讲授的。
从课程course表和老师teacher表中查找车tno列相同的数据select cname, tname, from course a , teacher bwhere a.tno = b.tno(4)distinct 关键字此关键字是为了去掉列中重复的值, 对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
select distinct sno from sc(5)order by 排序(默认升序语法:order by 列名[desc | asc]desc:代表降序排列asc 代表升序排列select *from student order by sname如果不写排序关键字,默认的是升序select *from student order by sname desc(6)where关键字使用Where作为查询筛选结果的一个过程(非常重要语法:where 条件1[or | and] [条件2]…条件1可以包括以下内容:Where 列名1 列名2 | 数值(7top n限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOPn PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:代码:SELECT TOP 2 * FROM `testtable`代码:SELECT TOP 20 PERCENT * FROM `testtable`条件表达式分类:1、比较条件:(>:大于 <:小于 >=:大于等于 =<:小于等于 <>:不等于 =:登于)例如:找学生年龄大于23岁的同学信息select *from student where sage>232、逻辑条件(and:与运算 or:或运算 not:非)逻辑操作的用法:Where 条件1 条件2例如:查找课程编号大于’c002’的课程由哪些老师讲授sSelect *from teacher ,course where teacher.tno = course.tno and s o > ‘c002’例如:查找选修了课程’c002’,或者成绩大于70的学生有哪些select sname , sage , cno ,score from student a , sc bwhere a.sno = b.sno and (cno=’c002’ or score>70例如:not关键字的使用:select *from sc where score not between 70 and 803、 in关键字它是要求查询的结果在某几个值里面select *from sc where score not in(70,90,80select *from course where cno in (‘c001’,’c002’,’c005’in还可以应用到子查询中select *from sc where snoin (select sno from student where sno >= ‘s002’4、 like关键字like是作为SQL模糊查询比较常用的一个技术,在like关键字使用中提出两个比较特殊的符号%:0个或多个任意字符_:任意一个字符例如:a、查找学生表中姓“陈”的同学select * from student where sname like ‘陈%’b、查询学生表中名字是三个字的学生信息select * from student where sname like ‘___’ ----‘内三下杠’思考题:如果一个列中的内容含有下划线,要去用like来查找含有下划线的信息,该怎么做?在SQL模糊查询中提供了一个escape(逃离、躲避、转移关键字,它作为转义符使用select *from student where sname like ‘%$_%’ escape ‘$’“$”是定义的转移符号,那么在$符号后面的下划线不再是like中的特殊符号,而是一个普通字符5、 all关键字6、 any关键字7、between…and 关键字5、聚合函数:只能对表中的数字类型进行计算,其他类型报错max、min、count、avg、summax函数使用:select max(sage from student----求学生表中最大的年龄min函数使用:select min(sage from student-----求学生表中最小的年龄count函数使用:select count (*from studentselect count (snofrom studentcount(*:可以计算包含null列的记录数count(列名:记录总记录数的时候,不去计算null值avg函数的使用:select avg(sage from student-----求学生表中的平均年龄sum函数的使用:select sum(sage from student-----求学生表中的年龄和6、group by子句,它是一个分组函数,可以对某一列相同的值进行分组并求出相应的结果。