基本查询

SELECT * FROM <tablename>;

SELECT是SQL关键字,SQL关键字是不区分大小写的,但是表名是区分大小写的。SELECT关键字表示查询操作,而*表示查询所有字段。FROM是SQL关键字,表示从哪张表查询。tablename是表名。分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。另外MySQL要求每条SQL语句的结束都需要加上分号。

例如:

SELECT * FROM students;

sql server查询某一条数据 查询一条数据的sql语句_sql server查询某一条数据

 SELECT语句还可以单独使用,通常用来检查当前数据库连接是否有效。通常是使用SELECT 1;来进行判断。

去除重复结果集

它可以筛选出字段的所有可能的结果。例如:

sql server查询某一条数据 查询一条数据的sql语句_查询_02

结果表明,students表中的性别只有男和女两种。 

sql server查询某一条数据 查询一条数据的sql语句_sql_03

结果表明,students表中的的class_id只有1,2,3这三种结果。

 计算:

例如,我想计算数学和英文的总成绩,那么使用如下语句即可。

SELECT name,math,english,math+english FROM students;

sql server查询某一条数据 查询一条数据的sql语句_条件查询_04

 上面的查询结果在成绩都存在的情况下,都是正确的,但是当其中一项为NULL之后,计算的成绩之和也是NULL。这可能和我们的预期不太一致。我们希望成绩和是81.00. 好在SQL提供了IFNULL()来替换NULL为相应的值。例如:

SELECT name,math,english,IFNULL(math,0)+IFNULL(english,0) FROM students;

上述语句中,将math字段中的NULL值替换为0,同理,english字段的NULL值也被替换为0。 

sql server查询某一条数据 查询一条数据的sql语句_条件查询_05

起别名 

查询结果显示的字段名可能像上面那样,非常难看。不过SQL提供了起别名。起别名使用关键字as,不过as可以省略。下面这两条语句是等价的。

SELECT name as 姓名,math as 数学,english as 英语,math+IFNULL(english,0) as 总分 FROM students;

SELECT name 姓名,math 数学,english 英语,math+IFNULL(english,0) 总分 FROM students;

sql server查询某一条数据 查询一条数据的sql语句_条件查询_06

经过起别名之后,看起来就舒服很多了。

条件查询

SELECT语句可以通过WHERE条件来设定查询条件。格式如下:

SELECT * FROM <tablename> WHERE <condition>;

WHERE是SQL的关键字,condition是限制条件。

例如:

SELECT * FROM students WHERE score >= 90;

sql server查询某一条数据 查询一条数据的sql语句_条件查询_07

其中条件表达式可以使用AND,OR,NOT关键字来进行条件之间的组合。AND,OR,NOT的意思和C语言中的&&,||,! 没有区别。下面来分别展示一下相关的查询实例。实际上在SQL中使用&&,||,!也是可以的,但是不建议这么做。而是建议使用AND,OR,NOT关键字。同时SQL支持比较操作,

>=(大于等于)

>(大于)

<=(小于等于)

<(小于)

=(等于),注意,这里的判断是否相等是一个等号,而不是C语言中的双等号。

!=(不等于),SQL还提供了<>作为不等于,不常用。

IN(),在括号里的选项都会匹配到。例如:SELECT * FROM students WHERE id IN(1,2);这将查询出id为1和2的所有数据。

如果某个字段为NULL,那么判断是NULL的写法为:SELECT * FROM students WHERE english IS NULL;判断不是NULL的语法是:SELECT * FROM students WHERE english IS NOT NULL;

SELECT * FROM students WHERE score >= 80 AND id = 1;

sql server查询某一条数据 查询一条数据的sql语句_sql server查询某一条数据_08

SELECT * FROM students WHERE score >= 90 OR score <= 60;

sql server查询某一条数据 查询一条数据的sql语句_条件查询_09

SELECT * FROM students WHERE NOT id = 3;

sql server查询某一条数据 查询一条数据的sql语句_sql_10

AND, NOT, OR之间存在优先级关系。NOT优先级最高,其次是AND,最后是OR。同1样,和C语言中建议的一样,我们在使用它们的时候,为了使程序方便阅读,建议加上括号。例如:

SELECT * FROM students WHERE (NOT class_id = 3) AND (score >= 80);

sql server查询某一条数据 查询一条数据的sql语句_条件查询_11

模糊查询

模糊查询使用关键字LIKE进行。单个匹配符是"_",多个匹配符是"%"。

首先,给数据库插入几条记录,如下:

INSERT INTO students(class_id,name,gender,math,english) VALUES(2,"马化腾",'M',97.23,91.24),(3,"马云",'M',64.74,98.75),(5,"马德",'M',54.74,78.41);

INSERT INTO students(class_id,name,gender,math,english) VALUES(3,"两马化
云腾",'X',NULL,NULL);

 插入之后,数据库如下所示:

sql server查询某一条数据 查询一条数据的sql语句_查询_12

SELECT * FROM students WHERE name LIKE "%马%";

sql server查询某一条数据 查询一条数据的sql语句_查询_13

SELECT * FROM students WHERE name LIKE "马%";

sql server查询某一条数据 查询一条数据的sql语句_条件查询_14

SELECT * FROM students WHERE name LIKE "马_";

sql server查询某一条数据 查询一条数据的sql语句_条件查询_15