连接命令
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
对于字符串类型的比较,按字母表中字母顺序进行比较。