SQL一些基础的命令
插入数据
Insert into Persion1(Name,Age) Values(‘zhanghui’,21);
用newid自动生成序号。
Insert into Persion2(Id,Name,Age) Values(newid(),’hui’,22);
更新数据
1: UPDATE T_Person1 set Age=30;
2: Update Person set Name=’xiaohui’
Where Age>=20;
** 在数据库中等于号为一个等号。
** “<>”:表示不等于;
** 或者:为or;
删除数据
删除表全部
Delete from Person1
删除表的数据,表还在。
Delete from Person1 where Age>21
数据检索
Select * from <*:表示表名> 后面也可以加where 来区划大小
其启别名
Select FName as 姓名,FAge as 年龄, FSalary as 月薪 from Student
聚合函数
Select count(*) from Student; <总和>
Select max(*) from Student;
Select sum(*) from Student; <和>
排序
Select * from Student order by Age ASC/DESC <按年龄排序>
<ASC:从小到大;DESC:从大到小>
模糊匹配<通配符>
*单字符通配符以‘_’,它匹配单个出现的字符。
以任意字符开头,剩余部分为‘erry’:
Select * from Student where FName like ‘_erry’
*多字符匹配以‘%’,它匹配任意此数出现的字符。“K%”匹配以 K 开头的字符串。
Select * from Student where FNAme like ‘%n%’
** 在数据库中的NULL为‘不知道’和C#中的解释不一样。不是没有值。
数据的分组
按照年龄进行分组统计各个年龄断的人数:
select FAge ,Count(*) from Student
group by FAge
** group by 子句必须放在where语句之后。
** 没有出现group by子句中的列是不能放到select语句后的列名列表中的(聚合函数除外)
having语句
在where中不能使用聚合函数,必须使用Having,Having必须位于Group by 之后。
eg:
select Name from ,count(*) as 人数 from Student
group by Name
Having count(*)>1 //Having 不能代替where,Having是对组进行过滤的。
限制结果集的行数
eg: < 只取前3行>
select top 3 * from Student
order by Name DESC
eg: <只取去除5行的前3个>
select top 3 * from Student
where Name not in(select top 2* from Student order by Age DESC)
order by Age DESC
<.为什么出现错误???>
去除重复数据
eg:
select Gender from Student
select Gender, chinese from Student
eg: <加入distinct之后,去除重复>
select distinct Gender,chinese from Student
<distinct是对整个结果集进行数据重复处理的而不是针对每一列。>
select distinct Gender from Student
数据库的命令在不同的数据库中是相同的,但只有掌握了最基础的sql数据库才能应用于oclace等数据库。虽然现在只是学习数据库,但是我觉的还是挺有意思的,自己挺喜欢数据库的。加油。