mssql 运算符 SQL基础学习
此次我进行了SQL的系统性学习,因为之前有简单了解并学习过SQL的基础语言,所以本来想要跳过基础学习部分,直接进行进阶的练习,但为了夯实基础,为进阶练习铺好路,也为了养成一个良好的学习习惯,我还是用了两周左右的时间在w3school和sqlzoo两个网站上对SQL的基础进行了学习与练习,之后也进行了进阶的学习。 上图为w3school网站。 上图为sqlzoo网站。 一、为什么要学习SQL SQL 是使我们有能力访问数据库的一种结构化查询语言。上周我们进行了Excel的基础学习,了解了Excel的实用性与便捷性,在一般情况下Excel是可以满足我们的工作需求的,但Excel有一个局限性,就是无法处理体量过大的数据,例如面对百万级的数据,使用Excel进行简单的加减运算是没有问题的,但如果想要进行一些复杂运算的话,就有点吃力了。而且,一个公司内部可能有成千上万个Excel表格,很难对这些分散的表格做统一化处理。这时就需要使用SQL语言对MYSQL数据库进行处理了。 二、什么是MYSQL数据库 数据库就是储存数据的一个资料库,是一堆相互关联的数据,和Excel相同,数据库中每个表都有一个自己的名称标识,每个表中也都包含带有列名的列,还有记录数据的行,如果想要关联两个不同的表,只需要关联两张表的ID就可以了。Mysql(数据库)是开源的,所以能够成为各大公司使用的主流,Sql是操作数据库里面数据的工具,例如有一碗米饭(碗就是mysql,里面的米就是数据),想要吃碗里的米饭,用筷子(sql)操作碗里(mysql)的米饭(数据)。 三、SQL能做什么四、SQL的基础学习 1、select语句 SELECT 语句用于从表中选取数据。 结果被存储在一个结果表中(称为结果集)。 语法: SELECT 列名称 FROM 表名称 或者: SELECT * FROM 表名称 2、distinct语句 在表中,可能会包含重复值,如果我们想要提取出不重复的值,可以使用distinct语句,关键词 distinct 用于返回唯一不同的值。 语法: SELECT DISTINCT 列名称 FROM 表名称 3、where语句 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。 语法: SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 4、SQL AND & OR 运算符 AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。 AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。 如果第一个条件和第二个条件中只要有一个成立mssql 运算符,则 OR 运算符显示一条记录。 5、ORDER BY语句 ORDER BY 语句用于对结果集进行排序。 ORDER BY 语句默认按照升序对记录进行排序。 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字 语法: SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 ORDER BY 列 DESC/ASC 6、SQL INSERT INTO 语句 INSERT INTO 语句用于向表格中插入新的行。 语法: INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 7、SQL UPDATE 语句 Update 语句用于修改表中的数据。 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 8、SQL DELETE 语句 DELETE 语句用于删除表中的行。 语法: DELETE FROM 表名称 WHERE 列名称 = 值 9、SQL GROUP BY语句 GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。 语法: SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name 10、HAVING 函数 WHERE 关键字无法与合计函数一起使用,如果我们需要对筛选条件使用合计函数的话,就可以使用HAVING函数。 语法: SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value 11、JOIN函数 SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。 数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。 语法: SELECT column_name1,column_name2 FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name1=table_name2.column_name1 ORDER BY column_name2 五、sqlzoo练习 在学习过上述单元的基础语句与函数之后,可以在sqlzoo网站进行相关的练习,练习中遇到的问题或者是疑难点可以做一下笔记,方便后续复习。 1、Replace("字符串","要被替代的字符串","替代后的字符串"),结合下面例子进行学习 "Monaco-Ville"是合併國家名字 "Monaco" 和延伸詞"-Ville". 顯示國家名字,及其延伸詞,如首都是國家名字的延伸。 SELECT name, REPLACE(capital, name, ' ') //将capital字符串中name字符串替换成空白 FROM world WHERE capital LIKE CONCAT(name,'%') AND REPLACE(capital, name, '') ' '//将筛选出的值中空值剔除,是不等于的意思 2、使用or语句添加筛选条件时,要将条件格式写全,例如 Where name like “%a” or “%l” 这是错误答案! Where name like “%a” or name like “%l” 这是正确答案!
如果需要将数值四舍五入到接近100或者1000位时,小数位数要选取-2和-3 3、case:事件 语句相当于是“if”,使用语句如下: case 表达式 when 值1 then 结果1 when 值2 then 结果2 else 结果3 4、可以使用()将条件整合在一起,例如: 顯示1980年物理學(physics)獲獎者,及1984年化學獎(chemistry)獲得者。 select yr,subject,winner from nobel where (yr=1980 and subject='physics')or(yr=1984 and subject='chemistry') 5、你不能把一个单引号直接放在字符串中,但可以使用两个单引号当做一个单引号使用。 6、f1用升序, f2降序,sql该这样写:ORDER BY f1, f2 DESC 也可以这样写,更清楚:ORDER BY f1 ASC, f2 ESC 如果都用降序,必须用两个desc:ORDER BY f1 DESC, f2 DESC 7、按项目及得奖者姓名排列列出1984年得奖者及项目;但是把化学和物理列在最后。 SELECT winner, subject FROM nobel WHERE yr=1984 ORDER BY subject IN('Physics','Chemistry'),subject,winner IN('Physics','Chemistry'),相当于是被分成了一个组,列在了排序字段内 8、书写习惯很重要!一定要规范!看着舒服,也方便查询错误 9、我們可以在子查詢,參閱外部查詢的數值。我們為表格再命名,便可以分別內外兩個不同的表 格。 SELECT continent, name, area FROM world x WHERE area >= ALL (SELECT area FROM world y WHERE y.continent=x.continent AND area>0) 我们可以看到我们使用了为表格再命名,区分了world x和world y 10、需要复习的题目: ①列出洲份名稱,和每個洲份中國家名字按子母順序是排首位的國家名。(即每洲只有列一國 select continent,name from world x where name=all (select population from world y where x.continent=y.continent) ③有些國家的人口是同洲份的所有其他國的3倍或以上。列出 國家名字name 和 洲份 continent select name,continent from world a where population>=all (select 3*population from world b where a.continent=b.continent and a.nameb.name) 六、总结 1、SQL一定要多写多练,要形成手指记忆,把SQL书写变成是自己的一项技能,这样在工作中运用起来才不会觉得晦涩。 2、在练习SQL时,一定要弄清楚题目的逻辑以及意思,这样才方便书写,也方便在工作中的使用。 (编辑:海南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |