常用的sql语句

2022-06-21

第一篇:常用的sql语句

SQL语句常用函数

、字符转换函数

1、ASCII()

返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。

2、CHAR()

将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。

3、LOWER()和UPPER()

LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。

4、STR()

把数值型数据转换为字符型数据。

STR ([,length[, ]])

length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。

当length 或者decimal 为负值时,返回NULL;

当length 小于小数点左边(包括符号位)的位数时,返回length 个*; 先服从length ,再取decimal ;

当返回的字符串位数小于length ,左边补足空格。

二、去空格函数

1、LTRIM() 把字符串头部的空格去掉。

2、RTRIM() 把字符串尾部的空格去掉。

三、取子串函数

1、left()

LEFT (, )

返回character_expression 左起 integer_expression 个字符。

2、RIGHT()

RIGHT (, )

返回character_expression 右起 integer_expression 个字符。

3、SUBSTRING()

SUBSTRING (, , length)

返回从字符串左边第starting_ position 个字符起length个字符的部分。

四、字符串比较函数

1、CHARINDEX()

返回字符串中某个指定的子串出现的开始位置。

CHARINDEX (<’substring_expression’>, )

其中substring _expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。

此函数不能用于TEXT 和IMAGE 数据类型。

2、PATINDEX()

返回字符串中某个指定的子串出现的开始位置。

PATINDEX (<’%substring _expression%’>, )其中子串表达式前后必须有百分号“%”否则返回值为0。

与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。

五、字符串操作函数

1、QUOTENAME()

返回被特定字符括起来的字符串。

QUOTENAME (<’character_expression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。

2、REPLICATE()

返回一个重复character_expression 指定次数的字符串。

REPLICATE (character_expression integer_expression) 如果

integer_expression 值为负值,则返回NULL 。

3、REVERSE()

将指定的字符串的字符排列顺序颠倒。

REVERSE () 其中character_expression 可以是字符串、常数或一个列的值。

4、REPLACE()

返回被替换了指定子串的字符串。

REPLACE (, , ) 用string_expression3 替换在string_expression1 中的子串string_expression2。

5、SPACE()

返回一个有指定长度的空白字符串。

SPACE () 如果integer_expression 值为负值,则返回NULL 。

6、STUFF()

用另一子串替换字符串指定位置、长度的子串。

STUFF (, , ,)

如果起始位置为负或长度值为负,或者起始位置大于

character_expression1 的长度,则返回NULL 值。

如果length 长度大于character_expression1 中 start_ position 以右的长度,则character_expression1 只保留首字符。

六、数据类型转换函数

1、CAST()

CAST ( AS [ length ])

2、CONVERT()

CONVERT ([ length ], [, style])

1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。

2)length用于指定数据的长度,缺省值为30。

3)把CHAR或VARCHAR类型转换为诸如INT或SAMLLINT这样的INTEGER类型、结果必须是带正号或负号的数值。

4)TEXT类型到CHAR或VARCHAR类型转换最多为8000个字符,即CHAR或VARCHAR数据类型是最大长度。

5)IMAGE类型存储的数据转换到BINARY或VARBINARY类型,最多为8000个字符。

6)把整数值转换为MONEY或SMALLMONEY类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。

7)BIT类型的转换把非零值转换为1,并仍以BIT类型存储。

8)试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。

9)用CONVERT()函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。

七、日期函数

1、day(date_expression)

返回date_expression中的日期值

2、month(date_expression)

返回date_expression中的月份值

3、year(date_expression)

返回date_expression中的年份值

4、DATEADD()

DATEADD (, , )

返回指定日期date 加上指定的额外日期间隔number 产生的新日期。

5、DATEDIFF()

DATEDIFF (, , )

返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。

6、DATENAME()

DATENAME (, )

以字符串的形式返回日期的指定部分此部分。由datepart 来指定。

7、DATEPART()

DATEPART (, )

以整数值的形式返回日期的指定部分。此部分由datepart 来指定。 DATEPART (dd, date) 等同于DAY (date)

DATEPART (mm, date) 等同于MONTH (date)

DATEPART (yy, date) 等同于YEAR (date)

8、GETDATE()

以DATETIME 的缺省格式返回系统当前的日期和时间。

八、统计函数

AVG ( ) -返回的平均价值

count( ) -返回的行数

first( ) -返回第一个值

last( ) -返回最后一个值

max( ) -返回的最大价值

min( ) -返回最小的价值

total( ) -返回的总和

九、数学函数

abs(numeric_expr)求绝对值

ceiling(numeric_expr)取大于等于指定值的最小整数 exp(float_expr)取指数

floor(numeric_expr)小于等于指定值得最大整数 pi()3.1415926.........

