您的位置:首页 > 汽车 > 时评 > 应用公园app平台官网_个人主页是指什么_友情链接网址_百度小说风云榜

应用公园app平台官网_个人主页是指什么_友情链接网址_百度小说风云榜

2025/1/8 12:13:37 来源:https://blog.csdn.net/kobewncs/article/details/144828273  浏览:    关键词:应用公园app平台官网_个人主页是指什么_友情链接网址_百度小说风云榜
应用公园app平台官网_个人主页是指什么_友情链接网址_百度小说风云榜

1. 
 @@ERROR:返回执行的上一个 Transact-SQLTransact-SQL 语句的错误号。 
 
  @@IDENTITY:返回自增id。 
 
  @@ROWCOUNT:返回受上一个SQL语句影响的行数。 
 
  @@MAX_CONNECTIONS:返回最大用户连接数。

2.创建视图 语句如下 create view 视图名 as  select * from 表名 where 条件   

3.防止SQL注入,需要注意以下几个要点:  

    永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。    

    永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。    

    永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。    

    不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。    

    应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装    

    sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。   

3.1SQL注入的关键是单引号的闭合

4.给数据库赋予登录权限的语句是grant usage on ... to

5.    Union对结果进行并集,并会过滤重复的;
       Union all对结果进行并集,但不会过滤重复的  
    
6.    coalesce函数,返回第一个非空值,如果都是空,返回空值

7.
having是在分组后过滤,where在分组前过滤,不冲突,可以同时使用;
having是用来过滤的,group by是限定分组;
select语句中没有聚合函数的使用时也可以用having

8.
普通插入(全字段):INSERT INTO table_name VALUES (value1, value2, ...) 

 
  普通插入(限定字段):INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...) 

 
  多条一次性插入:INSERT INTO table_name (column1, column2, ...) VALUES (value1_1, value1_2, ...), (value2_1, value2_2, ...), ... 

 
  从另一个表导入:INSERT INTO table_name SELECT * FROM table_name2 [WHERE key=value]
  
  
 9. 
  STUFF(原字符, 开始位置, 删除长度, 插入字符) 
  从指定的起点处开始删除指定长度的字符,并在此处插入另一组字符
  
  10.
    WHERE不能接聚合函数(MAX、MIN、COUNT、SUM、AVG等);HAVING后可以接聚合函数; 
 
  WHERE用在GROUP BY前,先过滤后分组; 
 
  HAVING用在GROUP BY之后,先分组后过滤,且使用HAVING一定要用到GRUOP BY,但用到GROUP BY 不一定有HAVING。 

11.
case具有两种格式。简单case函数和case搜索函数。

--简单case函数
case sex
  when '1' then '男'
  when '2' then '女’
  else '其他' end
--case搜索函数
case when sex = '1' then '男'
     when sex = '2' then '女'
     else '其他' end  

这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。

还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。

--比如说,下面这段sql,你永远无法得到“第二类”这个结果
case when col_1 in ('a','b') then '第一类'
     when col_1 in ('a') then '第二类'
     else '其他' end  
     
     
