美文网首页
MySQL——语法

MySQL——语法

作者: Devil灬 | 来源:发表于2019-03-29 10:50 被阅读0次

    数据库排名:
    Oracle(关系型)
    MySQL(关系型)
    SQLServer(关系型)
    PostgreSQL(关系型)
    MongoDB(非关系数据库)
    DB2(关系型)
    Redis(非关系数据库)
    ElasticSearch(非关系数据库)

    SQL语句(结构化查询语言)

    DDL(数据定义语言):create / drop / alter
    DML(数据操作语言):insert / delete / update / select
    DCL(数据控制语言):grant / revoke
    <font size="4">前言:SQL中大小写不敏感(大写和小写是一样的); 每条SQL语句必须以分号结束</font>


    一、DDL(数据定义语言)

    主要提供数据库和表的创建、删除和修改

    1. 创建数据库
    语法 功能
    create database 数据库名; 直接创建指定数据库
    create database if not exists 数据库; 当指定数据库不存在的时候才创建数据库
    create database if not exists 数据库 default charset utf8; 创建数据库时设置字符集编码方式为utf8,让数据库支持中文数据存储
    2.删除数据库
    语法 功能
    drop database 数据库; 直接删除指定数据库
    drop database if exists 数据库; 如果指定的数据库存在就删除数据库
    3. 使用/切换数据库
    语法 功能
    use 数据库; 使用/切换指定数据库
    4. 新建表
    语法 功能
    create table if not exists 表(字段1 类型1, 字段2 类型2,...); 新建表,表名一般加前缀't'或'tb',字段名不能是关键字
    create table if not exists 表(字段1 类型1 约束1, 字段2 类型2 约束2,...); 新建表并且添加约束
    5. 删除表
    语法 功能
    drop table if exists 表; 删除指定表
    truncate table 表; 清空指定表
    6. 修改表
    语法 功能
    alter table 表 add column 字段 类型 约束; 添加列
    alter table 表 drop column 字段; 删除列

    二、DML(数据操作语言)

    主要针对数据库中数据的增、删、改、查

    1. 增
    语法 功能
    insert into 表 values(值1, 值2, 值3,...); 插入数据,依次给指定表中的字段赋值
    insert into 表(字段1, 字段2,...) values(值1, 值2,...); 插入数据,以指定顺序给指定字段赋值,可一次插入多条数据,用逗号分开

    (注)时间函数:now() - 当前时间;date(now()) - 当前日期;year(now()) - 当前年;month(now()) - 当前月

    2. 删
    语法 功能
    delete from 表; 删除指定表中所有记录
    delete from 表 where 条件语句; 删除满足条件的记录
    3. 改
    语法 功能
    update 表 set 字段1=新值1, 字段2=新值2,...; 将指定表中所有行的指定列/字段的值赋值为新值
    update 表 set 字段1=新值1, 字段2=新值2,... where 条件语句; 将表中满足条件的行中指定列/字段的值赋值为新值
    4. 查
    语法 功能
    select * from 表; 获取指定表中所有行和所有的列(所有数据)
    select 字段1,字段2,... from 表; 获取指定表中所有行指定的列
    select * from 表 where 条件; 获取指定表中所有满足条件的行所有列的数据
    select 字段1 as 新字段1, 字段2 as 新字段2,... from 表; 列重命名(as可以省略)
    select if(字段,值1,值2) from 表; (MySQL写法)查询指定字段,字段真则结果为值1,假则结果为值2
    select case 字段 when 值 then 新值1 else 新值2 end; (通用写法)查询指定字段并将结果重新赋值
    select concat(字段1,字段2,...) from 表; 对列进行合并,数字和字符串数据可合并,bit类型数据不可合并
    排序:(先按之前的任何语法进行查询再排序)
    select * from 表 order by 字段; 对查询结果按照指定字段的值进行升序排序
    select * from 表 order by 字段 asc; 对查询结果按照指定字段的值进行升序排序
    select * from 表 order by 字段 desc; 对查询结果按照指定字段的值进行降序排序
    注:多个字段排序,写在前面的优先级高
    限制:
    select * from 表 limit N; 获取查询结果的前N条记录
    select * from 表 limit M offset N; 对查询结果跳过前N条数据,取M条数据出来
    去重:
    select distinct 字段 from 表; 查询结果去重
    5. 条件语句

    在SQL中可以通过 where 条件语句,来对操作对象进行筛选

    条件语句:

    语法 功能
    = 等于
    <> 不等于
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    is/is not 判断是否等于null空时使用
    and 逻辑与运算
    or 逻辑或运算
    not 逻辑非
    in 集合中是否包含
    like 模糊查询
    % 表示0个或多个的任意字符
    _ 表示一个任意字符
    between 值1 and 值2 筛选指定字段的值在值1和值2之间
    6. 数据类型
    名称 功能
    int/tinyint(-128~127) 整数
    float(size,d)/double(size,d) 浮点数,这儿的size和d的值都有约束效果
    char(size) 定长字符
    varchar(size) 不定长字符串,size决定的是最大长度
    text 不限长度(最大是255个字符)
    bit 布尔,只有0和1两个值
    date/datetime/time 值可以是时间函数的结果,也可以是时间字符串;计算或者是比较的时候内部是按时间处理的
    7. 约束

    创建表的时候可以添加约束

    约束索引:

    语法 功能
    alter table 表 add constraint 索引 约束(字段); 添加约束,索引(自己命名),约束(支持唯一约束、主键约束和外键约束)
    alter table 表 drop index 约束索引; 删除约束

    常见约束:

    语法 功能
    not null 不为空
    default 值 设置默认值
    unique 值唯一
    primary key(字段) 主键约束(唯一记录)
    auto_increment 主键自动增长
    8. 外键

    添加外键:

    语法 功能
    alter table 表1 add constraint 索引 foreign key (字段1) references 表2 (字段2); 将表1中字段1设为外键,让其参照表2中字段2

    删除外键:

    语法 功能
    alter table 表 drop foreign key 外键索引; 先,删除外键约束
    alter table 表 drop index 外键索引; 后,删除约束的索引
    9. 聚合

    max() min() sum() avg() count()

    语法 功能
    select 聚合函数(字段) from 表 [where 条件]; [按条件]查询后将结果做相应的聚合运算
    10. 分组
    语法
    select 字段操作 from 表 [where 条件] group by(字段); 先筛选在分组
    select 字段操作 from 表 group by(字段) [having 条件]; 先分组在筛选

    where和having可同时使用
    功能:将表中[满足条件]的记录按照字段分组, 再将每个分组作为整体做聚合操作,字段操作的位置除了分组字段不用聚合,其他字段都必须聚合

    11. 子查询

    将一个查询操作的结果作为另外一个查询的数据源

    12. 连接查询
    语法 功能
    select * from 表1,表2,...where 表1表2连接条件...; 普通连接
    select * from 表1 inner join 表2 on 表1表2连接条件 inner join 表3 on 表1表3连接条件...; 内连接
    select * from 表1 left join 表2 on 表1表2连接条件...[where 条件]; 左外连接,右表值不存在则为null
    select * from 表1 right join 表2 on 表1表2连接条件...[where 条件]; 右外连接,左表值不存在则为null
    13. 字段索引

    字段索引相当于目录,作用为快速对此字段进行查找
    只针对某个查询很频繁的字段,建议添加对应索引

    语法 功能
    create index 索引 on 表 (字段); 添加索引
    alter table 表 drop index 索引; 删除索引

    三、DCL(数据控制语言)

    1. 创建用户

    create user '用户名'@'登录地址' identified by '密码';

    登录地址 作用
    localhost 数据库本机
    ip地址 指定地址
    % 任何位置

    2. 删除用户

    drop user 用户名;

    3. 授权

    语法 功能
    grant 权限类型 on 数据库.对象 to '用户'; 为指定用户添加指定数据库指定对象的指定权限
    grant 权限类型 on 数据库.对象 to '用户' with grant option; 添加权限,并且可以将自己的权限再授权给别人
    revoke 权限类型 on 数据库.对象 from 用户名; 撤销/召回权限
    权限类型 功能
    select 查看
    insert 添加
    delete 删除
    update 更新
    create 创建
    drop 删除
    alter 更改
    all privileges 所有权限

    4. 事务

    语法 功能
    begin; 开启事务环境
    commit; 事务提交
    rollback; 事务回滚

    只有begin;commit;之间的所有的sql都执行成功,才会执行commit;否则执行rollback;

    相关文章

      网友评论

          本文标题:MySQL——语法

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