Mysql学习

连接命令

mysql -uroot -p123456//-u账号,-p密码

查看数据库

show databases;

创建删除数据库

create database test;
drop database test;

选择数据库

use test;

查看表

show tables;

创建删除表

创建删除表必须要在库下进行

create table test(id int,user varchar(10),password varchar(32));
drop table test(名称,类型);

查看建表的语句

show create table test;//表名

查看建库的语句

show create database test;//库名

查看表的结构

desc test;//表名

改变表的字段

alter table user change password pass varchar(45);
//alter table 表名 change 被修改的内容 	修改为		类型;

删除表的字段

alter table user drop password;

插入表的字段

alter table test add user varchar(23) after username;
alter table test add task int first;

更改表的名字

alter table test rename user_name;

md5加密后是32位字符串。

添加普通索引

alter table test add index(password);

添加唯一索引

alter table test add unique(username);

添加全文索引

alter table hahah add fulltext(username);

查看索引

show index from hahah;

查看当前表在哪个库下面

select database();

数据操作

增加数据

insert into 表名 values(1,"username","password");
insert into test(username,password) values("user",133131);//有选择的插入
insert into test(username,password) values("user",133131),("tom",2344),("Jack",133);//插入多条数据

删除数据

delete * from 表名;-- 删除表中所有数据
delect from 表名 where id=4;#根据条件删除表中的数据

修改数据

update 表名 set id=4;-- 修改id的值全部为4
update 表名 set id_1=1,id_2=3 where id=1;-- 根据条件修改表中的数据

查询数据

select * from 表名;#查看表中所有的字段
select 字段1,字段2 from 表名;#查询表中的指定字段

条件查询

select name,age from user where age>10;-- 单一条件查询
select name,age,height from user where age>78 and heught <180;-- 多条件查询 

模糊查询

[NOT] LIKE  '字符串'
  • NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。
  • 字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。
select name from user where name like 'T%';-- 查询名字是字母T开头
select name from user where name like '%T%';-- 查询名字中带有字母T

“%”是 MySQL 中最常用的通配符,它能代表任何长度的字符串,字符串的长度可以为 0。例如,a%b表示以字母 a 开头,以字母 b 结尾的任意长度的字符串。该字符串可以代表 ab、acb、accb、accrb 等字符串。匹配的字符串必须加单引号或双引号。

select name from user wher name like '__T';-- 查询名字以T结尾并且前面只有两个字母的名字

“_”只能代表单个字符,字符的长度不能为 0。例如,a_b可以代表 acb、adb、aub 等字符串。

范围查询

[NOT] BETWEEN 取值1 AND 取值2 
  • NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
  • 取值1:表示范围的起始值。
  • 取值2:表示范围的终止值。
select age from user where age between 12 and 20;-- 查询年龄在12~20之间的数据

空值查询

IS [NOT] NULL

“NOT”是可选参数,表示字段值不是空值时满足条件。

select name from user where name id null;-- 查询字段为空的数据

分组查询

GROUP BY  <字段名>

“字段名”表示需要分组的字段名称,多个字段时用逗号隔开。

数据表连接

交叉连接

SELECT <字段名> FROM <表1> CROSS JOIN <表2> [WHERE子句]
SELECT <字段名> FROM <表1>, <表2> [WHERE子句] 
  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要交叉连接的表名。
  • WHERE 子句:用来设置交叉连接的查询条件。

内连接

SELECT <字段名> FROM <表1> INNER JOIN <表2> [ON子句]
  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要内连接的表名。
  • INNER JOIN :内连接中可以省略 INNER 关键字,只用关键字 JOIN。
  • ON 子句:用来设置内连接的连接条件。

外连接

左连接
SELECT <字段名> FROM <表1> LEFT OUTER JOIN <表2> <ON子句>
  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要左连接的表名。
  • LEFT OUTER JOIN:左连接中可以省略 OUTER 关键字,只使用关键字 LEFT JOIN。
  • ON 子句:用来设置左连接的连接条件,不能省略。
右连接
SELECT <字段名> FROM <表1> RIGHT OUTER JOIN <表2> <ON子句>
  • 字段名:需要查询的字段名称。
  • <表1><表2>:需要右连接的表名。
  • RIGHT OUTER JOIN:右连接中可以省略 OUTER 关键字,只使用关键字 RIGHT JOIN。
  • ON 子句:用来设置右连接的连接条件,不能省略。

