2020-09-16

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

最近学习了关系型数据库方面的知识,随手整理了一些常用的SQL语句,方便大家记忆及使用。

SQL通用语法:
    1.SQL语句可以单行或多行书写,以封号(;)结尾。
    2.可使用空格和缩进来增强语句的可读性。
    3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

注释:
    单行注释:--(空格)注释内容
    多行注释:
    /*
        注释内容
    */
    
SQL分类:
    1.DDL(Data Definition Language)数据定义语言:
        用来定义数据库对象:数据库、表、列等。
        关键字:create、drop、alter等。
    2.DML(Data Mainpulation Language)数据操作语言:
        用来对数据库中表的数据进行增、删、改。
        关键字:insert、delete、update等。
    3.DQL(Data Query Language)数据查询语言:
        用来查询数据库中表的记录(数据)。
        关键字:select、where等。
    4.DCL(Data Control Language)数据控制语言:
        用来定义数据库的访问权限和安全级别,以及创建用户。
        关键字:grant、revoke等。
        
DDL(操作数据库、表):

操作数据库:
    1.创建(Create):
    创建数据库:
    create database 数据库名称;
    
    创建数据库,先判断该数据库是否存在,不存在再创建:
    create database if not exists 数据库名称;
    
    创建数据库并指定字符集:
    create database 数据库名称 character set 字符集名称;
    
    创建数据库,先判断该数据库是否存在,不存在再创建,并指定字符集:
    create database if not exists 数据库名称 character set 字符集名称;
    
    2.查询(Retrieve):
    查询所有数据库的名称:
    show databases;
    
    查询某个数据库的字符集:
    show create database 数据库名称;
    
    3.修改(Update):
    修改数据库的字符集:
    alter database 数据库名称 character set 字符集名称;
    
    4.删除(Delete):
    删除数据库:
    drop database 数据库名称;
    
    判断数据库是否存在,存在再删除:
    drop database if exists 数据库名称;
    
    5.使用数据库:
    使用数据库:
    use 数据库名称;
    
    查询当前正在使用的数据库:
    select database();
    
操作表:
    1.创建(Create):
    创建表:
    create table 表名(
        列名1  数据类型1,
        列名2  数据类型2,
        ...
        列名n  数据类型n
    );
    注意:最后一行不需要加逗号(,)。
    
    2.查询(Retrieve):
    查询某个数据库中所有的表:
    show tables;
    
    查询表结构:
    desc 表名;
    
    3.修改(Update):
    修改表名:
    alter table 表名 rename to 新的表名;
    
    修改表的字符集:
    alter table 表名 character set 字符集名称;
    
    添加一列:
    alter table 表名 add 列名  数据类型;
    
    修改列名称、类型:
    alter table 表名 change 列名 新列名 新数据类型;
    alter table 表名 modify 列名 新数据类型;
    
    删除列:
    alter table 表名 drop 列名;
    
    复制表:
    create table 表名 like 被复制的表名;
    
    4.删除(Delete):
    删除表:
    drop table 表名;
    
    删除表之前先判断该表是否存在,存在再删除:
    drop table if exists 表名;
    
DML(增、删、改表中的数据):
    
    1.添加数据:
    insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
    
    注意:
    列名和值要一一对应;
    如果表名后不定义列名,则默认给所有列添加值;
    除了数字类型,其他类型需要使用引号(单双引号都可以)引用起来。
    
    2.删除数据:
    delete from 表名 [where 条件];
    
    注意:
    如果不加条件,则删除表中所有数据;
    删除表建议用:truncate table 表名;(删除表,再创建一个一样的空表,效率更高)。
    
    3.修改数据:
    update 表名 set 列名1 = 值1,列名2 = 值2,...列名n = 值n [where 条件];
    
    注意:
    如果不加条件,则会将表中所有数据修改。
    
DQL(查询表中的记录):

    1.语法:
    select 
        字段列表
    from 
        表名列表
    where 
        条件列表
    group by
        分组字段
    having
        分组之后的条件
    order by
        排序
    limit
        分页限定
    
    2.基础查询:
    多个字段的查询:
    select 字段名1,字段名2...from 表名;
    
    查询所有字段:
    select * from 表名;
    
    去除重复:
    select distanct 字段名 from 表名;
    
    起别名:
    select 字段名 as 别名 from 表名;
    
    3.条件查询:
    select 字段列表 from 表名 where 查询条件;
    
    常用条件:
    >、<、<=、>=、=、<>(不等于)
    between...and...
    in
    like (模糊查询)
    is null
    and 或 &&
    or 或 ||
    not 或 !
    
    模糊查询中常用的占位符:
    单个任意字符:_
    多个任意字符:%
    
    4.排序查询:
    select 字段列表 from 表名 order by 子句;
    
    排序方式:
    升序:ASC(默认)
    降序:DESC
    
    注意:
    如果有多个排序条件,则当根据前面的条件判断后值一样时,才会判断第二条件。
    
    5.聚合函数(将一列数据作为一个整体,进行纵向的计算):
    count:统计个数
    max:计算最大值
    min: 计算最小值
    sum: 计算和
    avg:计算平均值
    
    语法:select 聚合函数(列名) from 表名;
    
    注意:
    聚合函数的计算,排除null值。
    
    6.分组查询:
    select 分组字段,聚合函数 from 表名 group by 分组字段;
    
    注意:
    where和having的区别:
    (1)where在分组之前进行限定,如果不满足条件则不参与分组;having在分组之后进行限定,
    如果不满足条件则不会被查询出来。
    (2)where后面不可以跟聚合函数,having可以进行聚合函数的判断。
    
    7.分页查询:
    select 字段列表 from 表名 limit 开始的索引,每页查询的条数;
    
    注意:
    开始的索引 = (当前页码 - 1) * 每页显示的条数;
    分页操作是MySQL特有的。
    
DCL(管理用户、授权):
    
管理用户:
    1.添加用户:
    create user '用户名'@'主机名' indentified by '密码';
    
    2.删除用户:
    drop user '用户名'@'主机名';
    
    3.修改用户密码:
    update user set password = password('新密码') where user = '用户名';
    
    set password for '用户名'@'主机名' = password('新密码');
    
    4.查询用户:
    (1)切换到mysql数据库
    use mysql;
    (2)查询user表:
    select * from user;
    
    注意:
    通配符%表示可以在任意主机使用用户登录数据库。
    
权限管理:
    1.查询权限:
    show grants for '用户名'@'主机名';
    
    2.授予权限:
    grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
    
    3.撤销权限:
    revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
    
    
注意:
    语法语句中的标点符号均为英文下的标点符号!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值