一、索引
(1)、簇索引
建主键时建成的索引
(2)、非簇索引
可以设置多个,最多249个
创建索引命令格式:
CREATE [UNIQUE] [CLUSERED] [NONCLUSTERED] INDEX index_name --UNIQUE 唯一索引 CLUSERED 簇索引 NONCLUSTERED 普通索引
ON table (column[ ASC | DESC ])
二、视图
操作:
视图——>右键新建——>在最下边的框中输入SQL语句执行——>保存
可以像表一样使用、操作视图
例:1、将select xinxi.Code,xinxi.Name ,minzu.name ,xinxi.Sex,xinxi.Birthday from xinxi join minzu on xinxi.Code=minzu.Code 这条语句在视图中执行得
2、保存,输入一个新名XueSheng
3、然后,XueSheng相当于一个新表一样,可以查询,可以进行和其他的表一样的操作。
三、函数
1、LEN (判断字符串的长度)
格式:
LEN(string expression)
2、LEFT 和 RIGHT (截取)
LEFT: 左字符串函数
格式:LEFT(列名,个数) from 表名
RIGHT: 右字符串函数
格式:RIGHT(列名,个数) from 表名
3、LOWER和UPPER
格式:
LOWER(character_expression) : 将所有字母转换为小写字母
UPPER : 将所有字母转换为大写字母
4、DATEDIFF
功能:求两个日期之间的差值
格式:DATEDIFF(datepart,startdape,enddate) --相当于enddate-startdape
例:检索学生年龄
SELECT DATEDIFF(YEAR,CSRQ,GETDATE())AS AGE,CSRQ FROM STUDENT
5、DAY、MONTH、YEAR
格式:DAY(data)
去指定日期的日
格式:MONTH(data)
去指定日期的月
格式:YEAR(data)
去指定日期的年
例:检索学生年龄
SELECT YEAR(GETDATE()-YEAR(CSRQ))AS AGE,CSRQ FROM STUDENT
6、数值函数
(1)、CEILING 天花板数 (返回大于或等于所给数字的最小整数)
FLOOR 地板数 (返回小于或等于所给数字的最大整数)
(2)、RAND
返回0到1之间的随机float数
(3)、CAST...AS函数 (类型转换) --也可以用CONVERT
格式:CAST(expression AS data_type)
例:BIRTHDAY=1997-8-28
CAST ( YEAR(BIRTHDAY) AS varchar(10) +'年'+MOUTH(BIRTHDAY) AS varchar(10) +'月'+DAY(BIRTHDAY) AS varchar(10) +'日')
执行完后日期变为:1997年8月28日
存储过程
操作:打开表所在的数据库——>打开可编程性(看到存储过程)——>在存储过程上右击新建——>从CREATE PROCEDURE开始写程序
1、创建
CREATE PROCEDURE 函数名
...... (相当于函数的形参)...... --格式: @变量名 变量类型
AS
BEGIN
.....函数体...
END
2、调用
存储过程名 '.... ','...插入内容...','......',...... --插入的内容与上边格式里的形参一一对应
3、存储过程的类型:
(1)、无参数
(2)、带参数
(3)、指定参数默认值
(4)、使用输出参数:
程序代码:
执行语句:
输出结果为:5
4、动态查询:
程序代码:做一个分页的程序
执行语句:
执行结果:
例:现有FRUIT、Login、OrderDetails三个表
要求写一个购物车的存储过程:输入用户名、密码、水果代号、水果数量
1、如果用户名或密码不正确,输出'用户名或密码错误'
2、如果水果数量不足,显示'水果库存不足'
3、如果账户余额不足,显示'余额不足'
4、如果以上问题都没有,就向OrderDetails表中添加数据,其中OrderCode设成 '用户名+当前时间
表如下
FRUIT表:
Login表:
'
OrderDetails表:
存储过程程序如下:
执行存储过程:
FRUIT表变为:
Login表变为:
OrderDetails表变为: