1.SQL语言

1.1SQL语言分类

可操作对象 关键字
DDL
•DDL(Data Definition Language)数据定义语言
数据库,表,列等的定义 create、 drop、 alter、 truncate(清空数据记录) 等
DML★★★
•DML(Data Manipulation Language)数据操作语言
中数据记录的更新,增加和删除。 •update(更新)、insert(插入)、 delete(删除) 不包含查询
DQL★★★★★
•DQL(Data Query Language) 数据查询语言
表中记录的查询 •select
DCL
•DCL(Data Control Language)数据控制语言(了解)
设置或更改数据库用户、角色权限 如grant(设置权限),revoke(撤销权限),begin ,transaction等

2.DDL语言的使用

2.1DDL对数据库的操作

  • 创建:create database [ if not exists] 数据库名称 [ character set 字符集名称 ] ;
  • 查看
    • 查看所有数据库:show databases;
    • 查看数据库的定义信息:show create database 数据库名称;
  • 修改:alter database 数据库名称 character set 字符集;
  • 删除数据库:drop database 数据库名称;

    2.2DDL语言对表结构的部分操作

  • 创建:CREATE TABLE 表名 (字段名1 类型1, 字段名2 类型2, …);

  • 修改:
    • 为表添加字段:ALTER TABLE 表名 ADD 字段名 类型;
    • 修改表中字段的类型:ALTER TABLE 表名 MODIFY 字段名 新的类型;
    • 修改字段名:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型;
    • 删除字段:ALTER TABLE 表名 DROP 字段名;
  • 注:

    • 数据库名与表名是严格区分大小写的;列名与列的别名在所有的情况下均是忽略大小写的;
    • 整数类型:int;小数类型:double;日期类型:date;字符串类型:varchar(m)。

      3.DML语言的使用

      3.1DML语言对表数据的操作

  • 插入:

    • 插入一组数据:insert into 表名 (字段名1, 字段名2,…) values (字段值1, 字段值2,…);
    • 批量插入多组数据 : insert into 表名 values (字段值1, 字段值2,…), (字段值1, 字段值2,…),……;(注意必须是全字段而且顺序一致)
  • 修改:
    • 无条件全表更新,语法格式(开发中慎用):update 表名 set 字段名 = 新的值 , 字段名 = 新的值 , …;
    • 带条件修改:update 表名 set 字段名 = 新的值 , 字段名 = 新的值 , … where 条件;
  • 删除:

    • 无条件全表删除,语法格式(开发中慎用):delete from 表名;
    • 带条件删除:delete from 表名 where 条件;

      4.DQL语言的使用

      4.1DQL简单查询

  • 简单查询语法

    • 查询指定列数据:select 字段名1, 字段名2, … from 表名;
    • 如果要查询表所有的列也可使用匹配:select from 表名 ;
  • as别名查询(as关键字是给字段和查询结果取别名,同时as可以省略不写)
    • select 字段名 as 别名, … from 表名;
    • select 字段名 as 别名, … from 表名 as 表别名;
  • distinct去重查询
    • 查询指定列并且结果不出现重复数据,格式:select distinct 字段名,字段名,.. from 表名;
  • 查询结果参与运算

    • select 字段 [+、-、*、/、%] 其他字段或固定值 from 表名 ;
    • 将所有商品的价格+10元进行显示. (查询结果可参与运算):select * , price+10 from product;

      4.2蠕虫复制

  • 前提:查询的数据要与插入的表中的字段类型和顺序要一致;

  • 用法:

    • 创建一张和表2一样表结构的表1:create table 表1 like 表2;
    • 将表名2中的数据复制到表名1中:insert into 表名1 select * from 表名2;

      4.3DQL条件查询

  • 格式:select 字段1,字段2,…… from 表 where 条件;

  • 用法:

    • in , between and 实现范围查询:select 字段名 from 表名 where 字段 in (数据1, 数据2…) ;
    • between and 范围查询:select 字段名 from 表名 where 字段 between 值1 and 值2;
    • like 模糊查询:select * from 表名 where 字段名 like ‘通配符字符串’;

      4.4DQL查询排序

  • 格式:select 字段1,字段2,… from 表名 【where 条件】 order by 字段 [asc|desc];

  • 单列排序(使用一个字段排序):select 字段,… from 表名 【where 条件】 order by 字段名1 [asc|desc];
  • 组合排序:先按第一个字段进行排序,第一个字段相同,按第二个字段进行排序,依次类推。

    • select 字段,… from 表名 【where 条件】 order by 字段名1 [asc|desc], 字段名2 [asc|desc];

      4.5聚合函数

  • 五大聚合函数:

    • count(字段) :按照列统计行数据,如果这一列中有null的行,忽略该行;
    • sum (字段) :计算指定列的数值和,非数值类型,计算结果为0;
    • max (字段) :计算指定列的最大值;
    • min (字段) :计算指定列的最小值;
    • avg (字段) :计算指定列的平均值;
  • 语法格式:
  • select 聚合函数(字段) from 表名;

    4.6分组和分页排序

  • 分组查询语法:

    • select 字段, 聚合函数(字段) from 表 [where 条件] group by 字段 [havin分组排序g 条件];
  • 分页查询语法格式:
    • select * from 表名 where 条件 limit offset , pageSize;
    • offset :表示本页查询起始位置,0表示第一行数据;pageSize:表示要查询的记录数