美文网首页
SQL 基础

SQL 基础

作者: 赵哥窟 | 来源:发表于2018-12-28 09:25 被阅读3次
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;

相关文章

  • sql

    sql-基础sql-基础查询-1sql-基础查询-2sql-更新 概览 数据库(Database,DB):将大量数...

  • SQL基础及元数据获取(数据类型,表的属性)

    1、SQL基础应用 ①.SQL的介绍SQL标准:SQL-92、SQL-99SQL_MODE:都是为了保证SQL语句...

  • MySql手动注入

    information_schema SQL基础 1.1 什么是sql? SQL(structured query...

  • MySQL

    数据类型 sql基础 数据库表 SQL SELECT 语句: SQL WHERE 子句: SQL AND & OR...

  • SQL语句

    SQL基础应用 SQL语句自动补全 SQL的介绍 SQL-92标准SQL-99标准 image SQL常用分类 表...

  • SQL高级运用

    -- =================================sql基础补充==============...

  • mysql的用法2

    -- =================================sql基础补充==============...

  • Oracle学习-day26:SQL语句

    一、SQL语言基础 1.什么是SQL语言? (1)SQL, Structured Query Language, ...

  • oracle 基础复习

    1. SQL 基础 https://mubu.com/doc/3ANPHhveeK 2. PL/SQL 基础 ht...

  • mysql手工注入

    SQL基础 1.1 什么是sql? SQL(structured query language),即结构化查询语言...

网友评论

      本文标题:SQL 基础

      本文链接:https://www.haomeiwen.com/subject/owajlqtx.html