power(numeric_expr,power)返回power次方

rand([int_expr])随机数产生器

round(numeric_expr,int_expr)安int_expr规定的精度四舍五入 sign(int_expr)根据正数,0,负数,,返回+1,0,-1 sqrt(float_expr)平方根

十、系统函数

suser_name()用户登录名

user_name()用户在数据库中的名字 user用户在数据库中的名字 show_role()对当前用户起作用的规则

db_name()数据库名object_name(obj_id) 数据库对象名

col_name(obj_id,col_id) 列名

col_length(objname,colname) 列长度

valid_name(char_expr)是否是有效标识符

第二篇:Sql语句查询

sql语句多表连接查询

在程序开发过程中,不仅可以对单一数据表进行查询,还可以进行多表查询,用户通过多表查询从多个表中提取出需要的数据。

多表查询可以分为内连接查询、外连接查询以及联合查询。

1.内连接查询

连接查询是指通过各个表之间共同列的关联性查询数据。连接查询分为内连接查询和外连接查询。内连接是将两个相互交叉的数据集合中重叠部分的数据行连接起来,返回表示两个数据集合之间匹配连接关系的数据行。

可以在FORM子句中使用INNER JOIN„ON„建立内连接,也可以在WHERE子句中指定连接条件建立内连接,例如:

select a.UserName,b.BookName,b.Datetm from UserInfo as a inner join SellSheet as b on a.UserID= b.UserID

也可以用下面的语句实现。

select a.UserName,b.BookName,b.Datetm from UserInfo as a,SellSheet as b where a.UserID=b.UserID

2.外连接查询

外连接是对内连接的扩充,除了将两个数据集合中重叠部分以内的数据行连接起来之外,还可以根据要求返回左侧或右侧数据集合中非匹配的数据,即左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。

l左外连接LEFT OUTER JOIN

左外连接LEFT OUTER JOIN逻辑运算符除了返回两个数据表中满足连接条件的行,它还返回任何在后一个数据表中没有匹配行的前一个数据表中的行。非匹配行的部分字段列作为空值返回。

l右外连接RIGHT OUTER JOIN

右外连接RIGHT OUTER JOIN是左外连接的反向连接。它除了返回两个数据表中满足连接条件的行,还返回任何在前一个数据表中没有匹配行的后一个数据表中的行。非匹配行的部分字段列作为空值返回。

3.使用UNION进行联合查询

使用UNION运算符可以进行联合查询。UNION运算符连接多个SELECT语句,将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中所有查询的全部行。 使用UNION运算符遵循的规则如下:

(1)在使用UNION运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚集函数等)。

(2)在使用UNION组合的结果集中的相应列必须具有相同数据类型,或者两种数据类型之间必须存在可能的隐性数据转换,或者提供了显式转换。例如,在datetime数据类型的列和binary数据类型的列之间不能使用UNION运算符,除非提供了显式转换,而在money数据类型的列和int数据类型的列之间可以使用UNION运算符,因为它们可以进行隐性转换。

(3)结果集中列的名字或者别名是由第一个SELECT语句的选择列表决定的。

注意:对数据表进行联合查询时,结果集中行的最大数量是各表行数之“和”,而对数据表进行连接查询时,结果集中行的最大数量是各表行数之“积”。

第三篇:SQL语句大全

SQL练习

一、 设有如下的关系模式, 试用SQL语句完成以下操作:

学生(学号,姓名,性别,年龄,所在系)

课程(课程号,课程名,学分,学期,学时)

选课(学号,课程号,成绩)

1. 求选修了课程号为“C2”课的学生学号

2. 求选修了课程号为“C2”课的学生学号和姓名

3. 求没有选修课程号为“C2”课的学生学号

4. 求选修了课程号为“C2”,又选修了课程号为“C3”课的学生学号

5.求选修了课程号为“C2”或“C3”课的学生学号

6.求选修了全部课程的学生学号

7.求至少选修了学号为“98002”的学生所学过的所有课程的学生的学号和姓名。

8.查询学生选课表中的全部数据

9.查询计算机系学生的姓名、年龄

10.查询成绩在70—80分之间的学生的学号、课程号和成绩

11.查询计算机系年龄在18—20之间且性别为“男”的学生的姓名和年龄

12.查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。

13.查询哪些课程没有人选修,要求列出课程号和课程名。

14.查询数学系成绩在80分以上的学生的学号,姓名

15.查询课程号为“C02”的课程的最高分数。

16.查询计算机系学生的最大年龄和最小年龄。

17.统计每个系的学生人数。

18.统计每门课程的选课人数和考试最高分。

19.统计每个学生的选课门数和考试总成绩,并按选课门数的升序显示结果。

