MySQL的登陆

  1. 使用MySQL自带的客户端
    使用这种方式只适合root用户,不够灵活
  2. 使用cmd命令窗登录
mysql -h主机名 -P端口号 -u用户名 -p密码

如果是本机登录,则可以省略-h主机名 -P端口号 假如我想登录一个本机mysql数据库,用户名为root,密码为data
打开cmd命令窗,输入命令:

mysql -u root -pdata

注意-p后边直接输入密码时,-p与密码之间不能有空格。如果感觉直接输入密码不安全,可以只输入

mysql -u root -p

接着按下回车,此时就会出现一行

MySQL if里加条件 mysql if多个条件_database


此时输入密码是对外不显示的。

MySQL常见命令

  1. 查询MySQL版本:mysql --version;或者mysql --V;
  2. 查询当前都有哪些数据库:show databases;
  3. 进入指定的数据库(进入一个名字为test的数据库):use test;
  4. 查询当前数据库中都有哪些表:show tables;
  5. 当前正在访问数据库test1,但是想查询数据库test2中都有哪些表:show tables from test2;,此时并没有切换到test2库里边,仍在访问test1库。
  6. 查询当前所在数据库名称:select database();
  7. 查看表的结构:desc 表名;
  8. 查询表中的数据:select * from 表名;

对表的修改等语句在随后的blog中总结。

SQL语法规范

  1. 不区分大小写,但是建议关键字大写,表名、列名小写。
  2. 每条命令最好用分号结尾。
  3. 每条命令根据长度,可以缩进和换行。
  4. 注释:
    单行注释:#注释文字
    单行注释:-- 注释文字(注意,- -和注释文字之间一定要有空格)
    多行注释:/* 注释文字*/

SQL语言

SQL语言是关系数据库的标准语言,是数据库领域中一个主流语言,它主要由四部分组成,分别是:DQL(数据查询语言),DML(数据操纵语言),DDL(数据定义语言)和DCL(数据控制语言)。

DQL语言的学习
#基础查询

select 查询列表 from 表名 特点:
1.查询列表可以是:表中的字段、常量值、表达式、函数
2.查询的结果是一个虚拟的表格。

  1. 查询表中单个字段:select 字段名称 from 表名;
  2. 查询表中多个字段:select 字段1,字段2,字段3,... from 表名;
  3. 查询表中的所有字段:select * from 表名;

查询语句这里有个小细节:
假如我们要从表student中选出age字段,我们可以:

select age from student;

但是我们会发现有的地方代码会出现这种情况:

select `age` from student;

这里的

`

符号叫做着重号,一般可以省略不写,但是当你的字段名与关键字重复时,可以用它来区分,比如要从student表中选出name字段:

select name from student;

此时计算机可能会把name当作是关键字,从而出现错误,因此我们可以用着重号用来区分:

select `name` from student;
  1. 查询常量值:select 100;
  2. 查询表达式:select 100*100;
  3. 查询函数:select VERSION(); 最后输出的是调用函数之后的返回值。
  4. 为字段起别名 (as可以省略)
    当别名中有特殊字符时,给别名加上引号,建议是双引号。
    比如上边查询的100*100,可以写作select 100*100 as 结果; 再比如,在学生表中有姓名和性别两个字段,我们查询这两个字段:select 姓名, 性别 from 学生; 结果是:
  5. MySQL if里加条件 mysql if多个条件_数据库_02

  6. 我们可以给字段姓名换做name,性别换做gender,
    select 姓名 as name, 性别 as gender from 学生; 结果是:
  7. MySQL if里加条件 mysql if多个条件_数据库_03


  8. 去重select distinct 字段 from 表名; 比如我从表学生中选取其中的学院代号select 学院号 from 学生;
  9. MySQL if里加条件 mysql if多个条件_数据库_04

  10. 我们可以看到结果中有多少学生就会有多少条记录,其中有好多学院好重复出现,我们就可以用去重,把代码改为:
    select distinct 学院代号 from 学生
  11. MySQL if里加条件 mysql if多个条件_database_05


  12. +号的作用
    SQL语言中的 ‘+’ 号仅仅是个运算符,不能用于拼接字符串。

1.当两个操作数都为数值型,做加法运算。
2.其中一方是字符型,则尝试把字符型转化为数值型。若转化成功,做加法运算,若失败,则把字符型转化为0。
3.当其中一方是null,则结果为null。

  1. concat链接字段。
    如果想把多个字段内容连起来,作为一个字段输出,则就要用到concat函数。比如:select concat(姓名,性别) as 结果 from 学生;
  2. MySQL if里加条件 mysql if多个条件_database_06

  3. ifnull函数
    select ifnull(expr1, expr2) from 表名; 从表中选expr1的值,如果expr1的值为null,就把值替换为expr2的值。

#条件查询

select 查询列表 from 表名 where 筛选条件;

分类:

  1. 按条件表达式筛选:
    条件运算符:>, <, =, !=, <>(也是不等), >=, <=
  2. 按逻辑表达式筛选
    逻辑运算符(用于连接条件表达式): &&, ||, !, and, or, not
  3. 模糊查询
    like, between and, in, is null, is not null

1.按条件表达式查询:

查询年龄大于18岁的学生信息:
select * from 学生 where age>18; 按逻辑表达式筛选:
查询年龄在18到22之间的学生的学生姓名:
select name from 学生 where age>=18 and age<=22;

2.模糊查询:
like
查询姓张的学生信息:select * from 学生 where 姓名 like '张%'; between and (包含区间两侧)
查询学号在T02和T07之间的学生的信息:
select * from 学生 where 学号 between 'T02' and 'T07'; in (in列表中的值必须为同一类型或兼容),in不能使用通配符。
查询学院代码为100或200的学生名称:
select 姓名 from 学生 where 学院代码 in ('100','200'); 注意:字符型的值要用‘’标起来,模糊查询通常与通配符连一块使用,比如‘a%’表示以a开头,'%a%'表示字符串中包含a,'%a'表示以a结尾。

通配符:

%代表任意多个字符,包含0个字符。
_表示任意单个字符。

如果查询的关键词和通配符一样,比如,查找名字第二个字为_的学生名,就要使用转义:
select 姓名 from 学生 where 姓名 like '_\_%'; 或者指定转义字符,比如我们设定@为转义字符,就可以改为
select 姓名 from 学生 where 姓名 like '_@_%' escape '@';

补充:安全等于 <=>
<=>既可以判断null值,又可以判断普通数值。

#排序查询

select 查询列表 from 表 [Where 筛选条件] order by 排序列表[asc/desc]

asc代表升序,desc代表降序,默认asc。

order by子句可以支持单个字段、多个字段、表达式、函数、别名,一般放在查询语句最后边(limit子句除外)

查询课程名,学时,按照学时升序排序:

select 课程名,学时 from 课程 order by 学时 asc;

MySQL if里加条件 mysql if多个条件_MySQL if里加条件_07