LIKE
我们希望从上面的 “Persons” 表中选取居住在以 “N” 开始的城市里的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE 'N%'
提示:"%" 可用于定义通配符
image.png
NOT
通过使用 NOT 关键字,我们可以从 “Persons” 表中选取居住在不包含 “lon” 的城市里的人: 我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City NOT LIKE '%lon%'
我们希望从上面的 “Persons” 表中选取名字的第一个字符之后是 “eorge” 的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE FirstName LIKE '_eorge'
我们希望从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:
我们可以使用下面的 SELECT 语句:
SELECT * FROM Persons WHERE City LIKE '[ALN]%'
居住的城市不以 “A” 或 “L” 或 “N” 开头的人
SELECT * FROM Persons WHERE City LIKE '[!ALN]%'
CASE
CASE语句不写ELSE子句时,执行结果是NULL。
简单CASE表达式:
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
搜索CASE表达式:
CASE
WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
UPDATE使用CASE
UPDATE products
SET prod_price = CASE
WHEN prod_price < 4 THEN prod_price + 0.51
WHEN prod_price > 11 THEN prod_price - 0.99
ELSE prod_price
END
CASE语句判断表达式
SELECT course_name
, CASE
WHEN course_id IN (
SELECT course_id
FROM opencourses
WHERE month = 200706
) THEN 'O'
ELSE 'X'
END AS '6月'
, CASE
WHEN course_id IN (
SELECT course_id
FROM opencourses
WHERE month = 200707
) THEN 'O'
ELSE 'X'
END AS '7月'
, CASE
WHEN course_id IN (
SELECT course_id
FROM opencourses
WHERE month = 200708
) THEN 'O'
ELSE 'X'
END AS '8月'
FROM coursemaster;
INNER JOIN
交集 内连接
SELECT * FROM table_a
INNER JOIN table_b ON table_a.id = table_b.id;
image.png
union all
并集 全外连接
SELECT * FROM table_a
INNER JOIN table_b ON table_a.id = table_b.id
UNION ALL
SELECT * FROM table_a
LEFT OUTER JOIN table_b ON table_a.id = table_b.id
WHERE table_b.id IS NULL
UNION ALL
SELECT * FROM table_a
RIGHT OUTER JOIN table_b ON table_a.id = table_b.id
WHERE table_a.id IS NULL
image.png
count(*) 和 count(1)和count(列名)区别
执行效果上:
count(*)包括了所有的列,相当于行数,在统计结果的时候不会忽略列值为NULL 。
count(1)包括了所有列,用1代表代码行,在统计结果的时候不会忽略列值为NULL 。
count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空NULL的计数。
执行效率上:
列名为主键,count(列名)会比count(1)快
列名不为主键,count(1)会比count(列名)快
如果表多个列并且没有主键,则 count(1) 的执行效率优于 count()
如果有主键,则 select count(主键)的执行效率是最优的
如果表只有一个字段,则 select count()最优。
where1=1
string MySqlStr="select * from table where";
if(Age.Text.Lenght>0)
{
MySqlStr=MySqlStr+“Age="+"'Age.Text'";
}
如果if语不成立,那么MySqlStr动态构造语句就变成了:
MySqlStr="select * from table where"
这是一条错误的语句,不能被执行,会报错。
使用where 1=1语句后,若if不成立,MySqlStr语句就变成了:
MySqlStr="select from table where 1=1;
该语句语法正确,执行不会报错相当于
MySqlStr=”select * from table
被执行后,返回表中所有数据。意思就是,用户在多条件查询时,不输入任何条件,就会返回表中所有数据。
CONCAT
CONCAT函数用于将两个字符串连接起来,形成一个单一的字符串。
SELECT CONCAT(id, name, work_date)
as info FROM employee_tbl;
网友评论