DBMS主要有MYSQL、MSSQLServer、DB2、Orcale、Sybase、Access等.
常用数据类型:bit(可选值0或1)、datetime、int、varchar、nvarchar(包含中文)。 char(n)和varchar的区别:char(n)不足长度n的部分用空格填充。
SQL语句是和DBMS“交谈”专用的语句,SQL语句中字符串用单引号,大小写不敏感
SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。Create Table、Drop Table、Alter Table等属于DDLSelect、Insert、Update、Delete等属于DML
SQLServer中两种常用的主键数据类型:Sql server 中主键常用数据类型有两种:int(或bigint) 和 uniqueidentifier(又称GUID)。这两种是最常用的,最合理的主键使用类型,注意这里是合理,不是合法,也可以用其他的类型,但不合理。
用int怎么来唯一标识表呢?
方法很简单,int + 标识列(又称自增字段)。在列属性里把“是标识列”设置为“是”就OK了,这样就可以标识一个表了。
如何用GUID来唯一标识表呢?
用guid算法,这里仅给出语句,具体算法本人没有深入研究,还得继续学习,在SQL中,写:select newid();就可以生成唯一字串;在.NET中,Guid id = guid.newGuid();就可以生成唯一字串。Guid算法是使用MAC计算出来的。
两者的比较:
Int的优点:占用空间小,容易读;缺点:导入导出很痛苦;
Guid的优点:效率高,导入导出很方便;缺点:占用空间大,不易读。业界倾向于Guid的使用。
创建表:CREATE TABLE T_Person(ID int NOT NUll,Name nvarchar(50))
删除表:DROP TABLE T_Person
修改表:ALTER TABLE
增加字段 ALTER TABLE T_Person ADD salary int
条件语句:WHERE ...or、and、not、<、>、<=、>=、!=(<>)
检索数据:SELECT name,age... FROM T_Person
AS 可用于设置别名
插入数据:INSERT INTO T_Person(name,age...) VALUES(values1,values2...)
返回插入的ID:INSERT INTO T_Person(name,age...) OUTPUT INSERT.ID VALUES(values1,values2...)
更新数据:UPDATE T_Person SET name='yuye'
删除数据:DELETE FROM T_Person
聚合函数:count(*) 数量 max() 最大数 min() 最小数 avg() 平均值 sum() 求合
排序:ORDER...BY...ASC(默认升序)/DESC(降序)
SELECT * FROM T_Person OREDR BY age ASC
通配符:LIKE
"_"匹配单个字符 SELECT * FROM T_Person WHERE name LIKE '_erry'
"%"匹配零个或多个字符 SELECT * FROM T_Person WHERE name LIKE '%n%'; 包含n的
IS用来判断是否为空 NULL代表不知道 无法进行运算比较 应该用IS NULL/IS NOT NULL
范围:IN(...,...,...) SELECT * FROM T_Person WHELE age IN(20,25,30)
BETWEEN ... AND ... SELECT * FROM T_Person WHELE age BETWEEN 20 and 30
数据分组:GROUP BY ... HAVING ... 在WHERE中不能使用聚合函数,必须使用HAVING
GROUP BY必须放于WHERE语句之后 HAVING要位于GROUP BY之后
WHERE用于对未分组之前的数据过滤,HAVING则是对分组之后的数据过滤
限制结果集行数:TOP
SELECT TOP 5 * FROM T_Person ORDER BY age DESC
SQLServer2005后增加:ROW_NUMBER() OVER(DRDER BY...DESC)
去掉数据重复:DISTINCT 针对选定的所有字段,而不是一个字段
SELECT DISTINCT * FROM T_Person
联合查询:UNION 字段个数要一样,类型要相容
UNION ALL 显示重复行
数学函数:
ABS() 求绝对值 CEILING() 舍入到最大整数 FLOOR() 舍入到最小整数 ROUND() 四舍五入
字符串函数:
LEN() 长度 LOWER() 小写 UPPER() 大写 LTRIM() 去掉左侧空格 RTRIM() 去掉左侧空格
SUBSTRING(string,start_position,length) 获取子字符串
日期函数:
GETDATE() 取得当前日期
DATEADD(datepart,number,date) 增加日期 dateadd(day,3,getdate())
DATEDIFF(datepart,startdate,enddate) 计算两个日期差额
DATEPART(datepart,date) 返回一个日期的特定部分
类型转换函数:
CAST(expression AS data_type)
CONVERT(data_type,expression)
空值处理函数:
ISNULL(expression,value) 如果expression不为空则返回expression,否则返回value
CASE 函数:
用法1:CASE expression
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
....
ELSE defaultreturnvalue
END
用法2:CASE
WHEN condition1 THEN returnvalue1
WHEN condition2 THEN returnvalue2
...
ELSE defaultreturnvalue
END