一:insert语句 into 关键字是可选的 values关键字前面的()是可选的,这里是要接收数据的列 values后面,有两种方式提供值 1:显式的给出值 2:从select语句中导出值
insert语句注意几点 1:不要理标志列,系统会给你插入的 2:给出实际的值,如果没有,那就null 3:给出默认的值,default关键字,告诉数据库取默认值
insert into ... select 什么时候会这么用,当成批的数据来自 1:数据库中的另一个表 2:同一台服务器完全不同的数据库 3:另一个SQLSERVER的数据库 4:来自同一个表中的数据 说实在的2和3我从来没用过
好,看一个例子 declare @mytable table ( id int, sortid int ); insert into @mytable (id,sortid) select id,classid from product; select * from @mytable; 注意我定义了一个表的对象 每一句之间是用分号隔开的 (id,sortid) 是可以忽略的
二:update语句 看例子 update e set e.flag = 'm' from employee e join contact ce on e.id = ce.employeeid where ce.name = 'jo' 这里用到了join子句,当然是可以用的 如果修改不止一列 只要加一个逗号 set num = num * 1.2当然可以写表达式
三:delete语句 delete from actors from actors a left join film f on a.filmid = f.filmid where f.filmid is null outer连接将在没有匹配的一端返回null, 这里也就是film表没有匹配的行是null 注意 is null 的写法
四: select语句 这里还是不说了,还是多说说子句吧 五:where子句 1: = > < >= <= <> != !> !< 其中<> 与 !=都是不相等的意思 !>与!<不怎么常见,但仔细想想也没什么用处
2: and or not 如果一个where子句中同时出现这三个操作符 最先评估not 然后是and 然后是or
3: between 例子 between 1 and 5 这个就不多说了
4: like 例子:like "xland%" %和_是通配符 %代表零个或多个任意字符 _表示单个任意字符 把字符包括在方括号中 [a-c]表示a b c都可行 [ab]表示a或b ^与not表示下一个字符将被排除掉
5: in 例子 in ( 1,2,3) 这个也不多说了
六:order by子句 order by由于比较常用 我这里就不多说了 1:order by username 是可以识别中文的(sql先把中文转换成拼音再进行排序) 2:可以对 查询到的表中的任何列 进行排序 无论该列是否包含在select列表中 3:基于多个列的order by 例如:order by addtime,id 先按时间排序,再在这个基础上根据id排序,你也看到了,性能是有很大幅度的降低的 七:distinct关键字 select count(distinct column) from table 检索某一列不重复的记录数 八:group by 聚集函数 和 having子句 先看例子: select orderid sum(orderMoney) from sales where orderid between 3 and 123 group by orderid 注意这里的orderid在表里是有可能重复的 这个语句的作用是检索出orderid从3到123的记录, 然后在这个记录集合上 以orderid分组 把orderid相同的数据分到一组 (这一组就是最终结果的一条记录) 然后通过sum函数把各组的orderMoney数据相加, 结果是最终结果的第二个字段 我发现用group by子句基本上都是和聚集函数一起用的 举几个聚集函数的例子 sum 求和 avg求平均数 min/max求最大和最小值 count(表达式|*)获取一个查询中的行数 只说说count吧: count(coloum)如果这一列有null,那么这些null的行将不会计算在内 count(*)将得到表里的所有行的数目 聚集函数不一定非和group by一起使用不可 (另外avg基本上都是和group by一起使用的)
having子句是在组上放置条件的 看例子 select orderid sum(orderMoney) from sales where orderid between 3 and 123 group by orderid having sum(orderMoney)>5 group by得到了一个记录的集合 然后通过having子句,再在这个集合上做筛选