MySQL命令学习1 - 语法规范、常用命令启动、关键命令、条件表达式、常用内置6大类型函数

0. 语法规范

  1. 不区分大小写 - 建议:关键字大写,其他小写
  2. 每条命令需分号结尾,没遇到分号前SQL语句都没结束
  3. 注释
    3.1 单行注释:#注释 或者 --注释
    3.2 多行注释:/* 注释 */
  4. 防冲突 - 可能有时候列名跟关键字重合。故需要字符提示不是关键字
# 使用 `列名`   标明不是关键字
select `name` from book;

1. 常用命令 - 启动 - 必须掌握

  1. 查看MySQL版本号
# 登录MySQL服务器后
select version();

# 没有登录仅命令行模式
mysql --version
或
mysql -V

  1. 登录、退出
# 登录
mysql [-h 主机名 -p 端口号] -u 用户名 -p密码

# 退出
exit 或者  Ctrl + C

  1. 查看当前所有数据库
show databases;

  1. 打开指定库
use 库名;

  1. 查看当前使用库所有表
show tables;

  1. 查看表结构
desc 表名;

  1. 更改库的字符集
alter database 库名 character set 字符集

  1. 查看表中的 主键、外键、唯一键
# 列名竖向排列
show index from 表名

# 列名横向排列
show index from 表名\G

  1. 查看MySQL支持的引擎 - innodb支持事务