对数据进行加减乘除,取模运算

select num ,num+10,num-10,num/10,num%2,mod(num,3) from numbers;

逻辑运算符

逻辑非运算(NOT 或者 !)

  • 当操作数为 0(假)时,返回值为 1;
  • 当操作数为非零值时,返回值为 0;
  • 当操作数为 NULL 时,返回值为 NULL。

NOT 的优先级低于 +,相反,! 的优先级别要高于 +。使用时最好使用括号。

逻辑与运算符(AND 或者 &&)

  • 当所有操作数都为非零值并且不为 NULL 时,返回值为 1;
  • 当一个或多个操作数为 0 时,返回值为 0;
  • 操作数中有任何一个为 NULL 时,返回值为 NULL。

AND 运算符可以有多个操作数,但要注意多个操作数运算时,AND 两边一定要使用空格隔开,不然会影响结果的正确性。

逻辑或运算符(OR 或者 ||)

  • 当两个操作数都为非 NULL 值时,如果有任意一个操作数为非零值,则返回值为 1,否则结果为 0;
  • 当有一个操作数为 NULL 时,如果另一个操作数为非零值,则返回值为 1,否则结果为NULL;
  • 假如两个操作数均为 NULL 时,则返回值为 NULL。

异或运算(XOR 运算符)

  • 当任意一个操作数为 NULL 时,返回值为 NULL;
  • 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回值为 0;
  • 如果一个为0值,另一个为非 0 值,返回值为 1。
  • 相同返回0,不相同返回1。

比较运算符

等于运算(=)

= 运算符用来比较两边的操作数是否相等,相等的话返回 1,不相等的话返回 0。具体的语法规则如下:

  • 若有一个或两个操作数为 NULL,则比较运算的结果为 NULL。
  • 若两个操作数都是字符串,则按照字符串进行比较。
  • 若两个操作数均为整数,则按照整数进行比较。
  • 若一个操作数为字符串,另一个操作数为数字,则 MySQL 可以自动将字符串转换为数字。

安全等于运算符(<=>)

<=> 操作符和 = 操作符类似,不过 <=> 可以用来判断 NULL 值,具体语法规则为:

  • 当两个操作数均为 NULL 时,其返回值为 1 而不为 NULL;
  • 而当一个操作数为 NULL 时,其返回值为 0 而不为 NULL。

不等于运算符(<> 或者 !=)

与 = 的作用相反,<> 和 != 用于判断数字、字符串、表达式是否不相等。对于 <> 和 !=,如果两侧操作数不相等,返回值为 1,否则返回值为 0;如果两侧操作数有一个是 NULL,那么返回值也是 NULL。

小于等于运算符(<=)

小于运算符(<)

大于等于运算符(>=)

大于运算符(>)

条件成立返回1,条件不成立返回0,如果含有NULL,返回NULL。

IS NULL、ISNULL() 和 IS NOT NULL 运算符

IS NULL 或 ISNULL 运算符用来检测一个值是否为 NULL,如果为 NULL,返回值为 1,否则返回值为 0。ISNULL 可以认为是 IS NULL 的简写,去掉了一个空格而已,两者的作用和用法都是完全相同的。

IS NOT NULL 运算符用来检测一个值是否为非 NULL,如果是非 NULL,返回值为 1,否则返回值为 0。

SELECT NULL IS NULL,ISNULL(NULL),ISNULL(10),10 IS NOT NULL;#1	1	0	 1

BETWEEN AND 运算符

BETWEEN AND 运算符用来判断表达式的值是否位于两个数之间,或者说是否位于某个范围内,它的语法格式如下:

expr BETWEEN min AND max

expr 表示要判断的表达式,min 表示最小值,max 表示最大值。如果 expr 大于等于 min 并且小于等于 max,那么返回值为 1,否则返回值为 0。

SELECT 4 BETWEEN 2 AND 5,4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;#1	1	0

对于字符串类型的比较,按字母表中字母顺序进行比较。

原文地址:https://www.cnblogs.com/xgcl/p/14520739.html