一.SQL数据库常用数据类型
Bit(可选值0、1)、datetime、int、varchar、nvarchar(可能含有中文字符用nvarchar)
varchar、nvarchar、char(n)的区别:char(n)不足长度的部分用空格填充。
二.SQL语句入门
1.简单语法:
(1).SQL语句中的字符串用单引号。
(2).大小写不敏感,指的是SQL关键字,字符串值对大小写敏感。
(3).创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中应用很多。CREATE TABLE T_Person(Id int NOT NULL,Name nvarchar(50),Age int NULL)/ DROP TABLE T_Person.
(4).简单的Insert语句:INSERT INTO T_Person(Id,Name,Age) VALUES(1,’Jim’,20).
(5).SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。Create、Table、Drop table等属于DDL,Select、Insert等属于DML。
2.数据插入:
(1).Insert语句可以省略表名后面的列明,但是不推荐
(2).如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。
(3).可以给字段默认值,如果Guid类型主键的默认值设定为newid()就会自动生成,很少这么干。
(4).主键:insert into Person3(Name,Age) values(‘lily’,38);
Insert into Person4(Id,Name,Age) values(newid(),’Tom’,30);
(5)数据更新:
(1).更新一个列:UPDATE T_Person Set Age=30;
(2).更新多个列:UPDATE T_Person Set Age=30,Name=’tom’;
(3).更新一部分数据:UPDATE T_Person Set Age=30 where Name=’tom’,用where语句表示只更新Name是tom的行。
(4).Where中还可以是使用复杂的逻辑判断UPDATE T_Person Set Age=30 where Name=’tom’or Age<25,or相当于C#中的||(或者).
(5).Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等。
3.数据删除:
(1).删除表中的全部数据:DELETE FROM T_Person。
(2).Delete也可以带where子句来删除一部分数据。
4.数据检索:
(1).简单的数据检索:略。
5.数据排序:
(1).ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或多个列进行排序,还可以指定排序方式是升序ASC还是降序DESC。
(2).按照年龄升序排序所有员工信息列表:SELECT * FROM T_Employee ORDER BY FAge ASC
(3).按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序:
SELECT * FROM T_Employee WHERE FAge>23 ORDER BY FAge DESC,FSalary DESC.
4.通配符过滤:
(1).通配符过滤使用LIKE。
(2).单字符匹配的通配符为半角下划线”_”,他匹配单个出现的字符,以任意字符开头,剩余部分为”erry”:SELECT * FROM T_Employee WHERE FName LIKE ‘erry’;
(3).多字符匹配的通配符为半角百分号“%“,它匹配任意次数(零或多个)出现的任意字符。”k%”匹配以’k’开头,任意长度的字符串。检索姓名中包含字母’N’的员工信息:
SELECT * FROM T_Employee WHERE FName LIKE ’%n%’;
5.空值处理:
(1).数据库中,一个列如果没有指定值,那么值就为null,这个nill和C#中的null不同,数据库中的null表示“不知道“,而不是表示没有。因此SELECT null+1的结果是null,因为”不知道”+1的结果还是”不知道”。
(2).SQL中使用is null、is not null来进行空值的判断:
SELECT * FROM T_Employee WHERE FNAME is null;
SELECT * FROM T_Employee WHERE FNAME is not null;
6.数据分组:
(1).按照年龄进行分组统计各个年龄段的人数:
SELECT FAge,Count(*) FROM T_Employee GROUP BY FAge;
(2).GROUP BY子句必须放到WHERE语句的后面。
(3).没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的(聚合函数中除外):
错误:SELECT FAge,FSalary FROM T_Employee GROUP BY FAge;
正确: SELECT FAge,AVG(FSalary) FROM T_Employee GROUP BY FAge;
---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------