12.存储过程
     
      存储过程(stored procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在服务器端的数据库中,利用存储过程可以加速SQL语句的执行。 
 
  它可以提高SQL的速度,存储过程是编译过的,如果某一个操作包含大量的SQL代码或分别被执行多次,那么使用存储过程比直接使用单条SQL语句执行速度快的多。
 
 
  不带参数的存储过程: 
 
 
create procedure proc_sql1  
as  
begin  
    declare @i int  
    set @i=0  
    while @i<26  
      begin  
         print char(ascii('a') + @i) + '的ASCII码是: ' + cast(ascii('a') + @i as varchar)   
         set @i = @i + 1  
      end  
end
 带参数的存储过程: 
 
 
create proc proc_sql6  
@num1 int,  
@num2 int,  
@num3 int  
as  
begin  
   declare @max int  
   if @num1>@num2    
      set @max = @num1  
   else set @max = @num2  
     
   if @num3 > @max  
      set @max = @num3  
        
   print '3个数中最大的数字是:' + cast(@max as varchar)  
end

13.alter 用法
1.添加列
alter table 表名 add column 列名 类型 【first|after 字段名】; 
2.修改列的类型或约束
alter table 表名 modify column 列名 新类型 【新约束】; 
3.修改列名
alter table 表名 change column 旧列名 新列名 类型; 
4.删除列
alter table 表名 drop column 列名; 
5.修改表名
alter table 表名 rename 【to】 新表名; 

14.
在MySQL中,要计算某个值占总数的百分比,可以使用CONCAT函数结合FORMAT函数来格式化输出百分比。以下是一个例子,假设我们有一个表sales,其中有两列amount和total_sales,我们想计算每笔销售额占总销售额的百分比。

SELECT 
    amount,
    total_sales,
    CONCAT(FORMAT((amount / total_sales) * 100, 2), '%') AS percentage
FROM 
    sales;
这个查询会返回每笔销售额、总销售额,以及一个格式化的百分比列,显示每笔销售额占总销售额的百分比,保留两位小数。
15. 
where字句中可以使用:

(1)比较运算符:> >= < <= <> !=
(2)between 80 and 100——值在80到100之间
(3)in(80,90,100)——值是80或90或100
(4)like 'e%' 通配符可以是%或_, %表示任意多字符 _表示一个字符
(5)逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not

16. 聚合函数结果作为筛选条件时,不能用where,而是用having语法
在SQL中,WHERE子句和HAVING子句虽然都用于过滤数据,但它们的应用时机和范围是不同的。这就是为什么在聚合筛选(即对聚合函数的结果进行筛选)时,只能使用HAVING子句而不能使用WHERE子句的原因。

①WHERE子句的作用:WHERE子句在数据分组(GROUP BY)之前应用。
它用于过滤原始数据集中的行,基于行级条件。
WHERE子句不能引用聚合函数(如SUM(), COUNT(), AVG()等)的结果,因为它在聚合计算之前执行。
②HAVING子句的作用:HAVING子句在数据分组(GROUP BY)和聚合计算之后应用。
它用于过滤分组后的结果集,基于组级条件。

由于WHERE子句在聚合之前应用,并且不能引用聚合函数的结果,因此它无法用于对聚合结果进行筛选。相反,HAVING子句在聚合之后应用,并且可以引用聚合函数的结果,因此它适用于对聚合结果进行筛选。

17.
题意明确:
分别查看学校为山东大学或者性别为男性的用户的device_id、gender、age和gpa数据,结果不去重

问题分解:
限定条件:学校为山东大学或者性别为男性的用户:university='山东大学', gender='male';
分别查看&结果不去重:所以直接使用两个条件的or是不行的,直接用union也不行,要用union all,分别去查满足条件1的和满足条件2的,然后合在一起不去重

细节问题:
不去重:union all
完整代码:


18.

知识
CASE函数
是一种多分支的函数,可以根据条件列表的值返回多个可能的结果表达式中的一个。
可用在任何允许使用表达式的地方,但不能单独作为一个语句执行。
分为:
简单CASE函数
搜索CASE函数

简单 CASE函数
CASE 测试表达式
WHEN 简单表达式1 THEN 结果表达式1
WHEN 简单表达式2 THEN 结果表达式2 …
WHEN 简单表达式n THEN 结果表达式n
[ ELSE 结果表达式n+1 ]
END

计算测试表达式,按从上到下的书写顺序将测试表达式的值与每个WHEN子句的简单表达式进行比较。
如果某个简单表达式的值与测试表达式的值相等,则返回第一个与之匹配的WHEN子句所对应的结果表达式的值。
如果所有简单表达式的值与测试表达式的值都不相等,
若指定了ELSE子句,则返回ELSE子句中指定的结果表达式的值;
若没有指定ELSE子句,则返回NULL。

例48. 查询班级表中的学生的班号、班名、系号和班主任号,并对系号作如下处理:
当系号为1时,显示 “计算机系”;
当系号为2时,显示 “软件工程系”;
当系号为3时,显示 “物联网系”。

SELECT 班号 ,班名,
CASE 系号
WHEN 1 THEN '软件工程系'
WHEN 2 THEN '计算机系'
WHEN 3 THEN '物联网系'
END AS 系号,班主任号
FROM 班级表


搜索CASE函数

CASE
WHEN 布尔表达式1 THEN 结果表达式1
WHEN 布尔表达式2 THEN 结果表达式2 …
WHEN 布尔表达式n THEN 结果表达式n
[ ELSE 结果表达式n+1 ]
END


按从上到下的书写顺序计算每个WHEN子句的布尔表达式。
返回第一个取值为TRUE的布尔表达式所对应的结果表达式的值。
如果没有取值为TRUE的布尔表达式,
则当指定了ELSE子句时,返回ELSE子句中指定的结果;
如果没有指定ELSE子句,则返回NULL。

例48用搜索CASE来做:


SELECT 班号 ,班名,
CASE
WHEN 系号=1 THEN '软件工程系'
WHEN 系号=2 THEN '计算机系'
WHEN 系号=3 THEN '物联网系'
END AS 系号,班主任号
FROM 班级表


例49.查询“M01F011”号课程的考试情况,列出学号、课程号和成绩,同时将百分制成绩显示为等级。

SELECT 学号,课程号,
CASE
WHEN 成绩 >= 90 THEN '优'
WHEN 成绩 BETWEEN 80 AND 89 THEN '良'
WHEN 成绩 BETWEEN 70 AND 79 THEN '中'
WHEN 成绩 BETWEEN 60 AND 69 THEN '及格'
WHEN 成绩 <60 THEN '不及格'
END 成绩
FROM 成绩表
WHERE 课程号 = 'M01F011'


19.msql常见的一些执行顺序: 1 from 2 where 3 group by 4 having 5 select 6 order by 7 limit   

20.
INSERT INTO 语句用于向表格中插入新的行。 
 
 
INSERT INTO table_name VALUES (值1, 值2,....)
指定所要插入数据的列:
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
 SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。
 
把所有的列插入新表 
SELECT *
INTO new_table_name [IN externaldatabase] 
FROM old_tablename
 
只把希望的列插入新表 
SELECT column_name(s)
INTO new_table_name [IN externaldatabase] 
FROM old_tablename


21.
5.
表结构如下:

CREATE TABLE `score` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `sno` int(11) NOT NULL,
   `cno` tinyint(4) NOT NULL,
   `score` tinyint(4) DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ;
以下查询语句结果一定相等的是()
A.SELECT sum(score) / count(*) FROM score WHERE cno = 2;

B.SELECT sum(score) / count(id) FROM score WHERE cno = 2;

C.SELECT sum(score) / count(sno) FROM score WHERE cno = 2;

D.SELECT sum(score) / count(score) FROM score WHERE cno = 2;

E.SELECT sum(score) / count(1) FROM score WHERE cno = 2;

F.SELECT avg(score) FROM score WHERE cno = 2;

  所有的统计函数都会忽略空值(null)。 
 
  A :统计所有学生的平均分,就算成绩为空的学生,最后计算count(*)时也作为分母基数,计算得到所有学生的平均分。 
 
  B :与A一样,因为id主键非空,count(id)所得分母基数是所有学生。 
 
  C : 与B一样,非空属性sno。 
 
  D :由于score字段的值可能是空,空值在统计时忽略,所以count(score)和sum(score)统计的只是score不为空的学生,计算得到的平均分也只是有成绩的学生的平均分,无法计算所有学生的平均分。 
 
  E: count(1)与count(*)一样。 
 
  F:avg(score)会忽略空值,故计算结果为有成绩的学生的平均分。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com