sqlserver代码排序快捷键
有两类DBMS(数据库管理系统),一类是共享文件系统(Microsoft Access);另一类是客户机-服务器DBMS系统(mysql\oracle等)
SQL Server使用笔记(一) 第三章:使用mysql 一、连接到数据库 有两类DBMS(数据库管理系统),一类是共享文件系统(Microsoft Access);另一类是客户机-服务器DBMS系统(mysql\oracle等),如果是客户机-服务器DBMS则需要在执行命令之前登录到服务器DBMS,我只简单实验一下,所以使用SQL Server默认的localhost 二、选择数据库 在刚使用SQL Server时,没有任何打开的数据库可供使用,所以需要自己用USE关键字选择一个数据库。必须先打开数据库才能读取其中数据。还有在执行时选择数据库的栏里选择对应数据库。 Eg: USE master 三、了解数据库和表 Mysql必知必会书中推荐用show语句,比如show databases; show tables; show columns from customers; 使用过程中的错误和补充部分: 错误 使用show关键字的时候总会发生“找不到存储过程show”的报错, 理由:这是一个特定于MySQL的命令。 它不适用于SQL Server。 在SQL Server中可以使用
–在SQL Server系统所有的数据库中找,但是排除内置数据库 来代替show databases 对象名错误 – Insert rows into table ‘Customers’ – 会出现对象名错误的问题,两种原因,一种是查询执行的时候没有切换到表所在的数据库 – 第二种是做了多种操作,缓存出现问题,解决:清除缓存,快捷键ctrl+shift+r 补充部分: SQL Server里面经常出现的dbo的意思:dbo是是一个构架(schema,又称模式) ,是数据库下的一个逻辑命名空间,可以存放表、视图等数据对象,它是数据库对象的容器。 (数据库?架构?表) 具体见: 简单来说,在SQL2000中,那时没有架构的概念只有用户的概念,dbo作为默认用户来使用 在SQL2005开始出现架构的概念,为了与SQL2000代码兼容,dbo开始作为默认架构来使用。 即:在2000中DataBaseName.dbo.TableName解释为:数据库名.用户名.表名, 在2005中DataBaseName.dbo.TableName解释为:数据库名.架构名.表名, 在 SQL Server 2000 中,数据库用户和架构是隐式连接在一起的。每个数据库用户都是与该用户同名的架构的所有者。 在 SQL Server 2005 中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构的所有权。 第四章 检索数据 一、各关键字和符号 想要使用select语句查询,必须至少给出两条信息:想要查找什么信息以及从哪里找这个信息
如果没有明确排序查询结果,则返回数据的顺序可能随机 4.1.1 对于分号:SQL Server单条select查询语句可以不加分号,但是多条必须要加分号。Mysql同理(最好随时一条查询语句完成加上分号) 4.1.2 对于关键字大小写:如select,SQL Server也不区分大小写,但是习惯上关键字大写,列和表名小写便于调试和阅读 4.1.3 对于空格:SQL调试时所有空格都被忽略,所以一个SQL语句可以写成一行也可以写成多行,但是为了方便调试,一般写成多行。 4.1.4 对于逗号:当用select检索多列的时候,列名之间一定要加逗号,最后一个列名后不加 4.1.5 对于通配符*:当检索表中所有列时,可以在列名的位置用 * 替代,代表查询所有列。非必要时不用,因为检索不必要的列会降低检索和应用程序的性能;同时它也有一大好处,可以检索出名字未知的列 4.1.6 对于DISTINCT:DISTINCT关键字指示只返回不同的值,比如SELECT DISTINCT student_number FROM xuanke_info,即在选课信息表里找学生学号,可能一个学生有几条选课信息,但只想返回不重复的学号时,用DISTINCT。同时需要注意,不能部分使用DISTINCT,即DISTINCT应用于它之后所有的列。如果SELECT DISTINCT后面跟了两列,那返回的就是两列的组合中不重复的部分 4.1.7 对于LIMIT关键字:LIMIT一般后面接一个数字或两个数字。当接一个数字时代表从第一行开始返回的行数;当接两个数字时,中间用逗号隔开,第一个数字表示从第几行开始,第二个数字表示返回的行数。但是要注意LIMIT是从第0行开始查询的,比如LIMIT 3,4 就是代表返回从实际的第4行开始,返回行数4行。从SQL5开始也有另一种替代的语法,比如LIMIT 3,4写作LIMIT 4 OFFSET 3。 (对于返回行数不足的情况,LIMIT只能返回它能返回的行) 4.1.8 对于不等号:sql中有两种方式表示不等于,一种是"" (不含引号),另一种是"!=" (不含引号)mssql 按关键字排序,用法是一样的。(注意sql中的等号不是”==“是”=“) 4.1.9 对于group by关键字:聚合函数,要注意聚合函数的结果作为筛选条件时,接having而不是where eg:牛客练习题 %2Fta%2Fsql-quick-study&qru=%2Fta%2Fsql-quick-study%2Fquestion-ranking
4.1.10 对于order by关键字:默认升序,如果要使用降序,利用关键字DESC,eg:
4.1.11 对于.: 表示完全限定的列名或表名。 4.1.12 对于SQL的执行顺序 (图片来源牛客网讨论区) SQL执行顺序可以分成四类(按自己的理解,说法不标准): 1)找表和在对应的表上操作(from,join,on,where) 2) 聚合函数(group by) 3)平均、求和、最大、最小函数 (avg,sum,max,min) 4)聚合函数的限制条件(having) 5) 有关表的返回的关键字(select,distinct,order by, limit) *关于2)3)4)的顺序,可以理解为先按照不同的数据项聚合,比如group by order ,那么就按照不同的order聚合不同的临时表,在临时表上做avg、sum等操作,再按照having限制条件挑选符合的项,最后步骤5)返回 **这种解释仅仅是自己的理解,如有错误,欢迎指正,勿喷 4.1.13 @:SQL Server中所有局部变量名都以@起头 二、关于SQL连接的解释 SQL JOIN 子句用于基于之间的共同字段,把来自两个或多个表的行结合起来。 具体示例看: 简单总结: INNER JOIN:如果表中有至少一个匹配,则返回行(即左右表有匹配时才会返回匹配的行) LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行(当左表在右表中没有匹配的时候,匹配上的项正常返回,没有匹配上的部分返回NULL,之所以叫左连接,就是以左表为先) RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行(和左连接相同的理解,只不过左右表换一下) FULL JOIN:只要其中一个表中存在匹配,则返回行 (A inner join B 取交集。 A left join B 取 A 全部,B 没有对应的值为 null。 A right join B 取 B 全部 A 没有对应的值为 null。 A full outer join B 取并集,彼此没有对应的值为 null。 对应条件在 on 后面填写。) left join例子:(来自[]) (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |