MySql常用命令

  • show databases; 查看当前所有的数据库
  • use database; 打开指定的数据库
  • show tables; 打开当前库里所有表
  • show tables from database; 查看database库里的所有表
  • select database(); 查看当前所在库
  • select version(); 查看数据库版本
  • create table table_name(

字段名 字段类型,
字段名 字段类型,
….
);

  • desc table_name; 查看表结构

语法规范

1.不区分大小写。但建议关键字大写,表名,列名小写
2.每条命令用分号结尾
3.每条命令可以缩进或者换行

DQL-数据查询语言

基础查询

语法:

  1. select 查询的列表 from 表名;

查询列表可能是表中的字段、常量值、表达式、函数,查询的结果是虚拟的表格
别名:

  1. SELECT name as "姓名" FROM student;

去重:

  1. SELECT DISTINCT student_id FROM student;

+号的作用,仅仅只有一个功能:运算符,数值运算

  1. SELECT 100+90;#做加法预算
  2. SELECT '123'+90;#结果为213
  3. SELECT 'john'+80;#结果为90
  4. #其中一方为字符型,试图将字符转为数值,如果转成功,继续加法运算,转失败,将字符转换为0
  5. #其中一方为null,结果为null

连接函数 concat(str1,str2,…)
null与任何字段拼接都为null

条件查询

语法

  1. SELECT 查询列表 FROM tableName WHERE 查询条件;

条件运算符:
>,<,=,!=,<>,>=,<=
逻辑运算符:
&& || ! and or not
其他:
like between and in is null is not null
like使用中,通配符 %通配多个 _通配一个
ESCAPE

  1. SELECT * FROM user WHERE username LIKE '$_nihao' ESCAPE '/';
  2. #意思就是说$之后的_不作为通配符

= != <>不能判断null
安全等于 <=> 可读性差,不建议使用

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

  1. IFNULL(expression, alt_value)

问题:查询结果一样吗?

  1. select * from student;
  2. select * from student where name like '%%'

不一样,第二条查不到name为null的记录

排序查询

语法

  1. SELECT 查询列表 FROM WHERE 查询条件 ORDER BY 排序查询 ASC|DESC

ORDER BY后跟字段,多字段,表达式,别名

分组查询

语法:

  1. select 分组函数,列(分组的列)from where 条件 group by having 条件 order by 子句