show engines;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wFr4eUzE-1587797038781)(en-resource://database/30648:1)]

  1. 清屏命令
# Linux中
system mysql

2. 关键命令

2.1 常量输出 - 不查询表
普通表达式使用
# 常量
SELECT 100;

SELECT '你哄啊';

# 表达式
SELECT 100%98; 

# 函数
SELECT version(); 

+号使用 - 只有算术运算功能,没有字符拼接
# 输出198
select 100+98

# 输出 98 -- 字符相加永远为0
select 'aaa' + 98

# 输出 Null
select NULL + 98

2.2 表输出格式命令
  1. 表别名
# 方式1
select 列名 as '别名' from 表名

# 方式2
select 列名  '别名' from 表名

  1. 去重 - 比较显示列拼接起来是否相同,相同则去除
select distinct 列名 from 表名

3. 条件表达式

3.0 判断NULL值

两者效果一样

select 列名 from 表名  where 列名  <=> null;

select 列名 from 表名  where 列名  is null;

3.1 简单条件运算符 - 不可用来判断NULL值
>  <   =  
!=  
<>  
>=  
<=

特殊
<=> 相当于=的作用。可用来判断null

3.2 逻辑表达式
&&  and
||     or
!      not

3.3 模糊、范围查询表达式 - 这里有专门判断NULL值表达式
like
between and 
in 
is null
is not null


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-083eWXeM-1587797038788)(en-resource://database/29124:1)]

# _ 这是关键字,需要进行转义
# 默认转义字符为 \
SELECT name FROM book WHERE name like '%\%';


# 修改转义字符
SELECT name FROM book WHERE name like '%$_%' ESCAPE '$';

4. 常用内置函数

4.1 字符函数

大小写转换、字符拼接、截取字符、寻找字符、去除头尾字符、替换字符、计算字符字节


# 大小写转换
SELECT LOWER/UPPER() FROM# 字符拼接 - 因为mysql的+号无拼接功能
SELECT CONCAT(字符, 字符, 字符......) FROM# 截取字符串 - 起始序号为1,不是0
    # 从序号为2的位置,截取到最后
    SELECT SUBSTR(, 2) FROM 表名;

    # 从序号为2的位置,截取两个字符
    SELECT SUBSTR(, 2, 2) FROM 表名;


# 找子字符在主字符的序号位置,找不到则返回0,找到则返回子字符第一个字符在主字符的位置序号,从1开始
SELECT INSTR(, '子字符') from book;


# 去除头尾指定字符,默认去除空格
    # 去字符串头尾空格
    SELECT TRIM( 列名 ) FROM# 去字符串头尾指定字符
    SELECT TRIM( 'b' from 列名 ) FROM# 替换字符
SELECT REPLACE(列名, '被替换的字符', '替换字符')  FROM;


# 输出字节长度
SELECT LENGTH( 列名 ) FROM# 填充字符
    # 左填充
    SELECT LPAD(列名, 字符串字符数,'需要左填充的字符')

    # 右填充
    SELECT RPAD(列名, 字符串字符数,'需要左填充的字符')
    
# 截取有分割符的字符
SELECT SUBSTRING_INDEX('字符串', '分隔符', 前n个字符组)


#截取字符 - 从第一个或最后一个开始截取
SELECT LEFT/RIGHT( '字符串', 截取字符个数 )

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-spuHi0aj-1587797038792)(en-resource://database/29476:1)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGxEbDl7-1587797038801)(en-resource://database/29478:1)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H32zVnei-1587797038809)(en-resource://database/29480:1)]

4.2 数学函数
# 四舍五入
SELECT ROUND( 列名, 保留小数位数 ) FROM# 取余
SELECT MOD(5,2);

# 截取小数位数
SELECT TRUNCATE(,  小数位数 ) FROM# 向上取整数  >=该数的最小整数
SELECT CEIL();

# 向下取整数   <=该数的最大整数
SELECT FLOOR(,  小数位数 );

# 0-1之间的随机小数
SELECT RAND();

4.3 日期函数

获取系统日期、时间,截取年月日时分秒、字符转日期、日期转字符、比较日期

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvOJyL9w-1587797038812)(en-resource://database/29126:1)]

# 获取系统日期+时间
SELECT NOW();

# 获取系统日期,不包时间
SELECT CURDATE()

# 获取时间,不包日期
SELECT CURTIME();

# 根据实参日期,获取年份
select year(now()) 
select year('1998-01-23')

# 根据实参日期,获取月份,前者数字,后者英文
SELECT MONTH(now());
SELECT MONTHNAME('1998-05-25');

# 根据实参日期,获取日
SELECT DAY(now());


# 根据实参日期,获取24小时制的时、分、秒
SELECT HOUR(now());
SELECT MINUTE(now());
SELECT SECOND(now());

#日期添加年、月、日
    //减日期
    SELECT DATE_SUB( 日期, INTERVAL n Year/Month/Day  )
    //添加日期
    SELECT DATE_ADD( 日期, INTERVAL n Year/Month/Day  )

# 字符串格式  转 日期格式
SELECT STR_TO_DATE('9-13-2020','%m-%d-%Y')

# 日期格式 转  指定字符格式 
SELECT DATE_FORMAT( NOW(),'%Y年%m月%d日' )
SELECT DATE_FORMAT( '2018-6-5','%Y年%m月%d日' )

4.4 其他函数
# 如果第一个参数为NULL值,则转为输出第二个参数值,否则输出原值
select IFNULL(列名, 数值) FROM;


# 判断值是否为NULL,如果是则返回1,不是则返回0
SELECT ISNULL(列名) FROM

4.5 流程控制函数

if、case语句

# if关键字 - 如果列值大于5,则输出 '大',否处输出 '小'
SELECT (列名 > 5, '大', '小') FROM book;


# case关键字
    select 其他列名,
        case 判断的字段、表达式、列名
            when 常量1 then  显示值1
            when 常量2  then  显示值2
            else   显示值3
            end as '列别名'
    from  表名;

-----------
    select 其他列名,
        case 判断的字段、表达式、列名
            when 逻辑判断 then  显示值1
            when 逻辑判断  then  显示值2
            else   显示值3
            end as '列别名'
    from  表名;

4.6 分组函数
count(*)效率
MYISA引擎下:效率最高,内部有计数器
INNODB引擎下:count(*)与count(1)差不多,比count(字段)效率高
#  忽略NULL
sum  求和
avg  平均值

max 最大值
min 最小值

# 不忽略NULL
count  计算行数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值