20.查询总成绩超过200分的学生,要求列出学号、总成绩。

21.用子查询实现如下查询:

(1) 查询选修了课程号“C01”的学生的姓名和所在系。

(2) 查询数学系成绩在80分以上的学生的学号和姓名。

(3) 查询计算机系考试成绩最高的学生的姓名。

22.删除选课成绩小于60分的学生的选课记录。

23.将所有选修了课程“C01”的学生的成绩加10分。

24.将计算机系所有选修了课程“计算机文化基础”课程的学生的成绩加10分。

25.创建查询学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。

26.创建查询每个学生的平均成绩的视图,要求列出学生学号和平均成绩。

27.创建查询每个学生的选课学分的视图,要求列出学生学号及总学分。

第四篇:用sql语句完成下面题目:

1. 创建数据库db_Student,在db_Student中创建四张表:

学生表tb_Student,字段:SID(编号),SName(姓名),Sage(年龄),SSex(性别)

教师表tb_Teacher,字段:TID(编号),TName(姓名)

课程表tb_Course,字段:CID(编号),CName(名称),TID(教师编号)

成绩表tb_Score,字段:SID(编号),CID(课程编号),Score(成绩)

要求:分析添加约束,如:主键约束,外键约束等(15分)

2. 给表添加一些数据。(10分)

3. 完成下列查询:(30分)

① 查询姓李的老师有多少位。

② 查询c#课程的平均分。

③ 查询sql最高分的学生编号,学生姓名及分数。

④ 查询sql课程超平均分的学生姓名及分数。

⑤ 查询没有考sql的学生编号及姓名。

⑥ 查询没有学王老师课程的学生编号及姓名。

⑦ 查询课程表的第5到第10条记录,条件为编号不连续。写两种方法。

⑧ 查询每个学生的编号,姓名,课程名称,成绩,老师信息。

⑨ 查询c#考试成绩前三名的学生,包含并列的行。(可能查询的结果超过三行) ⑩ 查询c#课程比sql课程的考试分数高的学生编号及姓名。

4. 写存储过程完成下列问题,并写出存储过程执行语句:(15分)

① 根据学生编号查询学生的各科成绩及所教课程的老师

② 根据教师编号,查询所教课程(教师编号,姓名,课程编号,课程名)。

③ 写一种分页的存储过程。

5. 将第3 题的查询⑧⑨两题写成视图,然后执行查询视图。(10分)

6. 创建存储过程,在存储过程里创建事务,执行删除课程表的行时,同时删除成绩表的相

应行。(10分)

7. 创建触发器,实现删除教师表的行时,同时删除课程表的相应行。(首先删除相应表的约

束)(10分)

第五篇:数据库SQL语句十题

作业十题

1. 查询所有学生的基本信息,并按学号降序排列

SELECT * FROM STUDENT

ORDER BY sno DESC;

2. 查询系别代码为“02”的女同学信息

SELECT * FROM STUDENT

WHERE ssex=’女’ and sdept=‘02’;

3. 查询学生的总人数

SELECT COUNT(*) AS 学生总人数

FROM STUDENT;

4. 所有选修课学生的姓名,课程名及成绩

SELECT sname,cname,grade

FROM STUDENT,COURSE,SC

WHERE STUDENT.sno=SC.sno and COURSE.cno=SC.cno;

5. 不及格学生姓名(合并重复项)

SELECT distinct sname

FROM SC,STUDENT

WHERE grade<=60 and STUDENT.sno=SC.sno;

6. 查询学号为“011110”的学生的哪些课程的成绩比他数据库的成绩要高 SELECT cno

FROM COURSE

WHERE sno=’011110’ and grade>(SELECT grade FROM COURSE,SC

WHERE cname=’数据库’ and sno=‘011110’ and

COURSE.cno=SC.cno);

7. 查询选修课在3门以上(包括3门)的学生学号及选课门数 SELECT sno,COUNT(*) AS 选修门数

FROM SC

GROUP BY sno HAVING COUNT(*)>=3;

8. 查询学号为“011110”的学生的平均成绩,并以平均成绩命名 SELECT AVG(grade) AS average grade

FROM SC

WHERE sno=’011110’;

9. 查询计算机系或英语系的所有学生的个人信息

SELECT*FROM STUDENT

WHERE sdeptIN(SELECT sdept FROM DEPT

WHERE sdname=’计算机系’OR sdname=’英语系’);

10. 查询与“罗宇波”同一个系的学生情况

SELECT * FROM STUDENT

WHERE sdept=(SELECT sdept FROM STUDENT

WHERE sname=’罗宇波’);

上一篇:6月电商活动主题下一篇:物流的基本概念

本站热搜