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-数据查询语言
基础查询
语法:
select 查询的列表 from 表名;
查询列表可能是表中的字段、常量值、表达式、函数,查询的结果是虚拟的表格
别名:
SELECT name as "姓名" FROM student;
去重:
SELECT DISTINCT student_id FROM student;
+号的作用,仅仅只有一个功能:运算符,数值运算
SELECT 100+90;#做加法预算SELECT '123'+90;#结果为213SELECT 'john'+80;#结果为90#其中一方为字符型,试图将字符转为数值,如果转成功,继续加法运算,转失败,将字符转换为0#其中一方为null,结果为null
连接函数 concat(str1,str2,…)
null与任何字段拼接都为null
条件查询
语法
SELECT 查询列表 FROM tableName WHERE 查询条件;
条件运算符:
>,<,=,!=,<>,>=,<=
逻辑运算符:
&& || ! and or not
其他:
like between and in is null is not null
like使用中,通配符 %通配多个 _通配一个
ESCAPE
SELECT * FROM user WHERE username LIKE '$_nihao' ESCAPE '/';#意思就是说$之后的_不作为通配符
= != <>不能判断null
安全等于 <=> 可读性差,不建议使用
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
IFNULL(expression, alt_value)
问题:查询结果一样吗?
select * from student;select * from student where name like '%%'
不一样,第二条查不到name为null的记录
排序查询
语法
SELECT 查询列表 FROM 表 WHERE 查询条件 ORDER BY 排序查询 ASC|DESC
ORDER BY后跟字段,多字段,表达式,别名
分组查询
语法:
select 分组函数,列(分组的列)from 表 where 条件 group by 列 having 条件 order by 子句
