您的位置:新葡亰496net > 网络数据库 > SQL基础语法笔记教程整理,MySQL常用操作

SQL基础语法笔记教程整理,MySQL常用操作

发布时间:2019-06-19 12:53编辑:网络数据库浏览(112)

    转载自:

    不久前从图书馆借了本介绍SQL的书,准备复习一下骨干语法,记录一下笔记,整理一下思路,以备日后复习之用。

    mysql基础语句,mysql语句

    转载自: 

    转载自: 

    目录

    方今从教室借了本介绍SQL的书,筹算复习一下骨干语法,记录一下笔记,整理一下思路,以备日后复习之用。

    PS:本文适用SQL Server二〇〇九语法。

    一、关系型数据库和SQL

    实则准确的讲,SQL是一门语言,而不是一个数据库。

    何以是SQL呢?简单的说,SQL就是保险和动用关系型数据库中的的数量的一种标准的微型Computer语言。

    一、关系型数据库和SQL

    实际上准确的讲,SQL是一门语言,而不是三个数据库。

    怎么着是SQL呢?简单的说,SQL就是保卫安全定和煦应用关系型数据库中的的数额的一种规范的微处理器语言。

        • 启动MySQL服务
        • 运用root用户登录
        • 翻开命令帮忙消息
        • 查阅授予用户的安全权限
        • 注释
        • 撤废正在输入的吩咐
        • 查阅当前包含什么数据库
        • 一而再数据库
        • 翻看当前数据库中包含什么表
        • 展现表属性
        • 展示服务器警告或错误音讯
        • 退出数据库
        • 新建数据库
        • 新建数据表
        • 数据类型
          • CHAR和VARCHAR的区别
          • ENUM和SET的区别
        • 插入数据
        • SQL约束
          • 主键
          • 外键
          • 非空约束
          • 默许值约束
          • 唯一约束
        • MySQL通配符
        • MySQL查询语句关键字顺序
        • SELECT操作
          • 查看表中有所的内容
          • SELECT基本格式
          • 对查询结果排序
          • 剔除重复值
          • 限定再次来到结果数
          • 放到函数和测算
          • 子查询
          • 接连查询
        • 除去数据库
        • 重命名数据表
        • 剔除数据表
        • 在表中追加列
        • 删除列
        • 修改列
        • 修改数据类型
        • 修改表中某些值
        • 去除某行记录
        • 为某列建构目录
        • 显示某表的目录
        • 制造视图一种虚拟存在的表
        • 导入将文件中的数据保存进表
        • 导出将表中数据保存到文件中
        • 备份整个数据库
        • 备份整个表
        • 借尸还魂数据库
        • 正则表明式
        • 空域元字符
        • 字符类预订义字符集
        • 相称多个实例
        • 一向元字符
        • 拼接字段
        • 别名alias
        • MySQL算数操作符
        • SELECT测试
        • SQL函数
        • 常用的文本管理函数
        • 日子和岁月管理函数
        • 数值管理函数
        • SQL集中函数
        • 分组数据
          • WHERE 和 HAVING
          • GROUP BY 和 ORDER BY
        • SELECT子句顺序
        • 子查询

    PS:本文适用SQL Server2009语法。

    一、关系型数据库和SQL

    实则正确的讲,SQL是一门语言,而不是叁个数据库。

    何以是SQL呢?一句话来讲,SQL就是保证和动用关系型数据库中的的数据的一种标准的处理器语言。

    1.1 SQL语言首要有3个第一的组成都部队分。

    在SQL术语中,记录(record)和字段(田野先生)实际上就叫做行(row)和列(column)。

    1.1 SQL语言首要有3个基本点的组成都部队分。

    1. DML(Data Manipulation Language)数据操纵语言。这么些模块能够让我们探寻、修改、扩充、删除数据库中的数据。
    2. DDL(Data Definition Language)数据定义语言。是的我们能够成立和修改数据库本身。如:DDL提供ALTER言语,他让大家得以修改数据库中表的筹划。
    3. DCL(Data Control Language)数据调整语言,用于珍贵数据库的平安。

    在SQL术语中,记录(record)和字段(田野先生)实际上就叫做行(row)和列(column)。

    启动MySQL服务

    $ sudo service mysql start
    

    一、关系型数据库和SQL

    实则正确的讲,SQL是一门语言,而不是三个数据库。

    何以是SQL呢?简单来说,SQL便是保险和动用关系型数据库中的的多寡的一种标准的管理器语言。

    1.1 SQL语言重要有3个第一的组成都部队分。

    1. DML(Data Manipulation Language)数据操纵语言。那一个模块能够让大家探寻、修改、扩展、删除数据库中的数据。
    2. DDL(Data Definition Language)数据定义语言。是的我们可以创造和改换数据库自个儿。如:DDL提供ALTER话语,他让我们能够修改数据库中表的布置。
    3. DCL(Data Control Language)数据调整语言,用于保证数据库的平安。

    在SQL术语中,记录(record)和字段(田野(field))实际上就叫做行(row)和列(column)。

    1.2 主键和外键

    主键之所以有供给:

    • 首先使您唯一标记表中独立的一条龙。主键确认保障了唯一性。
    • 能够很轻巧的将叁个表和另贰个表关联。
    • 主键一般就能够自动私下认可创造索引,进步了查询速度。

    外键正是说A表中的有个别字段,同有的时候候是B中的主键,那么这一个字段就是A表中的外键。希望A表中的那几个外键的值必须是B中早已存在的值。

    1.2 主键和外键

    主键之所以有必不可缺:

    • 率先使您唯一标识表中独立的一行。主键确定保证了唯一性。
    • 能够很轻巧的将几个表和另贰个表关联。
    • 主键一般就能够自动暗许创建索引,进步了询问速度。

    外键便是说A表中的有些字段,相同的时候是B中的主键,那么那么些字段即是A表中的外键。希望A表中的这一个外键的值必须是B中早就存在的值。

    利用root用户登录

    $ mysql -u 用户名 -p
    

    -p意味着使用密码登陆

    1.1 SQL语言首要有3个首要的组成都部队分。

    1. DML(Data Manipulation Language)数据垄断(monopoly)语言。这一个模块能够让大家找出、修改、扩充、删除数据库中的数据。
    2. DDL(Data Definition Language)数据定义语言。是的大家能够制造和更换数据库本人。如:DDL提供ALTER说话,他让我们能够修改数据库中表的宏图。
    3. DCL(Data Control Language)数据调控语言,用于保险数据库的安全。

    在SQL术语中,记录(record)和字段(田野先生)实际上就叫做行(row)和列(column)。

    1.2 主键和外键

    主键之所以有须要:

    • 首先使您唯一标记表中独立的一条龙。主键确认保障了唯一性。
    • 能够很轻便的将二个表和另二个表关联。
    • 主键一般就能自行默许创设索引,进步了查询速度。

    外键正是说A表中的有个别字段,同不时候是B中的主键,那么那些字段正是A表中的外键。希望A表中的那么些外键的值必须是B中已经存在的值。

    1.3 数据类型

    一般来说,有3中重视的数据类型:

    bit是数字型,它只同意七个值,0和1。

    字符类型差别^1:

    类型 长度 说明
    char 固定长度
    nchar 固定长度 处理unicode数据类型(所有的字符使用两个字节表示)
    varchar 可变长度 效率没char高 灵活
    nvarchar 可变长度 处理unicode数据类型(所有的字符使用两个字节表示)
    • 1字节=8位
    • bit便是位,也叫比特位,是Computer表示数据最小的单位。
    • byte就是字节,1byte=8bit,1byte就是1B;
    • 二个字符=2字节;

    1.3 数据类型

    一般来说,有3中驷不及舌的数据类型:

    1. 数字(Numeric)
    2. 字符(Character)
    3. 以及日期/时间(Date/Time)

    bit是数字型,它只同意七个值,0和1。

    字符类型分裂^1):

    类型 长度 说明
    char 固定长度
    nchar 固定长度 处理unicode数据类型(所有的字符使用两个字节表示)
    varchar 可变长度 效率没char高 灵活
    nvarchar 可变长度 处理unicode数据类型(所有的字符使用两个字节表示)
    • 1字节=8位
    • bit正是位,也叫比特位,是Computer表示数据最小的单位。
    • byte正是字节,1byte=8bit,1byte便是1B;
    • 三个字符=2字节;

    翻开命令帮忙消息

    mysql> HELP 命令名;
    

    1.2 主键和外键

    主键之所以有要求:

    • 首先让你唯一标志表中独立的一条龙。主键确定保障了唯一性。
    • 能够很轻便的将三个表和另四个表关联。
    • 主键一般就能自行暗中同意制造索引,进步了查询速度。

    外键正是说A表中的有些字段,相同的时间是B中的主键,那么这么些字段正是A表中的外键。希望A表中的那个外键的值必须是B中已经存在的值。

    1.3 数据类型

    一般来说,有3中重大的数据类型:

    1. 数字(Numeric)
    2. 字符(Character)
    3. 以及日期/时间(Date/Time)

    bit是数字型,它只同意三个值,0和1。

    字符类型不一致[[1]](https://www.jianshu.com/p/0949203c63b8#fn1)

    类型 长度
    char 固定长度
    nchar 固定长度
    varchar 可变长度
    nvarchar 可变长度
    • 1字节=8位
    • bit正是位,也叫比特位,是Computer表示数据最小的单位。
    • byte就是字节,1byte=8bit,1byte就是1B;
    • 三个字符=2字节;

    1.3 空值

    空值不等于空格或空白。使用NULL表示空值。

    1.3 空值

    空值不对等空格或空白。使用NULL表示空值。

    查阅授予用户的安全权限

    mysql> SHOW GRANTS;
    

    1.3 数据类型

    一般来说,有3中重要的数据类型:

    1. 数字(Numeric)
    2. 字符(Character)
    3. 以及日期/时间(Date/Time)

    bit是数字型,它只同意四个值,0和1。

    字符类型不一样^1):

    类型 长度 说明
    char 固定长度
    nchar 固定长度 处理unicode数据类型(所有的字符使用两个字节表示)
    varchar 可变长度 效率没char高 灵活
    nvarchar 可变长度 处理unicode数据类型(所有的字符使用两个字节表示)
    • 1字节=8位
    • bit就是位,也叫比特位,是Computer表示数据最小的单位。
    • byte正是字节,1byte=8bit,1byte正是1B;
    • 二个字符=2字节;

    1.3 空值

    空值不对等空格或空白。使用NULL表示空值。

    二、轻易增加和删除改查

    二、轻便增加和删除改查

    注释

    -- 单行注释
    
    /* 多行注释 */
    

    1.3 空值

    空值不等于空格或空白。使用NULL表示空值。

    二、轻巧增加和删除改查

    2.1 查(列名有空格的动静)

    1 SELECT [ last name]
    2 FROM Customers
    

    用方括号将有空格的列名括起来。
    PS: MySql中用重音符`(~)开关。Oracle用双引号。

    2.1 查(列名有空格的事态)

    1 SELECT [ last name]
    2 FROM Customers
    

    用方括号将有空格的列名括起来。
    PS: MySql中用重音符`(~)开关。Oracle用双引号。

    打消正在输入的一声令下

    c
    

    二、轻便增加和删除改查

    2.1 查(列名有空格的情事)

    SELECT [ last name]
    FROM Customers
    

    用方括号将有空格的列名括起来。
    PS: MySql中用重音符`(~)开关。Oracle用双引号。

    询问顺序,SQL推行各样

    1 Select -1>选择列,-2>distinct,-3>top
    2   1>…From 表
    3   2>…Where 条件
    4   3>…Group by 列
    5   4>…Having 筛选条件
    6   6>…Order by 列
    

    询问顺序,SQL推行种种

    1 Select -1>选择列,-2>distinct,-3>top
    2   1>…From 表
    3   2>…Where 条件
    4   3>…Group by 列
    5   4>…Having 筛选条件
    6   6>…Order by 列
    

    查看当前带有哪些数据库

    mysql> SHOW DATABASES;
    

    2.1 查(列名有空格的情事)

    1
    2
    SELECT [ last name]
    FROM Customers

    用方括号将有空格的列名括起来。
    PS: MySQL得力重音符`(~)按钮。Oracle用双引号。

    询问顺序,SQL推行各种[[2]](https://www.jianshu.com/p/0949203c63b8#fn2)

    Select -1>选择列,-2>distinct,-3>top
      1>…From 表
      2>…Where 条件
      3>…Group by 列
      4>…Having 筛选条件
      6>…Order by 列
    

    2.2 增

    1 INSERT INTO tablename
    2 (columnlist)
    3 VALUES
    4 (RowValues1)
    5 (RowValues2)
    6 (repeat any number of times)
    

    2.2 增

    1 INSERT INTO tablename
    2 (columnlist)
    3 VALUES
    4 (RowValues1)
    5 (RowValues2)
    6 (repeat any number of times)
    

    延续数据库

    mysql> USE 数据库名
    

    查询顺序,SQL实行各种^2):

    1
    2
    3
    4
    5
    6
    Select -1>选择列,-2>distinct,-3>top
      1>…From 表
      2>…Where 条件
      3>…Group by 列
      4>…Having 筛选条件
      6>…Order by 列

    2.2 增

    INSERT INTO tablename
    (columnlist)
    VALUES
    (RowValues1)
    (RowValues2)
    (repeat any number of times)
    

    2.3 改

    1 UPDATE  table
    2 SET column1=expression1,column2=expression2(repeat any number of times)
    3 WHERE condition
    

    2.3 改

    1 UPDATE  table
    2 SET column1=expression1,column2=expression2(repeat any number of times)
    3 WHERE condition
    

    查阅当前数据库中隐含哪些表

    mysql> SHOW TABLES;
    

    mysql> DESCRIBE 表名;
    

    2.2 增

    1
    2
    3
    4
    5
    6
    INSERT INTO tablename
    (columnlist)
    VALUES
    (RowValues1)
    (RowValues2)
    (repeat any number of times)

    2.3 改

    UPDATE  table
    SET column1=expression1,column2=expression2(repeat any number of times)
    WHERE condition
    

    2.4 删

    1 DELETE
    2 FROM table
    3 WHERE condition
    

    删去前可以作证一下:

    1 SELECT 
    2 COUNT(*)
    3 FROM table
    4 WHERE condition
    

    假设想要删除全数的行,能够:

     1 DELETE FROM table 

    或者

     1 TRUNCATE TABLE table 

    TRUNCATE TABLE优势在于速度更加快,不过不提供记录事务的结果。
    别的七个不一样点是,TRUNCATE TABLE再也设置了用来自增型的列的目前值,DELETE不会。

    2.4 删

    1 DELETE
    2 FROM table
    3 WHERE condition
    

    去除前能够印证一下:

    1 SELECT 
    2 COUNT(*)
    3 FROM table
    4 WHERE condition
    

    假若想要删除全部的行,能够:

     1 DELETE FROM table 

    或者

     1 TRUNCATE TABLE table 

    TRUNCATE TABLE优势在于速度越来越快,不过不提供记录事务的结果。
    其它贰个分化点是,TRUNCATE TABLE再一次安装了用于自增型的列的日前值,DELETE不会。

    展现表属性

    mysql> SHOW COLUMNS FROM 表名;
    

    该命令将会输出钦点表的每一种字段的字段名、数据类型、非空约束、是或不是是主键和私下认可值等音讯。

    2.3 改

    1
    2
    3
    UPDATE  table
    SET column1=expression1,column2=expression2(repeat any number of times)
    WHERE condition

    2.4 删

    DELETE
    FROM table
    WHERE condition
    

    删除前能够证实一下:

    SELECT 
    COUNT(*)
    FROM table
    WHERE condition
    

    假定想要删除全部的行,能够:

    DELETE FROM table
    

    或者

    TRUNCATE TABLE table
    

    TRUNCATE TABLE优势在于速度越来越快,不过不提供记录事务的结果。
    其余三个分歧点是,TRUNCATE TABLE再次设置了用来自增型的列的眼下值,DELETE不会。

    三、别名

    关键字:AS

    三、别名

    关键字:AS

    彰显服务器警告或错误新闻

    mysql> SHOW ERRORS;
    

    mysql> SHOW WARNINGS;
    

    2.4 删

    1
    2
    3
    DELETE
    FROM table
    WHERE condition

    删除前能够证美素佳儿下:

    1
    2
    3
    4
    SELECT 
    COUNT(*)
    FROM table
    WHERE condition

     

    假诺想要删除全数的行,能够:

    1
    DELETE FROM table

     

    或者

    1
    TRUNCATE TABLE table

     

    TRUNCATE TABLE优势在于速度越来越快,不过不提供记录事务的结果。
    除此以外三个区别点是,TRUNCATE TABLE再也设置了用于自增型的列的眼下值,DELETE不会。

    三、别名

    关键字:AS

    3.1 总括字段

    使用计算字段能够做如下的业务:

    • 慎选特定的单词可能数值
    • 对单个或然多个列举办总结
    • 把列和直接量组合在一同。

    3.1 总结字段

    运用计算字段能够做如下的政工:

    • 分选特定的单词可能数值
    • 对单个或然四个列进行测算
    • 把列和直接量组合在一同。

    脱离数据库

    mysql> EXIT/QUIT;
    

    三、别名

    关键字:AS

    3.1 总括字段

    使用总结字段能够做如下的事情:

    • 分选特定的单词或许数值
    • 对单个也许四个列实行测算
    • 把列和直接量组合在联合。

    3.2 直接量

    以此直接量和表中的数量尚未任何关系,就是为着注脚所用,上面那连串型的表达式就称为直接量(literal value)。
    新葡亰496net 1

     1 SELECT '直接量' AS `类型`,firstname,lastname 2 FROM `customers` ; 

    新葡亰496net 2

    如图,结果中央机关单位接量就在一列中了。

    3.2 直接量

    本条直接量和表中的数目尚未别的关系,就是为着验证所用,上面那连串型的表明式就称为直接量(literal value)。
    新葡亰496net 3

     1 SELECT '直接量' AS `类型`,firstname,lastname 2 FROM `customers` ; 

    新葡亰496net 4

    如图,结果中央行政机关接量就在一列中了。

    新建数据库

    mysql> CREATE DATABASE 数据库名;
    

    一般SQL语句不区分轻重缓急写,但提出将重视字大写,变量和多少小写。

    3.1 计算字段

    利用总计字段能够做如下的业务:

    • 挑选特定的单词只怕数值
    • 对单个也许几个列举行测算
    • 把列和直接量组合在联合签名。

    3.2 直接量

    那几个直接量和表中的多寡未有别的涉及,正是为了印证所用,下边那连串型的表明式就叫做直接量(literal value)。

    新葡亰496net 5

    SELECT '直接量' AS `类型`,firstname,lastname 
    FROM `customers` ;
    

    新葡亰496net 6

    如图,结果中央直属机关接量就在一列中了。

    3.3 算数运算

    例子1:

     1 SELECT num*price AS total 2 FROM orders 

    例子2:

    1 SELECT  firstname ' ' lastname AS 'fullname'
    2 FROM users
    

    在MySql中再而三假若用CONCAT函数:

    1 SELECT OrderID,FirstName,LastName,
    2 CONCAT(FirstName,' ',LastName) AS 'fullname'
    3 FROM orders
    

    3.3 算数运算

    例子1:

     1 SELECT num*price AS total 2 FROM orders 

    例子2:

    1 SELECT  firstname ' ' lastname AS 'fullname'
    2 FROM users
    

    在MySql中年老年是假使用CONCAT函数:

    1 SELECT OrderID,FirstName,LastName,
    2 CONCAT(FirstName,' ',LastName) AS 'fullname'
    3 FROM orders
    

    新建数据表

    mysql> CREATE TABLE 数据表名
        -> (
        -> 列名1 数据类型(数据长度) PRIMARY KEY,        --主键
        -> 列名2 数据类型(数据长度) NOT NULL,        --非空约束
        -> 列名3 数据类型(数据长度) DEFAULT '默认值',        --默认值约束
        -> UNIQUE(列名a),        --唯一约束
        -> CONSTRAINT 主键名 PRIMARY KEY (列名a,列名b,...),        --复合主键
        -> CONSTRAINT 外键名 FOREIGN KEY (列名) REFERENCES 表名(主键名)        --外键
        -> );
    

    留神最终二个列名前面不加逗号”,”。

    3.2 直接量

    本条直接量和表中的数额尚未其余关联,就是为着表达所用,上面那连串型的表明式就称为直接量(literal value)。
    新葡亰496net 7

    1
    2
    SELECT '直接量' AS `类型`,firstname,lastname 
    FROM `customers` ;

    新葡亰496net 8
    如图,结果中央政府机关接量就在一列中了。

    3.3 算数运算

    例子1:

    SELECT  num*price AS total
    FROM orders
    

    例子2:

    SELECT  firstname ' ' lastname AS 'fullname'
    FROM users
    

    在MySql中连连尽管用CONCAT函数:

    SELECT OrderID,FirstName,LastName,
    CONCAT(FirstName,' ',LastName) AS 'fullname'
    FROM orders
    

    3.4 别名

    1)列的别称

     1 SELECT firstname AS fn 2 FROM customers 

    2) 表的小名

     1 SELECT firstname 2 FROM customers AS cu 

    说明:

    3.4 别名

    1)列的外号

     1 SELECT firstname AS fn 2 FROM customers 

    2) 表的别称

     1 SELECT firstname 2 FROM customers AS cu 

    说明:

    1. 列的别称是为着显得用的,别名会作为查询结果的表头,无法在WHERE中选取列的别称,会出错!!!
    2. 表的外号确实是为了有利于操作用的,能够在WHERE中使用列的别名进行!

    数据类型

    数据类型 大小(字节) 用途 格式
    INT 4 整数 -
    FLOAT 4 单精度浮点数 -
    DOUBLE 4 双精度浮点数 -
    ENUM - 单选 ENUM(‘a’,’b’,’c’)
    SET - 多选 SET(‘1’,’2’,’3’)
    DATE 3 日期 YYYY-MM-DD
    TIME 3 时间点或持续时间 HH:MM:SS
    YEAR 1 年份值 YYYY
    CHAR 0~255 定长字符串 -
    VARCHAR 0~255 变长字符串 -
    TEXT 0~65535 长文本数据 -

    3.3 算数运算

    例子1:

    1
    2
    SELECT  num*price AS total
    FROM orders

     

    例子2:

    1
    2
    SELECT  firstname ' ' lastname AS 'fullname'
    FROM users

     

    在MySql中一而再就算用CONCAT函数:

    1
    2
    3
    SELECT OrderID,FirstName,LastName,
    CONCAT(FirstName,' ',LastName) AS 'fullname'
    FROM orders

     

    3.4 别名

    1)列的别称

    SELECT firstname AS fn
    FROM customers
    

    2) 表的小名

    SELECT firstname 
    FROM customers AS cu
    

    说明:

    1. 列的别称是为了显得用的,外号会作为查询结果的表头,不可能在WHERE中央银行使列的别称,会出错!!!
    2. 表的小名确实是为了方便操成效的,能够在WHERE中应用列的别称举行!

    四、使用函数

    函数要有一组圆括号跟在重视字背后,圆括号报告咱们,那是二个函数!

    四、使用函数

    函数要有一组圆括号跟在重要字背后,圆括号报告大家,那是三个函数!

    CHAR和VARCHAR的区别:

    CHA奇骏的长度是固定的,而VA中华VCHA福特Explorer的尺寸是足以变动的。

    诸如,存款和储蓄字符串"abc",对于CHAPAJERO(10),表示存款和储蓄的字符将占十三个字节(包罗7个空字符),

    而同等的VA途观CHA帕杰罗(12)则只占用3个字节的尺寸,12只是最大值,

    当您存款和储蓄的字符小于12时,按实际上尺寸存款和储蓄。

    3.4 别名

    1)列的外号

    1
    2
    SELECT firstname AS fn
    FROM customers

     

    2) 表的外号

    1
    2
    SELECT firstname 
    FROM customers AS cu

     

    说明:

    1. 列的别称是为了呈现用的,别名会作为查询结果的表头,不能够在WHERE中接纳列的小名,会出错!!!
    2. 表的外号确实是为着有利于操效能的,能够在WHERE中采取列的别称举行!

    四、使用函数

    函数要有一组圆括号跟在主要字背后,圆括号报告大家,那是叁个函数!

    4.1 字符函数

    4.1 字符函数

    ENUM和SET的区别:

    ENUM类型的数据的值,必须是定义时枚举的值的其中之一,即单选,而SET类型的值则可以多选。
    

    四、使用函数

    函数要有一组圆括号跟在首要字背后,圆括号告知我们,那是二个函数!

    4.1 字符函数

    LEFT&RIGHT

    LEFT(CharacterValue,NumberOfCharacters)
    含义:选择CharacterValue字段的右侧NumberOfCharacters多少个字符。
    ps:库罗德IGHT是左臂多少个字符。

    LEFT&RIGHT

    LEFT(CharacterValue,NumberOfCharacters)
    含义:选择CharacterValue字段的左边NumberOfCharacters多少个字符。
    ps:路虎极光IGHT是左边手多少个字符。

    布署数据

    INSERT INTO 数据表名(列名1,列名2,列名3) VALUES(值1,值2,值3);
    

    VALUES中的值为对应列属性的值,其中CHA福特Explorer,VAXC60CHACRUISER,TEXT,DATE,TIME,ENUM等类型的数量须要单引号修饰。

    4.1 字符函数

    LEFT&RIGHT

    LEFT(CharacterValue,NumberOfCharacters)
    含义:选择CharacterValue字段的左边NumberOfCharacters多少个字符。
    ps:CRUISERIGHT是右边手多少个字符。

    LTRIM&RTRIM

    LTRIM(CharacterValue)
    能够去除左侧初叶的空格。RT大切诺基IM功用类似。

    LTRIM&RTRIM

    LTRIM(CharacterValue)
    能够去除左侧开端的空格。RTCRUISERIM功效类似。

    SQL约束

    LEFT&RIGHT

    LEFT(CharacterValue,NumberOfCharacters)
    含义:选择CharacterValue字段的左边NumberOfCharacters多少个字符。
    ps:锐界IGHT是右臂多少个字符。

    LTRIM&RTRIM

    LTRIM(CharacterValue)
    能够去除左侧开头的空格。RT宝马X3IM成效类似。

    SUBSTRING

    SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
    意义:选用从开首地点(包涵),N个长度的字符。

    1 SELECT 
    2 SUBSTRING('thewhitegoat',4,5) AS 'The Answer'
    

    返回:white

    SUBSTRING

    SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
    意思:选取从初叶地方(蕴涵),N个长度的字符。

    1 SELECT 
    2 SUBSTRING('thewhitegoat',4,5) AS 'The Answer'
    

    返回:white

    主键

    PRIMARYKEY KEY
    

    CONSTRAINT 主键名 PRIMARY KEY (列名a,列名b,...)
    

    贰个表中能够有八个主键。

    LTRIM&RTRIM

    LTRIM(CharacterValue)
    可以去除右侧开头的空格。RT福睿斯IM功用类似。

    SUBSTRING

    SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
    意义:采纳从开首地方(包罗),N个长度的字符。

    SELECT 
    SUBSTRING('thewhitegoat',4,5) AS 'The Answer'
    

    返回:white

    4.2 日期/时间函数

    4.2 日期/时间函数

    外键

    CONSTRAINT 外键名 FOREIGN KEY (列名) REFERENCES 数据表名 (被参考的主键名)
    

    各类表能够由四个外键,各种外键必须参照另贰个表中的主键,被外键约束的列的取值必须在它参照他事他说加以调查的主键的列中有对应的值。

    SUBSTRING

    SUBSTRING(CharacterValue,StartPositon,NumberOfCharacters)
    意思:选用从初步地点(包含),N个长度的字符。

    1
    2
    SELECT 
    SUBSTRING('thewhitegoat',4,5) AS 'The Answer'

     

    返回:white

    4.2 日期/时间函数

    GETDATE

     1 DATEPART(datepart,DateValue) 

    datepart能够是累累见仁见智的值,如下都以有效值:

    • year
    • quarter
    • month
    • dayofyear
    • day
    • week
    • weekday
    • hour
    • minute
    • second

    GETDATE

     1 DATEPART(datepart,DateValue) 

    datepart可以是多数两样的值,如下都以有效值:

    • year
    • quarter
    • month
    • dayofyear
    • day
    • week
    • weekday
    • hour
    • minute
    • second

    非空约束

    NOT NULL
    

    MySQL中违反非空约束只会警告不会报错。

    4.2 日期/时间函数

    GETDATE

    SELECT GETDATE()
    

    回来当前几日期和岁月。
    PS:在MySql中,等价函数是NOW,在Oracle中是CURRENT_DATE

    DATEDIFF

    能够让大家赢得猖狂三个日子之间离开的气数(或周数、月数等)。

     1 DATEDIFF(datepart1,startdate1,startdate2) 

     

    DATEDIFF Function Expression Resulting Value
    DATEDIFF(day,’7/8/2009’,’8/14/2009’) 37
    DATEDIFF(week,’7/8/2009’,’8/14/2009’) 5
    DATEDIFF(month,’7/8/2009’,’8/14/2009’) 1
    DATEDIFF(year,’7/8/2009’,’8/14/2009’) 0

    PS:MySql中,DATEDIFF函数只允许大家计算七个日子之间的大运,假诺想要获得三个正数,结束的日期平常要作为第一个参数:

     1 DATEDIFF(enddate,startdate) 

    Oracle中并未有等价函数

    DATEDIFF

    能够让我们获取自便四个日子之间离开的命局(或周数、月数等)。

     1 DATEDIFF(datepart1,startdate1,startdate2) 

     

    DATEDIFF Function Expression Resulting Value
    DATEDIFF(day,’7/8/2009’,’8/14/2009’) 37
    DATEDIFF(week,’7/8/2009’,’8/14/2009’) 5
    DATEDIFF(month,’7/8/2009’,’8/14/2009’) 1
    DATEDIFF(year,’7/8/2009’,’8/14/2009’) 0

    PS:MySql中,DATEDIFF函数只同意我们总结多少个日子之间的天数,假诺想要得到二个正数,甘休的日期常常要作为第三个参数:

     1 DATEDIFF(enddate,startdate) 

    Oracle中从不等价函数

    默许值约束

    DEFAULT '默认值'
    

    字符类型暗许值使用单引号括起。

    GETDATE

    1
    SELECT GETDATE()

    重回当昨天子和岁月。
    PS:在MySql中,等价函数是NOW,在Oracle中是CURRENT_DATE

    DATEPART

    能够深入分析现实的日期,并且再次来到诸如该日期是前段日子初的第几天,可能该年度中的第几周等音信。

    DATEPART(datepart,DateValue)
    

    datepart能够是成都百货上千不及的值,如下都是有效值:

    • year
    • quarter
    • month
    • dayofyear
    • day
    • week
    • weekday
    • hour
    • minute
    • second

    4.3 数值函数

    4.3 数值函数

    唯一约束

    UNIQUE(列名)
    

    该表中该列值不可重复。

    DATEPART

    可知解析具体的日子,并且重临诸如该日期是前些日子初的第几天,可能该年度中的第几周等音讯。

    1
    DATEPART(datepart,DateValue)

     

    datepart能够是广大不等的值,如下都是有效值:

    • year
    • quarter
    • month
    • dayofyear
    • day
    • week
    • weekday
    • hour
    • minute
    • second

    DATEDIFF

    能够让我们收获猖狂四个日子之间离开的气数(或周数、月数等)。

    DATEDIFF(datepart1,startdate1,startdate2)
    
    DATEDIFF Function Expression Resulting Value
    DATEDIFF(day,'7/8/2009','8/14/2009') 37
    DATEDIFF(week,'7/8/2009','8/14/2009') 5
    DATEDIFF(month,'7/8/2009','8/14/2009') 1
    DATEDIFF(year,'7/8/2009','8/14/2009') 0

    PS:MySql中,DATEDIFF函数只允许大家计算三个日子之间的大运,假设想要获得三个正数,结束的日期平日要作为第二个参数:

    DATEDIFF(enddate,startdate)
    

    Oracle中并没有等价函数

    ROUND

    允许大家四舍五入。

     1 ROUND(numericvalue,decimalpalaces) 

    ROUND

    同意大家四舍五入。

     1 ROUND(numericvalue,decimalpalaces) 

    MySQL通配符

    _   ### 只能匹配单个任意字符
    %   ### 匹配0或多个任意字符
    

    不可能不通过LIKE使用通配符。
    通配符不能够用来检索NULL。
    行使通配符搜索相对于任何找出方式一般要开销越来越长的时刻。
    将通配符放在寻找情势的启幕处,寻觅起来是最慢的,尽量制止那样做。

    DATEDIFF

    能够让我们赢得率性三个日子之间离开的气数(或周数、月数等)。

    1
    DATEDIFF(datepart1,startdate1,startdate2)

     

    DATEDIFF Function Expression Resulting Value
    DATEDIFF(day,’7/8/2009’,’8/14/2009’) 37
    DATEDIFF(week,’7/8/2009’,’8/14/2009’) 5
    DATEDIFF(month,’7/8/2009’,’8/14/2009’) 1
    DATEDIFF(year,’7/8/2009’,’8/14/2009’) 0

    PS:MySql中,DATEDIFF函数只允许大家总结五个日子之间的流年,假诺想要获得二个正数,结束的日期经常要作为第四个参数:

    1
    DATEDIFF(enddate,startdate)

     

    Oracle中并未有等价函数

    4.3 数值函数

    RAND

    用来发生随机数

     1 RAND([seed]) 

    未曾子数时,它会再次回到0-1里面包车型大巴三个随机数。

     1 SELECT RAND() AS 'Random Value' 

    可选参数seed有的图景下,每趟将回来同样的值。那让本身纪念了Python中的Random包。看来众多时候,一些东西是共通的哎。

    RAND

    用来产生随机数

     1 RAND([seed]) 

    未曾子数时,它会再次回到0-1时期的一个随机数。

     1 SELECT RAND() AS 'Random Value' 

    可选参数seed有的动静下,每一次将重临一样的值。那让自家想起了Python中的Random包。看来众多时候,一些事物是共通的呦。

    MySQL查询语句关键字顺序

    mysql> SELECT ...
           FROM ...
           WHERE ...
           ORDER BY ...
           LIMIT ...;
    

    4.3 数值函数

    ROUND

    允许大家四舍五入。

    ROUND(numericvalue,decimalpalaces)
    

    PI

    PI()函数
    举个例子想要对它保留两位小数,能够因此复合函数进行:

     1 SELECT ROUND(PI(),2) 

    将会回来:3.14

    PI

    PI()函数
    只要想要对它保留两位小数,能够通过复合函数举行:

     1 SELECT ROUND(PI(),2) 

    将会回去:3.14

    SELECT操作

    ROUND

    允许大家四舍五入。

    1
    ROUND(numericvalue,decimalpalaces)

     

    RAND

    用来发出随机数

    RAND([seed])
    

    尚无参数时,它会重回0-1里面包车型客车二个随机数。

    SELECT RAND() AS 'Random Value'
    

    可选参数seed有的气象下,每便将回来同样的值。那让自己记念了Python中的Random包。看来众多时候,一些东西是共通的哎。

    4.4 转变函数

    4.4 调换函数

    查看表中享有的从头到尾的经过

    mysql> SELECT * FROM 数据表名;
    

    RAND

    用来发生随机数

    1
    RAND([seed])

     

    不曾子数时,它会再次回到0-1里面包车型大巴四个随机数。

    1
    SELECT RAND() AS 'Random Value'

     

    可选参数seed有的景色下,每一遍将重返同样的值。那让自家想起了Python中的Random包。看来众多时候,一些事物是共通的啊。

    PI

    PI()函数
    若是想要对它保留两位小数,能够因而复合函数进行:

    SELECT ROUND(PI(),2)
    

    将会回去:3.14

    CAST函数

    允许大家把数量从一系列型转换来另一种档期的顺序。

     1 CAST(expression AS DateType) 

    例子:

    1 SELECT 
    2 '2009-04-11' AS 'Original Date',
    3 CAST('2009--04-11' AS DATETIME) AS 'Converted Date'
    

    CAST函数

    同意大家把数量从一连串型转换来另一种类型。

     1 CAST(expression AS DateType) 

    例子:

    1 SELECT 
    2 '2009-04-11' AS 'Original Date',
    3 CAST('2009--04-11' AS DATETIME) AS 'Converted Date'
    

    SELECT基本格式

    mysql> SELECT 列名a,列名b,...
           -> FROM 数据表名
           -> WHERE 限制条件1 AND/OR 限制条件2 ...
           -> 其他命令;
    

    WHERE子句操作符

    操作符 说明
    = 等于
    != 不等于
    <> 不等于
    < 小于
    > 大于
    <= 小于等于
    <= 大于等于
    BETWEEN … AND 在两个值之间
    AND 需要同时满足的条件
    OR 满足其一即可的条件
    IN 指定条件范围
    NOT 否定其后的任何条件
    IS NULL 空值检查
    LIKE 使用通配符

    AND的事先级大于OEnclave,当同一时候接纳AND和OPAJERO时,使用括号来制止因筛选顺序区别变成错误。
    IN操作符的范围参数放在圆括号中,以逗号分隔。
    动用IN日常比使用OTucson实行进程越来越快,而且语义越来越精通,能够改动态的建构WHERE子句。
    在进展相配过滤和不包容过滤时都不会对NULL值实行相称。
    NULL表示不含值,它区别于0、空字符串和空格。
    应用单引号限定字符串。
    匹配字符串时默认不区分轻重缓急写。

    例如:

    SELECT 列名a,列名b,... FROM 表名 WHERE 列名a>x1 AND/OR 列名a<x2 AND/OR 列名b='x3';
    SELECT 列名a,列名b,... FROM 表名 WHERE 列名a IN/NOT IN ('范围列名a','范围列名b',...);
    SELECT 列名a,列名b,... FROM 表名 WHERE 列名a LIKE 'xx_xx%';
    

    PI

    PI()函数
    即使想要对它保留两位小数,能够由此复合函数举行:

    1
    SELECT ROUND(PI(),2)

     

    将会回来:3.14

    4.4 调换函数

    ISNULL函数,很有用

    能够把NULL值转变来二个有含义的值。

    1 SELECT Description,
    2 ISNULL(Color,'Unknown') AS 'Color'
    3 FROM Products
    

    ISNULL函数,很有用

    能够把NULL值调换来三个有意义的值。

    1 SELECT Description,
    2 ISNULL(Color,'Unknown') AS 'Color'
    3 FROM Products
    

    对查询结果排序

    mysql> SELECT 列名... FROM 表名 ORDER BY 首选排序列名 DESC/ASC, 第二排序列名 DESC/ASC, ... DESC/ASC;
    

    O大切诺基DE路虎极光 BY 默许升序排列,使用ASC内定升序排序,使用DESC钦赐降序排序。
    DESC/ASC只可以向来效果于直接放在其前方的列名,尽管想在七个列上举办降序排序,必须对各样列内定DESC关键字。

    4.4 调换函数

    CAST函数

    同意大家把数据从一体系型转变到另一体系型。

    CAST(expression AS DateType)
    

    例子:

    SELECT 
    '2009-04-11' AS 'Original Date',
    CAST('2009--04-11' AS DATETIME) AS 'Converted Date'
    

    五、排序函数

    五、排序函数

    除去重复值

    mysql> SELECT DISTINCT 列名... FROM 表名;
    

    DISTINCT关键字功能于具有列而不是仅成效于前置它的列。

    CAST函数

    同意大家把数据从一种类型转换来另一种类型。

    1
    CAST(expression AS DateType)

     

    例子:

    1
    2
    3
    SELECT 
    '2009-04-11' AS 'Original Date',
    CAST('2009--04-11' AS DATETIME) AS 'Converted Date'

     

    ISNULL函数,很有用

    能够把NULL值转变来一个有意义的值。

    SELECT Description,
    ISNULL(Color,'Unknown') AS 'Color'
    FROM Products
    

    5.1 增多排序

     1 SELECT columnlist 2 FROM tablelist 3 ORDER BY columnlist 

    暗中认可是升序,ASC,由此,上边等价于:

     1 SELECT columnlist 2 FROM tablelist 3 ORDER BY columnlist ASC 

    5.1 增多排序

     1 SELECT columnlist 2 FROM tablelist 3 ORDER BY columnlist 

    暗中认可是升序,ASC,因而,上面等价于:

     1 SELECT columnlist 2 FROM tablelist 3 ORDER BY columnlist ASC 

    范围再次来到结果数

    mysql> SELECT 列名... FROM 表名 LIMIT 检索起始行,最大输出行数;
    

    mysql> SELECT 列名... FROM 表名 LIMIT 最大输出行数 OFFSET 检索起始行; # MySQL 5
    

    若不钦点开始行,则从第0行起始查找,注意MySQL中表行从0初始。
    若语句中带有OXC90DE讴歌RDX BY,则LIMIT应该放在O奔驰M级DELAND BY然后。

    例句:

    SELECT 列名,... FROM 表名 ORDER BY 列名 ASC/DESC;
    

    ISNULL函数,很有用

    能够把NULL值调换到贰个有意义的值。

    1
    2
    3
    SELECT Description,
    ISNULL(Color,'Unknown') AS 'Color'
    FROM Products

     

    五、排序函数

    5.2 降序

    使用DESC关键字:

     1 SELECT columnlist 2 FROM tablelist 3 ORDER BY columnlist DESC 

    5.2 降序

    使用DESC关键字:

     1 SELECT columnlist 2 FROM tablelist 3 ORDER BY columnlist DESC 

    松手函数和计量

    函数 功能 作用类型
    COUNT() 计数 任意类型
    SUM() 求和 数字类数据
    AVG() 平均值 数字类数据
    MAX() 最大值 数字类数据
    MIN() 最小值 数字类数据
    AS 重命名 不适用

    例如:

    SELECT COUNT/SUM/AVG/MAX/MIN(列名) AS 新的列名,函数2,函数3,... FROM 表名;
    会将函数的结果作为新的列的值。
    

    五、排序函数

    5.1 增多排序

    SELECT columnlist
    FROM tablelist
    ORDER BY columnlist
    

    暗中同意是升序,ASC,因而,下边等价于:

    SELECT columnlist
    FROM tablelist
    ORDER BY columnlist ASC
    

    5.3 依照多列

    1 SELECT 
    2 FirstName,
    3 LastName
    4 FROM Customers
    5 ORDER BY LastName, FirstName
    

    在意:列的顺序很爱戴,首先根据LastName排序,然后遵照FirstName排序。

    5.3 依据多列

    1 SELECT 
    2 FirstName,
    3 LastName
    4 FROM Customers
    5 ORDER BY LastName, FirstName
    

    只顾:列的依次很关键,首先依据LastName排序,然后遵照FirstName排序。

    子查询

    mysql> SELECT 所查列名,函数()
        -> FROM 表名 
        -> WHERE 所查列名 IN 
        -> (SELECT 相关列名 FROM 相关表名 WHERE 限制条件);
    

    管理多个表且管理结果来自三个表时使用子查询,子查询能够扩多数层。

    5.1 增添排序

    1
    2
    3
    SELECT columnlist
    FROM tablelist
    ORDER BY columnlist

    暗中同意是升序,ASC,由此,上边等价于:

    1
    2
    3
    SELECT columnlist
    FROM tablelist
    ORDER BY columnlist ASC

     

    5.2 降序

    使用DESC关键字:

    SELECT columnlist
    FROM tablelist
    ORDER BY columnlist DESC
    

    5.4 依据计算字段

    1 SELECT LastName ',' FirstName AS 'Name'
    2 FROM Customers
    3 ORDER BY Name
    

    从而,从此刻能够掌握,列别名不得以用在WHERE中,但足以用在O君越DESportage BY中。
    例子

    1 SELECT FirstName,LastName
    2 FROM Customers
    3 ORDER BY LastName FirstName AS 'Name'
    

    5.4 依据计算字段

    1 SELECT LastName ',' FirstName AS 'Name'
    2 FROM Customers
    3 ORDER BY Name
    

    所以,从此时能够了然,列别名不得以用在WHERE中,但能够用在O科雷傲DECR-V BY中。
    例子

    1 SELECT FirstName,LastName
    2 FROM Customers
    3 ORDER BY LastName FirstName AS 'Name'
    

    连日来查询

    mysql> SELECT 列名1,列名2,...
        -> FROM 表名1,表名2
        -> WHERE 表名1.列名1 = 表名2.列名2;
    

    mysql> SELECT 列名1,列名2,...
        -> FROM 表名1 JOIN 表名2
        -> ON 表名1.列名1 = 表名2.列名2;
    

    利用连接查询呈现四个表中的数据。

    5.2 降序

    使用DESC关键字:

    1
    2
    3
    SELECT columnlist
    FROM tablelist
    ORDER BY columnlist DESC

     

    5.3 根据多列

    SELECT 
    FirstName,
    LastName
    FROM Customers
    ORDER BY LastName, FirstName
    

    只顾:列的逐条很首要,首先根据LastName排序,然后依照FirstName排序。

    5.5 排序补充内容

    当数码升序时,出现顺序是之类:

    NULL->数字->字符
    只顾:此时,该列中的数字其实是依据字符来算的,由此,升序时,23也是排在5以前的。

    5.5 排序补充内容

    当数码升序时,出现顺序是之类:

    NULL->数字->字符
    注意:此时,该列中的数字其实是根据字符来算的,由此,升序时,23也是排在5在此之前的。

    剔除数据库

    mysql-> DROP DATABASE 数据库名;
    

    5.3 遵照多列

    1
    2
    3
    4
    5
    SELECT 
    FirstName,
    LastName
    FROM Customers
    ORDER BY LastName, FirstName

    注意:列的依次很重要,首先依照LastName排序,然后依照FirstName排序。

    5.4 依据测算字段

    SELECT LastName ',' FirstName AS 'Name'
    FROM Customers
    ORDER BY Name
    

    之所以,从此刻能够知晓,列小名不能够用在WHERE中,但足以用在O大切诺基DE福睿斯 BY中。
    例子

    SELECT FirstName,LastName
    FROM Customers
    ORDER BY LastName FirstName AS 'Name'
    

    六、基于列的逻辑-CASE

    六、基于列的逻辑-CASE

    重命名数据表

    mysql-> RENAME TABLE 原数据表名 TO 新数据表名;
    

    mysql-> ALTER TABLE 原数据表名 RENAME 新数据表名;
    

    mysql-> ALTER TABLE 原数据表名 RENAME TO 新数据表名;
    

    5.4 依据测算字段

    1
    2
    3
    SELECT LastName ',' FirstName AS 'Name'
    FROM Customers
    ORDER BY Name

    为此,从此时能够清楚,列别名不可以用在WHERE中,但足以用在O科雷傲DE奇骏 BY中。
    例子

    1
    2
    3
    SELECT FirstName,LastName
    FROM Customers
    ORDER BY LastName FirstName AS 'Name'

     

    5.5 排序补充内容

    当数码升序时,出现顺序是之类:

    NULL->数字->字符
    在意:此时,该列中的数字其实是遵照字符来算的,因而,升序时,23也是排在5事先的。

    6.1 IF-THEN-ELSE逻辑

    富含列和CASE表达式的SELECT语句,差没有多少如下:

    1 SELECT 
    2 column1,
    3 column2,
    4 CaseExpression
    5 FROM table
    

    6.1 IF-THEN-ELSE逻辑

    带有列和CASE表达式的SELECT语句,大概如下:

    1 SELECT 
    2 column1,
    3 column2,
    4 CaseExpression
    5 FROM table
    

    剔除数据表

    mysql-> DROP TABLE 数据表名;
    

    5.5 排序补充内容

    当数码升序时,出现顺序是之类:

    NULL->数字->字符
    在意:此时,该列中的数字其实是鲁人持竿字符来算的,由此,升序时,23也是排在5事先的。

    六、基于列的逻辑-CASE

    6.2 CASE-轻便格式

    1 SELECT 
    2 CASE ColumnOrExpression
    3 WHEN value1 THEN result1
    4 WHEN value2 THEN result2
    5 (repeat WHEN-THEN any number of times)
    6 [ELSE  DefaultResult]
    7 END
    

    CASE表明式对于把不佳理解的值转变来有含义的叙述是很有用的。

    1 SELECT 
    2 CASE CategoryCode
    3 WHEN 'F' THEN 'Fruit'
    4 WHEN 'V' THEN 'Vegetable'
    5 ELSE 'other'
    6 END AS 'Category',
    7 ProductDescription As 'Description'
    8 FROM Products
    

    6.2 CASE-轻便格式

    1 SELECT 
    2 CASE ColumnOrExpression
    3 WHEN value1 THEN result1
    4 WHEN value2 THEN result2
    5 (repeat WHEN-THEN any number of times)
    6 [ELSE  DefaultResult]
    7 END
    

    CASE表明式对于把不好精通的值调换到有含义的叙说是很有用的。

    1 SELECT 
    2 CASE CategoryCode
    3 WHEN 'F' THEN 'Fruit'
    4 WHEN 'V' THEN 'Vegetable'
    5 ELSE 'other'
    6 END AS 'Category',
    7 ProductDescription As 'Description'
    8 FROM Products
    

    在表中增加列

    mysql-> ALTER TABLE 数据表名
         -> ADD COLUMN 新增列名 数据类型(数据长度) 约束
         -> 插入的位置;
    

    mysql-> ALTER TABLE 数据表名
         -> ADD 新增列名 数据类型(数据长度) 约束
         -> 插入的位置;
    

    陈设的地方:

    新增列默认放在表的最右边,使用 FIRST 将新列插入到第一列,使用 AFTER 指定列名 将新列插入到指定列后面。
    

    六、基于列的逻辑-CASE

    6.1 IF-THEN-ELSE逻辑

    带有列和CASE表明式的SELECT语句,大概如下:

    SELECT 
    column1,
    column2,
    CaseExpression
    FROM table
    

    6.3 CASE-查询格式

    1 SELECT 
    2 CASE 
    3 WHEN condition1 THEN result1
    4 WHEN condition2 THEN result2
    5 (repeat WHEN-THEN any number of times)
    6 [ELSE  DefaultResult]
    7 END
    

    这种格式允许在根本字WHEN前边放置较为复杂的标准表明式。

    有关难点:

    • StackOverFlow-SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported

    6.3 CASE-查询格式

    1 SELECT 
    2 CASE 
    3 WHEN condition1 THEN result1
    4 WHEN condition2 THEN result2
    5 (repeat WHEN-THEN any number of times)
    6 [ELSE  DefaultResult]
    7 END
    

    这种格式允许在主要字WHEN后面放置较为复杂的尺度表明式。

    相关主题素材:

    • StackOverFlow-SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported

    删除列

    mysql-> ALTER TABLE 表名
         -> DROP COLUMN 列名;
    

    mysql-> ALTER TABLE 表名
         -> DROP 列名;
    

    6.1 IF-THEN-ELSE逻辑

    含有列和CASE表明式的SELECT语句,大约如下:

    1
    2
    3
    4
    5
    SELECT 
    column1,
    column2,
    CaseExpression
    FROM table

     

    6.2 CASE-轻便格式

    SELECT 
    CASE ColumnOrExpression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    (repeat WHEN-THEN any number of times)
    [ELSE  DefaultResult]
    END
    

    CASE表达式对于把不佳明白的值调换到有含义的叙述是很有用的。

    SELECT 
    CASE CategoryCode
    WHEN 'F' THEN 'Fruit'
    WHEN 'V' THEN 'Vegetable'
    ELSE 'other'
    END AS 'Category',
    ProductDescription As 'Description'
    FROM Products
    

    七、基于行的逻辑

    七、基于行的逻辑

    修改列

    mysql-> ALTER TABLE 表名
         -> CHANGE 原列名 新列名 数据类型(数据长度) 约束;
    

    数据类型不可省略。修改数据类型可能导致数据丢失,慎用

    6.2 CASE-轻松格式

    1
    2
    3
    4
    5
    6
    7
    SELECT 
    CASE ColumnOrExpression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    (repeat WHEN-THEN any number of times)
    [ELSE  DefaultResult]
    END

    CASE表达式对于把糟糕通晓的值调换到有意义的叙述是很有用的。

    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    CASE CategoryCode
    WHEN 'F' THEN 'Fruit'
    WHEN 'V' THEN 'Vegetable'
    ELSE 'other'
    END AS 'Category',
    ProductDescription As 'Description'
    FROM Products

     

    6.3 CASE-查询格式

    SELECT 
    CASE 
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    (repeat WHEN-THEN any number of times)
    [ELSE  DefaultResult]
    END
    

    这种格式允许在事关心珍视大字WHEN前边放置较为复杂的尺码表达式。

    SQL基础语法笔记教程整理,MySQL常用操作。连锁主题素材:

    • StackOverFlow-SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported

    7.1 应用查询条件

    归根结底派到WHERE出场了,注意写法顺序,再写三遍:

    1 Select -1>选择列,-2>distinct,-3>top
    2   1>…From 表
    3   2>…Where 条件
    4   3>…Group by 列
    5   4>…Having 筛选条件
    6   6>…Order by 列
    

    7.1 应用查询条件

    好不轻松派到WHERE出场了,注意写法顺序,再写二次:

    1 Select -1>选择列,-2>distinct,-3>top
    2   1>…From 表
    3   2>…Where 条件
    4   3>…Group by 列
    5   4>…Having 筛选条件
    6   6>…Order by 列
    

    修改数据类型

    mysql-> ALTER TABLE 表名
         -> MODIFY 列名 新数据类型;
    

    6.3 CASE-查询格式

    1
    2
    3
    4
    5
    6
    7
    SELECT 
    CASE 
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    (repeat WHEN-THEN any number of times)
    [ELSE  DefaultResult]
    END

    这种格式允许在重大字WHEN前面放置较为复杂的基准表明式。

    连带主题素材:

    • StackOverFlow-SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported

    七、基于行的逻辑

    7.2 限制行-TOP

     1 SELECT 2 TOP Number 3 Columnlist 4 FROM table 

    7.2 限制行-TOP

     1 SELECT 2 TOP Number 3 Columnlist 4 FROM table 

    修改表中某些值

    mysql-> UPDATE 表名
         -> SET 列名a=新值a,列名b=新值b,...
         -> WHERE 条件;
    

    一定要加限制条件!

    七、基于行的逻辑

    7.1 应用查询条件

    好不轻巧派到WHERE出场了,注意写法顺序,再写三回:

    Select -1>选择列,-2>distinct,-3>top
      1>…From 表
      2>…Where 条件
      3>…Group by 列
      4>…Having 筛选条件
      6>…Order by 列
    

    7.3 TOP和ORDER BY结合

    首要字TOP的另贰个用场是,把它和O途睿欧DER BY子句结合起来,基于特定分类,获得带有最大值的终将数额的行。

    假让你想看看Shakespeare所著的销量最多的书。

    SELECT 
    TOP1
    Title AS 'Book Title',
    CurrentMonthSales AS 'Quantuty Sold'
    FROM Books
    WHERE Author='Shakespeare'
    ORDER BY CurrentMonthSales DESC

     

    ps: 学会利用google找出,比方,笔者想要知道oracle中近乎top功能的要害字是什么,能够:

    新葡亰496net 9

    7.3 TOP和ORDER BY结合

    主要字TOP的另三个用处是,把它和ORAV4DER BY子句结合起来,基于特定分类,得到带有最大值的早晚数额的行。

    若果你想见到Shakespeare所著的销量最多的书。

    SELECT 
    TOP1
    Title AS 'Book Title',
    CurrentMonthSales AS 'Quantuty Sold'
    FROM Books
    WHERE Author='Shakespeare'
    ORDER BY CurrentMonthSales DESC

     

    ps: 学会利用google找寻,比如,作者想要知道oracle中好像top成效的主要字是怎么,能够:

    新葡亰496net 10

    去除某行记录

    mysql-> DELETE FROM 表名
         -> WHERE 条件;
    

    早晚要加限制条件!

    7.1 应用查询条件

    到头来派到WHERE出场了,注意写法顺序,再写二回:

    1
    2
    3
    4
    5
    6
    Select -1>选择列,-2>distinct,-3>top
      1>…From 表
      2>…Where 条件
      3>…Group by 列
      4>…Having 筛选条件
      6>…Order by 列

     

    7.2 限制行-TOP

    SELECT 
    TOP Number 
    Columnlist
    FROM table
    

    八、布尔逻辑

    关键字:AND/OR/NOT/BETWEEN/IN/IS/NULL

    八、布尔逻辑

    关键字:AND/OR/NOT/BETWEEN/IN/IS/NULL

    为某列创建目录

    mysql-> ALTER TABLE 表名
         -> ADD INDEX 索引名 (列名);
    

    mysql-> CREATE INDEX 索引名
         -> ON 表名 (列名);
    

    7.2 限制行-TOP

    1
    2
    3
    4
    SELECT 
    TOP Number 
    Columnlist
    FROM table

    7.3 TOP和ORDER BY结合

    首要字TOP的另一个用处是,把它和O帕杰罗DER BY子句结合起来,基于特定分类,获得带有最大值的必然数量的行。

    假设你想见见Shakespeare所著的销量最多的书。

    SELECT 
    TOP1
    Title AS 'Book Title',
    CurrentMonthSales AS 'Quantuty Sold'
    FROM Books
    WHERE Author='Shakespeare'
    ORDER BY CurrentMonthSales DESC
    

    ps: 学会利用google搜索,比方,小编想要知道oracle中临近top效率的重要性字是怎么,能够:

    新葡亰496net 11

    8.1 OR

    OCR-V子句意味着,固然鲜明自由条件为真,那么就该选中该行。

    1 SELECT userid,name,phone
    2 FROM users
    3 WHERE age<18
    4 OR age>60
    

    8.1 OR

    OOdyssey子句意味着,要是显著自由条件为真,那么就该选中该行。

    1 SELECT userid,name,phone
    2 FROM users
    3 WHERE age<18
    4 OR age>60
    

    来得某表的目录

    mysql-> SHOW INDEX FROM 表名;
    

    7.3 TOP和ORDER BY结合

    关键字TOP的另贰个用途是,把它和O奇骏DER BY子句结合起来,基于特定分类,获得带有最大值的无所适从数量的行。

    一旦你想看到Shakespeare所著的销量最多的书。

    1
    2
    3
    4
    5
    6
    7
    SELECT 
    TOP1
    Title AS 'Book Title',
    CurrentMonthSales AS 'Quantuty Sold'
    FROM Books
    WHERE Author='Shakespeare'
    ORDER BY CurrentMonthSales DESC

     

    ps: 学会利用google寻觅,比如,小编想要知道oracle中好像top功能的要紧字是什么,能够:
    新葡亰496net 12

    八、布尔逻辑

    关键字:AND/OR/NOT/BETWEEN/IN/IS/NULL

    8.2 使用圆括号

    1 SELECT CustomerName,
    2 Sate,
    3 QuantityPurchased
    4 FROM Orders
    5 WHERE State ='IL'
    6 OR State='CA'
    7 AND QuantityPurchased>8
    

    本来想要的结果是对来自IL可能CA的客户,同偶然候,只看数量超越8的订单。不过地点实行的结果不是这么的,因为,SQL总是会先拍卖AND操作符!!!然后才会管理O路虎极光操作符。所以,上述语句中,先来看AND并施行如下的基准

     1 State= 'CA' 2 AND QuantityPurchased>8 

    故此,要用括号来规定相继:

    1 SELECT CustomerName,
    2 Sate,
    3 QuantityPurchased
    4 FROM Orders
    5 WHERE (State ='IL'
    6 OR State='CA')
    7 AND QuantityPurchased>8
    

    8.2 使用圆括号

    1 SELECT CustomerName,
    2 Sate,
    3 QuantityPurchased
    4 FROM Orders
    5 WHERE State ='IL'
    6 OR State='CA'
    7 AND QuantityPurchased>8
    

    本来想要的结果是对来源IL可能CA的客户,同偶然候,只看数据超越8的订单。不过上边施行的结果不是这么的,因为,SQL总是会先管理AND操作符!!!然后才会管理OEscort操作符。所以,上述语句中,先看到AND并实践如下的标准

     1 State= 'CA' 2 AND QuantityPurchased>8 

    之所以,要用括号来明确相继:

    1 SELECT CustomerName,
    2 Sate,
    3 QuantityPurchased
    4 FROM Orders
    5 WHERE (State ='IL'
    6 OR State='CA')
    7 AND QuantityPurchased>8
    

    创建视图(一种虚拟存在的表)

    mysql-> CREATE VIEW 视图名(列名1,列名2,...)
         -> AS SELECT 目标列名a,目标列名b,...
         -> FROM 表名;
    

    在SELECT中使用子查询或延续查询可以将视图创立在多张表上。

    八、布尔逻辑

    关键字:AND/OR/NOT/BETWEEN/IN/IS/NULL

    8.1 OR

    OLX570子句意味着,要是明确自由条件为真,那么就该选中该行。

    SELECT userid,name,phone
    FROM users
    WHERE age<18
    OR age>60
    

    8.3 NOT操作符

    NOT操作符表示对前面包车型大巴原委否定只怕取反。

    1 SELECT CustomerName,State
    2 FROM Orders
    3 WHERE NOT (State='IL' OR Sate='NY')
    

    那一个其实能够用AND改写的!!!
    NOT操作符在逻辑上不是必须的。

    8.3 NOT操作符

    NOT操作符表示对前边的剧情否定或许取反。

    1 SELECT CustomerName,State
    2 FROM Orders
    3 WHERE NOT (State='IL' OR Sate='NY')
    

    这一个其实可以用AND改写的!!!
    NOT操作符在逻辑上不是必须的。

    导入(将文件中的数据保存进表)

    mysql-> LOAD DATA INFILE '文件路径'
         -> INTO TABLE 表名;
    

    8.1 OR

    OCRUISER子句意味着,假如确定自由条件为真,那么就该选中该行。

    1
    2
    3
    4
    SELECT userid,name,phone
    FROM users
    WHERE age<18
    OR age>60

     

    8.2 使用圆括号

    SELECT CustomerName,
    Sate,
    QuantityPurchased
    FROM Orders
    WHERE State ='IL'
    OR State='CA'
    AND QuantityPurchased>8
    

    道理当然是那样的想要的结果是对来源IL大概CA的客户,同不常间,只看数据超过8的订单。然则地方实践的结果不是如此的,因为,SQL总是会先管理AND操作符!!!然后才会处理OENVISION操作符。所以,上述语句中,先看看AND并实施如下的基准

    State= 'CA'
    AND QuantityPurchased>8
    

    由此,要用括号来明确相继:

    SELECT CustomerName,
    Sate,
    QuantityPurchased
    FROM Orders
    WHERE (State ='IL'
    OR State='CA')
    AND QuantityPurchased>8
    

    8.4 BETWEEN操作符

    1 SELECT CustomerName,
    2 Sate,
    3 QuantityPurchased
    4 FROM Orders
    5 WHERE QuantityPurchased BETWEEN 8 AND 10
    

    8.4 BETWEEN操作符

    1 SELECT CustomerName,
    2 Sate,
    3 QuantityPurchased
    4 FROM Orders
    5 WHERE QuantityPurchased BETWEEN 8 AND 10
    

    导出(将表中数据保存到文件中)

    mysql-> SELECT 列名1,列名2,...
         -> INTO OUTFILE '文件路径'
         -> FROM 表名;
    

    8.2 使用圆括号

    1
    2
    3
    4
    5
    6
    7
    SELECT CustomerName,
    Sate,
    QuantityPurchased
    FROM Orders
    WHERE State ='IL'
    OR State='CA'
    AND QuantityPurchased>8

    自然想要的结果是对来源IL恐怕CA的客户,同期,只看数据超越8的订单。不过地点实施的结果不是那样的,因为,SQL总是会先管理AND操作符!!!然后才会管理O奥迪Q7操作符。所以,上述语句中,先看看AND并实践如下的原则

    1
    2
    State= 'CA'
    AND QuantityPurchased>8

     

    为此,要用括号来鲜明相继:

    1
    2
    3
    4
    5
    6
    7
    SELECT CustomerName,
    Sate,
    QuantityPurchased
    FROM Orders
    WHERE (State ='IL'
    OR State='CA')
    AND QuantityPurchased>8

     

    8.3 NOT操作符

    NOT操作符表示对后边的内容否定也许取反。

    SELECT CustomerName,State
    FROM Orders
    WHERE NOT (State='IL' OR Sate='NY')
    

    这一个其实能够用AND改写的!!!
    NOT操作符在逻辑上不是必须的。

    8.5 IN操作符

    倘诺你想看到IL或然NY的行:

    1 SELECT *
    2 FROM Orders
    3 WHERE State='IL'
    4 OR State='CA'
    

    能够改写成:

    1 SELECT *
    2 FROM Orders
    3 WHERE State IN ('IL','CA')
    

    8.5 IN操作符

    一经你想看看IL恐怕NY的行:

    1 SELECT *
    2 FROM Orders
    3 WHERE State='IL'
    4 OR State='CA'
    

    能够改写成:

    1 SELECT *
    2 FROM Orders
    3 WHERE State IN ('IL','CA')
    

    备份整个数据库

    $ mysqldump -u root 数据库名 > 备份文件名
    

    8.3 NOT操作符

    NOT操作符表示对前面包车型地铁剧情否定可能取反。

    1
    2
    3
    SELECT CustomerName,State
    FROM Orders
    WHERE NOT (State='IL' OR Sate='NY')

     

    以此实际能够用AND改写的!!!
    NOT操作符在逻辑上不是必须的。

    8.4 BETWEEN操作符

    SELECT CustomerName,
    Sate,
    QuantityPurchased
    FROM Orders
    WHERE QuantityPurchased BETWEEN 8 AND 10
    

    8.9 布尔逻辑-IS NULL

    为了将某字段NULL值的行或0的行李包裹蕴进来:

    1 SELECT *
    2 FROM Products
    3 WHERE weight=0
    4 OR weight IS NULL
    

    或者

    1 SELECT *
    2 FROM Products
    3 WHERE ISNULL(weight,0)=0
    

    8.9 布尔逻辑-IS NULL

    为了将某字段NULL值的行或0的行李包裹蕴进来:

    1 SELECT *
    2 FROM Products
    3 WHERE weight=0
    4 OR weight IS NULL
    

    或者

    1 SELECT *
    2 FROM Products
    3 WHERE ISNULL(weight,0)=0
    

    备份整个表

    $ mysqldump -u root 数据库名 数据表名 > 备份文件名
    

    8.4 BETWEEN操作符

    1
    2
    3
    4
    5
    SELECT CustomerName,
    Sate,
    QuantityPurchased
    FROM Orders
    WHERE QuantityPurchased BETWEEN 8 AND 10

    8.5 IN操作符

    假诺你想看看IL或然NY的行:

    SELECT *
    FROM Orders
    WHERE State='IL'
    OR State='CA'
    

    能够改写成:

    SELECT *
    FROM Orders
    WHERE State IN ('IL','CA')
    

    九、模糊相称

    九、模糊相称

    还原数据库

    mysql-> source 文件路径/备份文件名;
    # 注意:需要先使用USE命令选择数据库之后才能使用SOURCE命令
    

    mysql-> CREATE DATABASE 新建数据库名;
    mysql-> quit/exit;
    $ mysql -u root 新建的数据库名 < 备份文件名;
    

    8.5 IN操作符

    一旦你想见见IL恐怕NY的行:

    1
    2
    3
    4
    SELECT *
    FROM Orders
    WHERE State='IL'
    OR State='CA'

     

    能够改写成:

    1
    2
    3
    SELECT *
    FROM Orders
    WHERE State IN ('IL','CA')

     

    8.9 布尔逻辑-IS NULL

    为了将某字段NULL值的行或0的行李包裹含进去:

    SELECT *
    FROM Products
    WHERE weight=0
    OR weight IS NULL
    

    或者

    SELECT *
    FROM Products
    WHERE ISNULL(weight,0)=0
    

    9.1 LIKE和%搭配

    %通配符能够象征大肆的字符,它能够象征0个,1个,任性八个字符。

    9.1 LIKE和%搭配

    %通配符能够代表大肆的字符,它能够代表0个,1个,任性多少个字符。

    正则表明式

    • 用关键字REGEXP来同盟正则表达式
    • 正则表明式都要采取括起
    • REGEXP的重回值

      • 0 代表不相配
      • 1 表示十一分
    • 使用.在正则表明式中相称任性贰个字符

    • ???LIKE和REGEXP所相称的一些(列值、列名)

    • v3.23.4随后,MySQL中正则表达式暗中同意不区分轻重缓急写

    • 要差距轻重缓急写,必要在REGEXP之后、表明式在此之前加BINAXC90Y关键字

    • 找寻多少个字符串之一

      • 使用|将四个字符串分隔离
      • 借使满足个中三个字符串就能够回到结果
    • 招来四个字符中的二个字符

      • 使用[]将四个字符括起
      • 只要相称字符集中的一个字符就能够回到结果
      • ‘[1a2b]’等同于’[1|a|2|b]’
      • 使用[SQL基础语法笔记教程整理,MySQL常用操作。0-9]相配0到9以内的随机数字,可自定义范围
      • 使用[a-z]相称a到z之间的任意字母,可自定义范围
      • 在集中的始发处(在[]内部)放置^标记表示否认,将会相称除字符聚集的字符以外的字符
    • ‘[1|2|3] sth.’ 将会相称1 sht.或2 sth.或3 sth.

    • ‘1|2|3 sth.’ 将会相称1或2或3 sth.

    • MySQL中的正则表明式使用双反斜杠()来表示转义

    • 大部DBMS中利用反斜杠()表示转义,但MySQL须要选用双反斜杠()表示转义

    8.9 布尔逻辑-IS NULL

    为了将某字段NULL值的行或0的行包蕴进去:

    1
    2
    3
    4
    SELECT *
    FROM Products
    WHERE weight=0
    OR weight IS NULL

     

    或者

    1
    2
    3
    SELECT *
    FROM Products
    WHERE ISNULL(weight,0)=0

     

    九、模糊相配

    9.2 通配符

    除了%以外,还会有下划线(_)、方括号起来的characterlist,以及用方括号括起来的脱字符号(^)加上characterlist。

    • 下划线表示贰个字符
    • [characterlist]意味着括号中字符的即兴三个
    • [^characterlist]意味着无法是括号中字符的妄动三个
      例子:
    1 SELECT 
    2 FirstName,
    3 LastName
    4 FROM Actors
    5 WHERE FirstName LIKE '[CM]ARY'
    

    检索以C也许M开头并以A奥迪Q5Y结尾的有所行。

    9.2 通配符

    除了%以外,还只怕有下划线(_)、方括号起来的characterlist,以及用方括号括起来的脱字符号(^)加上characterlist。

    • 下划线表示二个字符
    • [characterlist]意味着括号中字符的任性一个
    • [^characterlist]意味着无法是括号中字符的随意三个
      例子:

      1 SELECT 2 FirstName, 3 LastName 4 FROM Actors 5 WHERE FirstName LIKE '[CM]ARY'

    追寻以C可能M起初并以A本田UR-VY结尾的兼具行。

    空白元字符

    元字符 说明
    f 换页
    n 换行
    r 回车
    t 水平制表
    v 垂直制表

    九、模糊相称

    9.1 LIKE和%搭配

    %通配符能够代表任性的字符,它能够表示0个,1个,跋扈多个字符。

    9.3 依据读音相称

    SOUNDEX和DIFFERENCE

    9.3 依据读音相配

    SOUNDEX和DIFFERENCE

    字符类(预约义字符集)

    字符类 说明
    [:alnum:] 任意字符和数字(同[a-zA-Z0-9])
    [:alpha:] 任意字符(同[a-zA-Z])
    [:blank:] 空格和水平制表(同[t])
    [:cntrl:] ASCII控制字符(ASCII 0到31和127)
    [:digit:] 任意数字(同[0-9])
    [:graph:] 与[:print:]相同,但不包含空格
    [:lower:] 任意小写字母(同[a-z])
    [:print:] 任意可打印字符
    [:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
    [:space:] 包括空格在内的任意空白字符(同[fnrtv])
    [:upper:] 任意大写字母(同[A-Z])
    [:xdigit:] 任意十六进制数(同[a-fA-F0-9])

    9.1 LIKE和%搭配

    %通配符能够代表任性的字符,它能够表示0个,1个,放肆几个字符。

    9.2 通配符

    除了%以外,还应该有下划线(_)、方括号起来的characterlist,以及用方括号括起来的脱字符号(^)加上characterlist。

    • 下划线表示多少个字符
    • [characterlist]代表括号中字符的妄动三个
    • [^characterlist]表示不能是括号中字符的任性三个
      例子:
    SELECT 
    FirstName,
    LastName
    FROM Actors
    WHERE FirstName LIKE '[CM]ARY'
    

    查找以C或然M初阶并以AEscortY结尾的具有行。

    十、汇总的数量据

    十、汇总量据

    相配七个实例

    重复元字符 说明
    * 0个或多个匹配
    1个或多个匹配(同{1,})
    ? 0个或1个匹配(同{0,1)
    {n} 指定数目的匹配
    {n,} 不少于指定数目的匹配
    {n,m} 匹配数目的范围(m不超过255)

    重新元字符对它前边的字符或表明式生效

    9.2 通配符

    除了%以外,还会有下划线(_)、方括号起来的characterlist,以及用方括号括起来的脱字符号(^)加上characterlist。

    • 下划线表示叁个字符
    • [characterlist]意味着括号中字符的随机叁个
    • [^characterlist]意味着不可能是括号中字符的任意贰个
      例子:
      1
      2
      3
      4
      5
      SELECT 
      FirstName,
      LastName
      FROM Actors
      WHERE FirstName LIKE '[CM]ARY'

    探求以C可能M开端并以A瑞虎Y结尾的富有行。

    9.3 遵照读音匹配

    SOUNDEX和DIFFERENCE

    10.1消除重复

    使用DISTINCT

     1 SELECT DISTINCE name,age 2 FROM users 

    只要age不相同,固然name同样,那么这一行就不会被删除重复。

    10.1拔除重复

    使用DISTINCT

     1 SELECT DISTINCE name,age 2 FROM users 

    假若age分歧,固然name一样,那么这一行就不会被剔除重复。

    一定元字符

    定位元字符 说明
    ^ 只匹配文本的开始处
    $ 只匹配文本的结尾处
    [[:<:]] 只匹配词的开始处
    [[:>:]] 只匹配词的结尾处

    一向元字符对它前边的字符或表明式生效

    9.3 依照读音相称

    SOUNDEX和DIFFERENCE

    十、汇总的数量据

    10.2 聚合函数

    COUNTSUMAVGMINMAX,他们提供了对分组数据实行计数、求和、取平均值、取最小值和最大值等方法。

    1 SELECT 
    2 AVG(Grade) AS 'Average Quiz Score'
    3 MIN(Grade) AS 'Minimum Quiz Score'
    4 FROM Grades
    5 WHERE GradeType='Quiz'
    

    10.2 聚合函数

    COUNTSUMAVGMINMAX,他们提供了对分组数据实行计数、求和、取平均值、取最小值和最大值等办法。

    1 SELECT 
    2 AVG(Grade) AS 'Average Quiz Score'
    3 MIN(Grade) AS 'Minimum Quiz Score'
    4 FROM Grades
    5 WHERE GradeType='Quiz'
    

    拼接字段

    • 在 SELECT 之后、FROM 此前使用 Concat()函数拼接字段(列)
    • 快要查询并拼接的八个列名和任何要插入的字符(例如括号等)作为 Concat()的参数
    • 次第参数之间接选举择逗号分隔

    • 多数DBMS使用 || 只怕 来兑现拼接,但MySQL使用 Concat()函数

    • 在拓展SQL语句转变时索要专注这一分别

    • MySQL函数能够嵌套使用

    • 采纳 Trim()函数来去除查询结果中两边的具备空格

    • 选用 LTrim()函数来去除查询结果中上手的享有空格

    • 动用 RTrim()函数来去除查询结果中右侧的持有空格
    • 新葡亰496net,函数参数为要搜索的列名

    十、汇总的数量据

    10.1免除重复

    使用DISTINCT

    SELECT DISTINCE name,age
    FROM users
    

    万一age差异,即使name一样,那么这一行就不会被删除重复。

    COUNT函数能够有3中差异措施选用它。

    1.COUNT函数足以用来回到全数选中央银行的多少,而不管任何特定列的值。
    比方:上边语句重回GradeType为’HomeWork’的全体行的数码:

    1 SELECT 
    2 COUNT(*) AS 'Count of Homework Rows'
    3 FROM Grades
    4 WHERE GradeType='HomeWork'
    

    这种方式,会计数全体行的个数,就算在这之中有*NULL**。

    2.次之种方法钦命具体的列

    1 SELECT 
    2 COUNT(Grades) AS 'Count of Homework Rows'
    3 FROM Grades
    4 WHERE GradeType='HomeWork'
    

    先是种格局赶回3,这一种方法赶回2,为何???因为,这种办法要知足Grades这一列有值,NULL值的行不会计数。

    3.应用主要字DISTINCT。

    1 SELECT 
    2 COUNT(DISTINCT FeeType) AS 'Number of Fee Types'
    3 FROM Fees
    

    那条语句计数了FeeType列唯一值的个数。

    COUNT函数能够有3中分裂方法利用它。

    1.COUNT函数能够用来回到全部选中央银行的数额,而不管任何特定列的值。
    例如说:下边语句再次回到GradeType为’HomeWork’的全数行的数量:

    1 SELECT 
    2 COUNT(*) AS 'Count of Homework Rows'
    3 FROM Grades
    4 WHERE GradeType='HomeWork'
    

    这种办法,会计数全数行的个数,尽管在那之中有*NULL**。

    2.次之种艺术钦点具体的列

    1 SELECT 
    2 COUNT(Grades) AS 'Count of Homework Rows'
    3 FROM Grades
    4 WHERE GradeType='HomeWork'
    

    率先种办法赶回3,这一种艺术赶回2,为啥???因为,这种措施要满足Grades这一列有值,NULL值的行不会计数。

    3.使用主要字DISTINCT。

    1 SELECT 
    2 COUNT(DISTINCT FeeType) AS 'Number of Fee Types'
    3 FROM Fees
    

    那条语句计数了FeeType列唯一值的个数。

    别名(alias)

      使用 AS 关键字创建别名
      AS 可以放在 FROM 之前或者之后
      别名可以用于为列名重命名
      AS关键字只对它前面的一个列名起作用
    

    10.1革除重复

    使用DISTINCT

    1
    2
    SELECT DISTINCE name,age
    FROM users

     

    借使age区别,就算name同样,那么这一行就不会被去除重复。

    10.2 聚合函数

    COUNTSUMAVGMINMAX,他们提供了对分组数据开始展览计数、求和、取平均值、取最小值和最大值等格局。

    SELECT 
    AVG(Grade) AS 'Average Quiz Score'
    MIN(Grade) AS 'Minimum Quiz Score'
    FROM Grades
    WHERE GradeType='Quiz'
    

    10.3 分组数据-GROUP BY

    1 SELECT
    2 GradeType AS 'Grade Type',
    3 AVG(Grade)AS 'Average Grade'
    4 FROM Grades
    5 GROUP BY GradeType
    6 ORDER BY GradeType
    

    深感像EXCEL中的分类聚焦效率。
    若果想把Grade为NULL值的当做0,那么能够用:

    1 SELECT
    2 GradeType AS 'Grade Type',
    3 AVG(ISNULL(Grade,0))AS 'Average Grade'
    4 FROM Grades
    5 GROUP BY GradeType
    6 ORDER BY GradeType
    
    • GROUP BY子句中的列的次第是不曾意义的;
    • OTiggoDESportage BY子句中的列的逐一是有含义的。

    10.3 分组数据-GROUP BY

    1 SELECT
    2 GradeType AS 'Grade Type',
    3 AVG(Grade)AS 'Average Grade'
    4 FROM Grades
    5 GROUP BY GradeType
    6 ORDER BY GradeType
    

    感到像EXCEL中的分类集中功能。
    举个例子想把Grade为NULL值的当做0,那么能够用:

    1 SELECT
    2 GradeType AS 'Grade Type',
    3 AVG(ISNULL(Grade,0))AS 'Average Grade'
    4 FROM Grades
    5 GROUP BY GradeType
    6 ORDER BY GradeType
    
    • GROUP BY子句中的列的各样是平昔不意义的;
    • OKoleosDE奥迪Q5 BY子句中的列的次第是有含义的。

    MySQL算数操作符

    操作符 说明
    -
    *
    /

    能够行使圆括号分别运算优先顺序

    10.2 聚合函数

    COUNTSUMAVGMINMAX,他们提供了对分组数据举办计数、求和、取平均值、取最小值和最大值等方式。

    1
    2
    3
    4
    5
    SELECT 
    AVG(Grade) AS 'Average Quiz Score'
    MIN(Grade) AS 'Minimum Quiz Score'
    FROM Grades
    WHERE GradeType='Quiz'

     

    COUNT函数可以有3中分歧措施选取它。

    1.COUNT函数得以用来回到全数选中央银行的多寡,而不管任何特定列的值。
    比方说:上边语句再次回到GradeType为'HomeWork'的全数行的数码:

    SELECT 
    COUNT(*) AS 'Count of Homework Rows'
    FROM Grades
    WHERE GradeType='HomeWork'
    

    这种办法,会计数全数行的个数,就算当中有NULL*。

    2.次之种艺术内定具体的列

    SELECT 
    COUNT(Grades) AS 'Count of Homework Rows'
    FROM Grades
    WHERE GradeType='HomeWork'
    

    第一种艺术赶回3,这一种艺术赶回2,为啥???因为,这种格局要满意Grades这一列有值,NULL值的行不会计数。

    3.应用重要字DISTINCT。

    SELECT 
    COUNT(DISTINCT FeeType) AS 'Number of Fee Types'
    FROM Fees
    

    那条语句计数了FeeType列唯一值的个数。

    10.4 基于集中查询条件-HAVING

    当针对带GROUP BY的一条SELECT语句应用任何查询条件时,大家须要求问查询条件是行使于独立的行依然整个组。

    实则,WHERE子句是单独的奉行查询条件。SQL提供了一个名称叫HAVING的重中之重字,它同意对组等第使用查询条件。
    例子:
    翻开选修了项目为选修“A”,平均战表在70分以上的学生姓名,平均战绩。

    1 SELECT 
    2 Name,
    3 AVG(ISNULL(Grades,0)) AS 'Average Grades'
    4 FROM Grades
    5 WHERE GradeType='A'
    6 GROUP BY Name
    7 HAVING AVG(ISNULL(Grades,0))>70
    8 ORDER BY Name
    

    修要修类型为A,那么,那是那对行的询问,因而这里要用WHERE。
    不过,还要筛选平均战绩,那么,那是三个平均值,建设构造在聚合函数上的,并不是独立的行,那就供给用到注重字HAVING。须要先将Student分组,然后把询问结果使用到基于全组的二个集中总结上。

    WHERE只保障大家选拔了GradeType是A的行,HAVING保险平均成绩至少70分以上。

    瞩目:固然想要在结果中加多GradeType的值,如果直白在SELECT前边增多那么些列,将会出错。那是因为,全部列都必供给么出现在GROUP BY中,要么包括在二个聚合函数中。

    1 SELECT 
    2 Name,
    3 GradeType,
    4 AVG(ISNULL(Grades,0)) AS 'Average Grades'
    5 FROM Grades
    6 WHERE GradeType='A'
    7 GROUP BY Name,GradeType
    8 HAVING AVG(ISNULL(Grades,0))>70
    9 ORDER BY Name
    

    10.4 基于集中查询条件-HAVING

    当针对带GROUP BY的一条SELECT语句应用任何查询条件时,大家不能够不要问查询条件是使用于独立的行照旧整个组。

    实质上,WHERE子句是独立的实践查询条件。SQL提供了一个名称叫HAVING的重视字,它同意对组等第使用查询条件。
    例子:
    翻看选修了档案的次序为选修“A”,平均成绩在70分以上的学生姓名,平均战表。

    1 SELECT 
    2 Name,
    3 AVG(ISNULL(Grades,0)) AS 'Average Grades'
    4 FROM Grades
    5 WHERE GradeType='A'
    6 GROUP BY Name
    7 HAVING AVG(ISNULL(Grades,0))>70
    8 ORDER BY Name
    

    修要修类型为A,那么,这是那对行的查询,因而这里要用WHERE。
    而是,还要筛选平均成绩,那么,那是一个平均值,构建在聚合函数上的,并不是独立的行,那就需求用到着重字HAVING。要求先将Student分组,然后把询问结果使用到基于全组的贰个凑合总括上。

    WHERE只保障大家选择了GradeType是A的行,HAVING保险平均战绩至少70分以上。

    在意:若是想要在结果中增加GradeType的值,倘诺直白在SELECT前面加多这么些列,将会出错。那是因为,全数列都必需求么出现在GROUP BY中,要么包括在七个聚合函数中。

    1 SELECT 
    2 Name,
    3 GradeType,
    4 AVG(ISNULL(Grades,0)) AS 'Average Grades'
    5 FROM Grades
    6 WHERE GradeType='A'
    7 GROUP BY Name,GradeType
    8 HAVING AVG(ISNULL(Grades,0))>70
    9 ORDER BY Name
    

    SELECT测试

    • MySQL中SELECT语句可以大致FROM子句直接待上访问和拍卖表明式,以便试验

    COUNT函数能够有3中不一样方法采取它。

    1.COUNT函数可以用来回到全数选中央银行的数据,而不管任何特定列的值。
    举例说:上面语句重回GradeType为’HomeWork’的全数行的数额:

    1
    2
    3
    4
    SELECT 
    COUNT(*) AS 'Count of Homework Rows'
    FROM Grades
    WHERE GradeType='HomeWork'

     

    这种办法,会计数全数行的个数,尽管当中有*NULL**。

    2.次之种艺术钦定具体的列

    1
    2
    3
    4
    SELECT 
    COUNT(Grades) AS 'Count of Homework Rows'
    FROM Grades
    WHERE GradeType='HomeWork'

     

    第一种艺术赶回3,这一种艺术赶回2,为啥???因为,这种格局要满足Grades这一列有值,NULL值的行不会计数。

    3.施用首要字DISTINCT。

    1
    2
    3
    SELECT 
    COUNT(DISTINCT FeeType) AS 'Number of Fee Types'
    FROM Fees

     

    那条语句计数了FeeType列唯一值的个数。

    10.3 分组数据-GROUP BY

    SELECT
    GradeType AS 'Grade Type',
    AVG(Grade)AS 'Average Grade'
    FROM Grades
    GROUP BY GradeType
    ORDER BY GradeType
    

    认为像EXCEL中的分类聚焦功效。
    假诺想把Grade为NULL值的当做0,那么可以用:

    SELECT
    GradeType AS 'Grade Type',
    AVG(ISNULL(Grade,0))AS 'Average Grade'
    FROM Grades
    GROUP BY GradeType
    ORDER BY GradeType
    
    • GROUP BY子句中的列的逐条是绝非意思的;
    • OOdysseyDE奇骏 BY子句中的列的次第是有意义的。

    十一、组合表

    十一、组合表

    SQL函数

    • 函数的移植性不及SQL语句,分裂DBMS之间函数差别很大
    • 在选择函数时应当做好代码注释,以便以往的改造职业

    10.3 分组数据-GROUP BY

    1
    2
    3
    4
    5
    6
    SELECT
    GradeType AS 'Grade Type',
    AVG(Grade)AS 'Average Grade'
    FROM Grades
    GROUP BY GradeType
    ORDER BY GradeType

    以为像EXCEL中的分类集中功效。
    万一想把Grade为NULL值的当做0,那么能够用:

    1
    2
    3
    4
    5
    6
    SELECT
    GradeType AS 'Grade Type',
    AVG(ISNULL(Grade,0))AS 'Average Grade'
    FROM Grades
    GROUP BY GradeType
    ORDER BY GradeType

     

    • GROUP BY子句中的列的顺序是不曾意思的;
    • O福睿斯DE凯雷德 BY子句中的列的一一是有含义的。

    10.4 基于集中查询条件-HAVING

    当针对带GROUP BY的一条SELECT语句应用任何查询条件时,大家必要求问查询条件是选用于独立的行照旧整个组。

    实则,WHERE子句是单独的进行查询条件。SQL提供了多少个名字为HAVING的严重性字,它同意对组等第使用查询条件。
    例子:
    翻开选修了档案的次序为选修“A”,平均成绩在70分以上的学生姓名,平均战表。

    SELECT 
    Name,
    AVG(ISNULL(Grades,0)) AS 'Average Grades'
    FROM Grades
    WHERE GradeType='A'
    GROUP BY Name
    HAVING AVG(ISNULL(Grades,0))>70
    ORDER BY Name
    

    修要修类型为A,那么,那是这对行的查询,因而这里要用WHERE。
    只是,还要筛选平均成绩,那么,那是一个平均值,建构在聚合函数上的,并不是独立的行,那就必要用到珍视字HAVING。须要先将Student分组,然后把询问结果使用到基于全组的叁个聚众总括上。

    WHERE只保险大家选拔了GradeType是A的行,HAVING保险平均成绩至少70分以上。

    专注:固然想要在结果中增加GradeType的值,假设直白在SELECT后面增添这几个列,将会出错。那是因为,全体列都必供给么出现在GROUP BY中,要么包罗在三个聚合函数中。

    SELECT 
    Name,
    GradeType,
    AVG(ISNULL(Grades,0)) AS 'Average Grades'
    FROM Grades
    WHERE GradeType='A'
    GROUP BY Name,GradeType
    HAVING AVG(ISNULL(Grades,0))>70
    ORDER BY Name
    

    11.1 内连接来组合表-Inner Join

    因此书中的描述,作者深感内一而再更疑似用来将主键表、外键表连接起来的工具。
    例如:
    A表:

    userid name age
    1 michael 26
    2 hhh 25
    3 xiang 20

    B表:

    orderid userid num price
    1 1 2 3
    2 2 6 6
    3 1 5 5

    如上表格,那么要连接这多少个表格,查询订单1的客户姓名,年龄,订单号:
    方式一:

    1 SELECT name,age,orderid
    2 FROM A,B
    3 WHERE A.userid=B.userid
    4 AND orderid=1
    

    措施二,使用今后的内连接完结:

    1 SELECT name,age,orderid
    2 FROM A
    3 INNER JOIN B
    4 ON A.userid=B.userid
    5 AND orderid=1
    

    ON关键字内定四个表怎么着标准的连接。

    内连接中表的各种:FROM 子句内定了A表,INNELacrosse JOIN 子句钦命B表,大家交换A,B顺序,所收获的结果一样的!只是呈现列的相继只怕会不一致而已。

    不提出采取格局一的格式。关键字INNEENCORE JOIN ON的独到之处在于呈现地球表面示了连接的逻辑,那是它们唯一的用处。WEHERE的意思相当不足分明。因为它是规范的意思啊,不是连接的!

    11.1 内接连来整合表-Inner Join

    透过书中的描述,小编深感内接连更疑似用来将主键表、外键表连接起来的工具。
    例如:
    A表:

    userid name age
    1 michael 26
    2 hhh 25
    3 xiang 20

    B表:

    orderid userid num price
    1 1 2 3
    2 2 6 6
    3 1 5 5

    如上表格,那么要三番五次这多少个表格,查询订单1的客户姓名,年龄,订单号:
    方式一:

    1 SELECT name,age,orderid
    2 FROM A,B
    3 WHERE A.userid=B.userid
    4 AND orderid=1
    

    主意二,使用今后的内接连落成:

    1 SELECT name,age,orderid
    2 FROM A
    3 INNER JOIN B
    4 ON A.userid=B.userid
    5 AND orderid=1
    

    ON关键字钦定三个表如何精确的连接。

    内接连中表的次第:FROM 子句内定了A表,INNE锐界 JOIN 子句内定B表,大家沟通A,B顺序,所收获的结果一致的!只是展现列的种种大概会不一致而已。

    不建议选择办法一的格式。关键字INNECRUISER JOIN ON的独到之处在于展现地意味着了连年的逻辑,那是它们唯一的用途。WEHERE的意义非常不足明显。因为它是标准的意味啊,不是连接的!

    常用的文本管理函数

    函数 说明
    Left() 返回串左边的字符
    Length() 返回串的长度
    Locate() 找出串的一个子串
    Lower() 将串转换为小写
    LTrim() 去掉串左边的空格
    Rigit() 返回串右边的字符
    RTrim() 去掉串右边的空格
    Soundex() 返回串的SOUNDEX值
    SubString() 返回子串的字符
    Upper() 将串转换为大写

    Soundex是将文本串转变为描述其语音表示的假名数字形式的算法,使得能够对串进行声张比较而不是字母相比
    诸如寻觅发音类似 Lie 的子串:

    mysql> SELECT 列名
           FROM 表名
           WHERE Soundex(列名)=Soundex('Lie');
    

    该寻觅能够相配到发音与 Lie 类似的 Lee 、 Li 等

    10.4 基于聚焦查询条件-HAVING

    当针对带GROUP BY的一条SELECT语句应用任何查询条件时,大家不可能不要问查询条件是运用于独立的行仍旧整个组。

    其实,WHERE子句是独自的施行查询条件。SQL提供了二个名称为HAVING的第一字,它同意对组品级使用查询条件。
    例子:
    查看选修了种类为选修“A”,平均战绩在70分以上的学习者姓名,平均成绩。

    1
    2
    3
    4
    5
    6
    7
    8
    SELECT 
    Name,
    AVG(ISNULL(Grades,0)) AS 'Average Grades'
    FROM Grades
    WHERE GradeType='A'
    GROUP BY Name
    HAVING AVG(ISNULL(Grades,0))>70
    ORDER BY Name

     

    修要修类型为A,那么,那是那对行的询问,因而这里要用WHERE。
    然则,还要筛选平均成绩,那么,那是一个平均值,塑造在聚合函数上的,并不是单独的行,那就要求用到根本字HAVING。须要先将Student分组,然后把询问结果运用到基于全组的七个聚焦总结上。

    WHERE只保障大家挑选了GradeType是A的行,HAVING保险平均战绩至少70分以上。

    瞩目:倘使想要在结果中加多GradeType的值,假诺直接在SELECT前边增多那么些列,将会出错。那是因为,全体列都必供给么出现在GROUP BY中,要么包罗在多个聚合函数中。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT 
    Name,
    GradeType,
    AVG(ISNULL(Grades,0)) AS 'Average Grades'
    FROM Grades
    WHERE GradeType='A'
    GROUP BY Name,GradeType
    HAVING AVG(ISNULL(Grades,0))>70
    ORDER BY Name

     

    十一、组合表

    11.2 外连接

    外连接分为左连接(LEFT OUTE陆风X8 JOIN)、右连接(福睿斯IGHT OUTERJOIN)、全连接(FULL OUTESportage JOIN)。

    OUTEKuga是足以省略的。

    11.2 外连接

    外连接分为左连接(LEFT OUTE宝马X3 JOIN)、右连接(福特ExplorerIGHT OUTE汉兰达JOIN)、全连接(FULL OUTELAND JOIN)。

    OUTEWrangler是足以归纳的。

    日子和岁月管理函数

    函数 说明
    AddDate() 增加一个日期(天、周等)
    AddTime() 增加一个时间(时、分等)
    CurDate() 返回当前日期
    CurTime() 返回当前时间
    Date() 返回日期时间的日期部分 v4.1.1
    DateDiff() 计算两个日期之差
    Date_Add() 高度灵活的日期计算函数?
    Date_Format() 返回一个格式化的日期或时间串
    Day() 返回一个日期的天数部分
    DayOfWeek() 返回一个日期对应的星期
    Hour() 返回一个时间的小时部分
    Minute() 返回一个时间的分钟部分
    Now() 返回当前日期时间
    Second() 返回一个时间的秒部分
    Time() 返回一个日期的时间部分 v4.1.1
    Year() 返回一个日期的年份部分

    MySQL日期格式使用 yyyy-mm-dd 格式
    查究日期时应当使用Date()函数,直接比不小概检查测试不到结果
    MySQL会将00-69管理为3000-2069,将70-99拍卖为一九七〇-1997,为幸免歧义,使用专门的学业格式

    十一、组合表

    11.1 内连接来构成表-Inner Join

    userid name age
    1 michael 26
    2 hhh 25
    3 xiang 20

    因而书中的描述,笔者感到内连接更疑似用来将主键表、外键表连接起来的工具。
    例如:
    A表:

    userid name age
    1 michael 26
    2 hhh 25
    3 xiang 20
    orderid userid num price
    1 1 2 3
    2 2 6 6
    3 1 5 5

    B表:

    orderid userid num price
    1 1 2 3
    2 2 6 6
    3 1 5 5

    如上表格,那么要三番五次那三个表格,查询订单1的客户姓名,年龄,订单号:
    方式一:

    SELECT name,age,orderid
    FROM A,B
    WHERE A.userid=B.userid
    AND orderid=1
    

    方法二,使用今后的内连接达成:

    SELECT name,age,orderid
    FROM A
    INNER JOIN B
    ON A.userid=B.userid
    AND orderid=1
    

    ON关键字钦命多个表如何正确的接连。

    内连接中表的逐条:FROM 子句钦赐了A表,INNE途乐 JOIN 子句钦命B表,我们交流A,B顺序,所获得的结果一样的!只是显示列的逐一可能会分化而已。

    不提议使用格局一的格式。关键字INNE普拉多 JOIN ON的优点在于显示地球表面示了连接的逻辑,那是它们唯一的用途。WEHERE的意思非常不够醒目。因为它是规则的乐趣啊,不是几次三番的!

    左连接(LEFT JOIN)

    1 SELECT name,age,orderid
    2 FROM A
    3 LEFT JOIN B
    4 ON A.userid=B.userid
    5 AND orderid=1
    

    外接连的无敌之处在于,主表中的数据确定都会保留,从表中列未有值的情景,用NULL补充。

    LEFT JOIN 左侧的表为主表,左侧的表为从表。

    左连接(LEFT JOIN)

    1 SELECT name,age,orderid
    2 FROM A
    3 LEFT JOIN B
    4 ON A.userid=B.userid
    5 AND orderid=1
    

    外接连的精锐之处在于,主表中的数据一定都会保留,从表中列未有值的情况,用NULL补充。

    LEFT JOIN 右边的表为主表,左侧的表为从表。

    数值管理函数

    函数 说明
    Abs() 返回一个数的绝对值
    Cos() 返回一个角度的余弦
    Exp() 返回一个数的指数值
    Mod() 返回除操作的余数
    Pi() 返回圆周率
    Rand() 返回一个随机数
    Sin() 返回一个角度的正弦
    Sqrt() 返回一个数的平方根
    Tan() 返回一个角度的正切

    11.1 内一而再来构成表-Inner Join

    通过书中的描述,小编倍感内延续更疑似用来将主键表、外键表连接起来的工具。
    例如:
    A表:

    userid name age
    1 michael 26
    2 hhh 25
    3 xiang 20

    B表:

    orderid userid num price
    1 1 2 3
    2 2 6 6
    3 1 5 5

    如上表格,那么要延续那七个表格,查询订单1的客户姓名,年龄,订单号:
    方式一:

    1
    2
    3
    4
    SELECT name,age,orderid
    FROM A,B
    WHERE A.userid=B.userid
    AND orderid=1

     

    艺术二,使用现在的内三番五次完成:

    1
    2
    3
    4
    5
    SELECT name,age,orderid
    FROM A
    INNER JOIN B
    ON A.userid=B.userid
    AND orderid=1

     

    ON关键字钦赐八个表如何正确的连天。

    内三番五次中表的相继:FROM 子句钦定了A表,INNE帕Jero JOIN 子句钦定B表,大家交换A,B顺序,所收获的结果一律的!只是显得列的依次只怕会分化而已。

    不建议使用方法一的格式。关键字INNELacrosse JOIN ON的独到之处在于展现地代表了延续的逻辑,那是它们唯一的用途。WEHERE的含义相当不够显然。因为它是原则的情致啊,不是连接的!

    11.2 外连接

    外连接分为左连接(LEFT OUTE卡宴 JOIN)、右连接(GL450IGHT OUTEKoleosJOIN)、全连接(FULL OUTE福特Explorer JOIN)。

    OUTE普拉多是能够大致的。

    11.3 自连接

    自连接一定用到表的别称。

    1 SELECT A.name,B.name as ManagerName
    2 FROM worker as A
    3 LEFT JOIN worker as B
    4 ON A.managerid=B.id
    

    11.3 自连接

    自连接一定用到表的别称。

    1 SELECT A.name,B.name as ManagerName
    2 FROM worker as A
    3 LEFT JOIN worker as B
    4 ON A.managerid=B.id
    

    SQL集中函数

    函数 说明
    AVG() 返回某列的平均值
    COUNT() 返回某行的平均值
    MAX() 返回某列的最大值
    MIN() 返回某列的最小值
    SUM() 返回某列之和
    • 在四个列上进行总计

      • 选取专门的工作的算术操作符,全部的集中函数都足以用来进行多少个列上的乘除
      • 将列名和算术操作符组成的算数表明式作为函数参数,不要增加逗号、引号等
    • NULL处理

      • AVG() 函数忽略值为 NULL 的行
      • COUNT(*) 不忽略值为 NULL 的行
      • COUNT(列名) 忽略值为 NULL 的行
      • MAX() 函数忽略值为 NULL 的行
      • MIN() 函数忽略值为 NULL 的行
      • SUM() 函数忽略值为 NULL 的行
    • AVG()函数

      • AVG() 只好用来规定特定数值列的平均值
      • 列名必须作为参数给出
      • 为了取得四个列的平均值,必须使用八个AVG()函数
    • COUNT()函数

      • 使用 COUNT(*) 对表中央银行的多少进行总计,不忽视 NULL 值
      • 利用 COUNT(列名) 对一定列的行开始展览计数,忽略 NULL 值
    • MAX()/MIN()函数

      • 可以拍卖非数值数据
    • 聚拢不一致的值,忽略重复值

      • 在会集函数参数的第几人增添 DISTINCT 只对两样的值实行估测计算
      • v5.0.3及以上
      • DISTINCT 后必须跟有列名,不能用于计算照旧说明式
      • COUNT(*) 不可能使用 DISTINCT
      • 将 DISTINCT 用于 MAX()/MIN() 函数没有实际意义
    • 结缘集中函数

      • SELECT 语句能够依附需求包蕴八个聚众函数
      • 每种聚集函数之间用逗号分隔

    11.2 外连接

    外连接分为左连接(LEFT OUTEHaval JOIN)、右连接(奥迪Q3IGHT OUTE酷威JOIN)、全连接(FULL OUTE讴歌RDX JOIN)。

    OUTELAND是能够轻松的。

    左连接(LEFT JOIN)

    SELECT name,age,orderid
    FROM A
    LEFT JOIN B
    ON A.userid=B.userid
    AND orderid=1
    

    外接连的雄强之处在于,主表中的数据一定都会保留,从表中列未有值的景色,用NULL补充。

    LEFT JOIN 右侧的表为主表,左边的表为从表。

    11.4 创设视图

     1 CREATE VIEW ViewName AS 2 SelectStatement 3 [WITH CHECK OPTION] 

    视图中无法包罗O讴歌MDXDE科雷傲 BY子句。

    [WITH CHECK OPTION]代表对视图实行UPDATE,INSERT,DELETE操作时任然保障了视图定义时的准绳表明式。

    除去视图:

     1 DROP VIEW ViewName 

    修改视图:

     1 ALTER VIEW ViewName AS 2 SelectStatement 

    11.4 创设视图

     1 CREATE VIEW ViewName AS 2 SelectStatement 3 [WITH CHECK OPTION] 

    视图中无法包罗O奥德赛DERubicon BY子句。

    [WITH CHECK OPTION]表示对视图举办UPDATE,INSERT,DELETE操作时任然保障了视图定义时的规则表明式。

    去除视图:

     1 DROP VIEW ViewName 

    修改视图:

     1 ALTER VIEW ViewName AS 2 SelectStatement 

    分组数据

    GROUP BY 子句提示MySQL分组数据,然后对各类组而不是整整结果集进行联谊。

    应用GROUP BY的有个别分明:

      GROUP BY 子句可以包好任意数目的列,这使得能够对分组进行嵌套
      如果在 GROUP BY 中嵌套了分组,数据将在最后规定的分组上进行汇总,即在建立分组时,指定的所有列都一起计算,不能从个别的列取回数据。
      GROUP BY 子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在 SELECT 中使用表达式,则必须在 GROUP BY 子句中使用相同的表达式。不能使用别名。
      除聚集计算语句外,SELECT 语句中的每个列都必须在 GROUP BY 子句中给出。
      如果分组列具有 NULL 值,则 NULL 作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
      GROUP BY子句必须出现在 WHERE 子句之后、ORDER BY 子句之前。
    

    使用 ROLLUP 使用 WITH ROLLUP 关键字,能够赢得各类分组以及各样分组聚焦等第(针对各样分组)的值。

    左连接(LEFT JOIN)

    1
    2
    3
    4
    5
    SELECT name,age,orderid
    FROM A
    LEFT JOIN B
    ON A.userid=B.userid
    AND orderid=1

    外接连的强大之处在于,主表中的数据显著都会保留,从表中列未有值的情事,用NULL补充。

    LEFT JOIN 右边的表为主表,左边的表为从表。

    11.3 自连接

    自连接一定用到表的小名。

    SELECT A.name,B.name as ManagerName
    FROM worker as A
    LEFT JOIN worker as B
    ON A.managerid=B.id
    

    视图的亮点

    视图的优点

    1. 简化用户的操作
    2. 使用户以严格对待同一数据
    3. 对重构数据库提供了自然程度的逻辑独立性
    4. 对秘密数据提供安全保安

    WHERE 和 HAVING

    • WHERE 过滤行,HAVING 过滤分组。WHERE 中从未分组的定义
    • HAVING 协理具备 WHERE 操作符
    • WHERE 在数码分组前举办过滤,HAVING 在数额分组后开展过滤

    11.3 自连接

    自连接一定用到表的外号。

    1
    2
    3
    4
    SELECT A.name,B.name as ManagerName
    FROM worker as A
    LEFT JOIN worker as B
    ON A.managerid=B.id

     

    11.4 创立视图

    CREATE VIEW ViewName AS
    SelectStatement
    [WITH CHECK OPTION]
    

    视图中不能包涵OTiggoDE大切诺基 BY子句。

    [WITH CHECK OPTION]代表对视图进行UPDATE,INSERT,DELETE操作时任然有限支持了视图定义时的尺码表达式。

    删去视图:

    DROP VIEW ViewName
    

    修改视图:

    ALTER VIEW ViewName AS
    SelectStatement
    

    十二、补充

    十二、补充

    GROUP BY 和 ORDER BY

    ORDER BY GROUP BY
    排序产生的输出 分组行,但输出可能不是分组的数据
    任意列都可以使用(甚至非选择的列) 只能使用选择的列或表达式,而且必须使用每个选择列表达式
    不一定需要 如果与聚集函数一起使用列(或表达式),则必须使用

    貌似在行使 GROUP BY 子句时,应该也付出 OCRUISERDECRUISER BY 子句,那是保险数据正确排序的无与伦比办法。

    11.4 创制视图

    1
    2
    3
    CREATE VIEW ViewName AS
    SelectStatement
    [WITH CHECK OPTION]

    视图中不可能包括OPRADODEOdyssey BY子句。

    [WITH CHECK OPTION]意味着对视图举办UPDATE,INSERT,DELETE操作时任然保险了视图定义时的口径表明式。

    删除视图:

    1
    DROP VIEW ViewName

     

    修改视图:

    1
    2
    ALTER VIEW ViewName AS
    SelectStatement

     

    视图的亮点

    1. 简化用户的操作
    2. 使用户以严密对待同一数据
    3. 对重构数据库提供了迟早程度的逻辑独立性
    4. 对秘密数据提供安全保卫安全

    12.1 子查询

    能够用3种关键的格局来钦赐子查询,总计如下:

    • 当子查询是tablelist的一局地时,它钦命了三个数据源。
    • 当子查询是condition的一某些时,它产生查询条件的一有的。
    • 当子查询是columnlist的一部分时,它创设了贰个单个的测算的列。

    12.1 子查询

    能够用3种关键的办法来钦点子查询,总括如下:

    • 当子查询是tablelist的一有的时,它内定了八个数据源。
    • 当子查询是condition的一部分时,它产生查询条件的一有些。
    • 当子查询是columnlist的一片段时,它成立了一个单个的测算的列。

    SELECT子句顺序

    子句 说明 是否必须使用
    SELECT 要返回的列或表达式
    FROM 从中检索数据的表 仅在从表选择数据时使用
    WHERE 行级过滤
    GROUP BY 分组说明 尽在按组计算聚集时使用
    HAVING 组级过滤
    ORDER BY 输出排序顺序
    LIMIT 要检索的行数

    视图的亮点

    1. 简化用户的操作
    2. 使用户以严密对待同一数据
    3. 对重构数据库提供了迟早水平的逻辑独立性
    4. 对神秘数据提供安全保卫安全

    十二、补充

    12.2 索引

    目录是一种物理结构,可感觉数据库表中任性的列增加索引。

    目录的指标是,当SQL语句中包括该列的是偶,能够加速数据的检索。

    目录的缺点是,在数据库中,索引供给越来越多的仓库储存硬盘。另多个负面因素是,索引常常会降低相关的列数据更新速度。那是因为,任哪天候插入恐怕修改一行记录时,索引都必须再度总结该列中的值的不错的排列顺序。

    能够对自由的列实行索引,不过只可以钦赐三个列作为主键。内定二个列作为主键意味着两件事情:首先这么些列成为了索引,其次保证那列包罗唯一的值。

     1 CREATE INDEX Index2 2 ON MyTable (ColumnFour) 

    剔除贰个索引:

     1 DROP INDX Index2 2 ON MyTable 

    12.2 索引

    目录是一种物理构造,能够为数据库表中任性的列增多索引。

    目录的目标是,当SQL语句中含有该列的是偶,能够加速数据的研究。

    目录的短处是,在数据库中,索引供给更加的多的存款和储蓄硬盘。另一个负面因素是,索引经常会降低相关的列数据更新速度。那是因为,任哪天候插入恐怕涂改一行记录时,索引都不可能不另行总计该列中的值的科学的排列顺序。

    能够对自由的列进行索引,可是只可以钦赐三个列作为主键。内定贰个列作为主键意味着两件工作:首先这一个列成为了索引,其次保障那列包罗唯一的值。

     1 CREATE INDEX Index2 2 ON MyTable (ColumnFour) 

    删除二个索引:

     1 DROP INDX Index2 2 ON MyTable 

    子查询

    MySQL 4.1引入了对子查询的协助。
    查询 任何SQL语句都是查询,但此术语一般指 SELECT 语句。
    子查询 即嵌套在别的查询中的查询。

    • 在 SELECT 语句中,子查询总是从内向外管理
    • 嵌套的子查询的多寡未有限制
    • 事实上行使时出于质量的限量,不能够嵌套太多的子查询

    在 WHERE 子句中使用子查询,应该保障 SELECT 语句具有与 WHERE 一样数量的列。经常,子查询将回来单个列并且与单个列相配,但假设须求,也能够选拔多少个列。
    子查询一般与 IN 操作符结合使用,但也足以用来测试非常(=)、不对等(<>)等。

    相关子查询 涉及外国查询的子查询。

    当列名也可能有多义性的时候要利用完全限定列名来幸免歧义。

    十二、补充

    12.1 子查询

    能够用3种关键的法子来钦定子查询,计算如下:

    • 当子查询是tablelist的一局地时,它钦定了二个数据源。
    • 当子查询是condition的一有的时,它成为查询条件的一局地。
    • 当子查询是columnlist的一有些时,它创设了一个单个的图谋的列。

    参考:

    • SQL计算(一)基本查询
    • SQL Server 常用高档语法笔记
    • 史上最全的SQL Server复习笔记一

    2018-03-09    21:26:41

    转载自: 一、关系型数据库和SQL 实际上正确的讲,SQL是一门语言,而不...

    参考:

    • SQL总括(一)基本查询
    • SQL Server 常用高等语法笔记
    • 史上最全的SQL Server复习笔记一

    2018-03-09    21:26:41

    12.1 子查询

    能够用3种首要的方法来钦赐子查询,总括如下:

    • 当子查询是tablelist的一部分时,它钦点了一个数据源。
    • 当子查询是condition的一局地时,它造成查询条件的一片段。
    • 当子查询是columnlist的一有的时,它创造了多少个单个的乘除的列。

    12.2 索引

    目录是一种物理构造,可以为数据库表中大肆的列增多索引。

    目录的目标是,当SQL语句中带有该列的是偶,能够加速数据的物色。

    目录的后天不足是,在数据库中,索引需求越来越多的仓库储存硬盘。另贰个负面因素是,索引经常会下跌相关的列数据更新速度。那是因为,任何时候插入也许修改一行记录时,索引都不可能不另行总结该列中的值的不错的排列顺序。

    能够对自由的列举办索引,然而只可以钦点四个列作为主键。钦命三个列作为主键意味着两件专门的学问:首先那个列成为了索引,其次保险那列包罗唯一的值。

    CREATE INDEX Index2
    ON MyTable (ColumnFour)
    

    剔除三个目录:

    DROP INDX Index2
    ON MyTable
    

    12.2 索引

    目录是一种物理构造,可感觉数据库表中自便的列增多索引。

    目录的目标是,当SQL语句中隐含该列的是偶,能够加快数据的查找。

    目录的缺点是,在数据库中,索引须要越来越多的存款和储蓄硬盘。另叁个负面因素是,索引日常会下滑相关的列数据更新速度。那是因为,任何时候插入或然涂改一行记录时,索引都不能够不再一次计算该列中的值的科学的排列顺序。

    能够对自由的列实行索引,可是只好钦赐一个列作为主键。钦赐二个列作为主键意味着两件事情:首先那么些列成为了索引,其次有限支撑那列包括唯一的值。

    1
    2
    CREATE INDEX Index2
    ON MyTable (ColumnFour)

     

    删除三个索引:

    1
    2
    DROP INDX Index2
    ON MyTable

     

    参考:

    • SQL计算(一)基本查询
    • SQL Server 常用高档语法笔记
    • 史上最全的SQL Server复习笔记一

    1. varchar和Nvarchar区别 ↩

    2. SQL总括(一)基本查询 ↩

     

    本文由新葡亰496net发布于网络数据库,转载请注明出处:SQL基础语法笔记教程整理,MySQL常用操作

    关键词:

上一篇:采访佳句,数据库小结1

下一篇:没有了