MySQL常见终端命令
1.基本命令
1.启动服务
说明:以管理员身份运行cmd
格式:net start 服务名称
示例:net start mysql57
2.停止服务
说明:以管理员身份运行cmd
格式:net stop 服务名称
示例:net stop mysql57
3.连接数据
说明:然后输入密码,(安装时设置的密码)
格式:mysql -u 用户名 -p
示例:mysql -u root -p
4.退出登录
说明:
格式:
示例:quit或者exit
5.查看版本
说明:mysql --version 或者 mysql -V (未登录MySQL)
格式:
示例:select version(); (登录mysql)
6.显示当前时间
说明:
格式:
示例:select now();
7.远程连接
说明:然后输入密码,(对方电脑安装时设置的密码)
格式:mysql -h ip地址 -u 用户名 -p
示例:mysql -h localhost -p 3306 -u root -p
8.解释补充
1.单行注释 #
2.单行注释 -- (有空格)
3.多行注释 /* */
4.\g就是分号
2.数据库操作
1.创建数据库
说明:
格式:create database 数据库名 charset=utf8;
示例:create database temp charset=utf8;
2.删除数据库
说明:
格式:drop database 数据库名;
示例:drop database temp;
3.切换数据库
说明:
格式:use 数据库名;
示例:use temp;
4.查看当前数据库
说明:
格式:
示例:select database();
5.查看所有数据库
说明:
格式:
示例:select databases;
3.表操作
1.查看当前数据库所有表
说明:
格式:
示例:show tables; select tables from 数据库名 (查看某个数据库所有表)
2.创建表
说明:auto_increment 表明自增长 primary key 主键 not null不为空
格式:create table 表名(列及类型)
示例:create table student(id int auto_increment primary key,
name varchar(20) not null,age int not null ,gender bit not null default 1,
address varchar(20),isDelete bit default 0);
3.删除表
说明:
格式:drop table 表名;
示例:drop table student;
4.查看表结构
说明:
格式:desc 表名;
示例:desc student;
5.查看建表语句
说明:
格式:show create table 表名;
示例:show create table student;
6.重命名表
· 说明:
格式:rename table 原表名 to 新表名;
示例:rename table student to temp;
7.修改表
说明:;
格式:alter table 表名 add|change|drop 列名 类型;
示例:alter table car add isDelete bit default 0;
4.数据操作
1.增
1.全列插入
说明:主键列是自增长,但是全列插入时需要占位,通常使用0,
插入成功以后以实际数据为准。
格式:insert into 表名 values(...);
示例:insert into student values(0,"tom",19,1,"北京",0);
2.缺省插入
说明:
格式:insert into 表名(列1,列2,...) values(值1,值2,...);
示例:insert into student(name,age,address) values("李磊",19,"上海");
3.同时插入
说明:
格式:insert into 表名 values(...),(...);
示例:insert into student values (0,"韩梅梅",18,0,"北京",0)
,(0,"tom",19,0,"南阳",0);
2.删
说明:如果不写条件,那么会删除表中的所有数据,慎用.
格式:delete from 表名 where 条件;
示例:delete from student where id=4;
3.改
说明:如果不写条件,那么会改除表中的所有数据,慎用.
格式:update 表名 set 列1=值1,列2=值2... where 条件;
示例:update student set age=19 where id=4;
4.查
说明:查询表中的全部数据
格式:select * from 表名;
示例:select * from student;
5.数据查
1.基本语法
说明:
1.from 关键字后面是表名,表示数据来源于这张表
2.select 后面写的是表中的列名,如果是*那么结果显示表中所有列
3.在select后面的列名部分可以使用as为列名起别名,这个别名显示在结果集中
4.如果要查询多个列,之间使用逗号分隔
格式:select * from 表名;
示例:select name,age from student;
select name as n,age from student;
2.消除重复行
说明:在select后面列前面使用distinct消除重复行
格式:
示例:select gender from student;
select distinct gender from student;
3.条件查询
1.语法
select * from 表名 where 条件;
2.比较运算符
1.等于 =
2.大于
3.小于 <
4.大于等于 <=
5.小于等于 =
6.不等于 !=或<
3.逻辑运算符
1.且 and
2.或 or
3.非 not
需求:查询id值大于7的女同学
示例:select * from student where id3 and gender=0;
4.模糊查询
1. like
%任意多个任意字符
_表示一个任意字符
5.范围查询
1. in 表示一个非连续的范围
2. between...and...表示一个连续的范围
需求:查询id为8、10、12的学生
示例:select * from student where id in (8,10,12);
需求:查询id从6到8的学生
示例:select * from student where id between 6 and 8;
6.空判断
说明:null与""是不同的
判断空: is null
判断非空: is not null
需求:
7.优先级
小括号,not 比较运算符,逻辑运算符,(and和or同时出现,and高于or)
and和or同时出现希望先选or,需要结合()来使用。
4.函数
1.聚合函数
为了快速等到统计数据,提供了5个聚合函数都会忽略null值,max,min,count可以处理任何类型数据.
1.count(*) 表示计算总行数,括号中可以写*和列名
2.max(列) 表示求此列的最大值
3.min(列) 表示求此列的最小值
4.sum() 表示求此列的和
5.avg() 表此求此列的平均值
需求:查询学生总数
示例:select count(*) from student;
需求:查询女生id最大值
示例:select max(id) from student where gender=0;
需求:查询女生id最小值
示例:select min(id) from student wherr gender=0;
需求:求所有学生年龄和
示例:select sum(age) from student;
需求:求所有学生年龄平均值
示例:select avg(age) from student;
2.字符函数
1.length() 获取参数值的字节个数 (参数为1个)
2.concat() 拼接字符串 (参数为多个)
3.upper() 将小写字母转换为大写 (参数为1个)
4.lower() 将大写字母转换为小写 (参数为1个)
5.substr(参数1,索引) out_ (截取从指定索引处后面所有字符)【substring】
substr(参数1,索引1,索引2) out_ (截取从指定索引处指定长度字符)
6.select instr(str1,str2) as out_put;返回值为str2在str1第一次出现的索引.
7.select trim(str1 from str2) as out_put;返回值为str2两边去掉str1
8.ipad(str1,num,str2)用指定字符来左填充指定长度
rpad(str1,num,str2)用指定字符来右填充指定长度
9.replace(str,str1,str2)用str2替换str1
示例:select length(name) from student;
示例:select concat(name,"_") from student;
示例:select lower(name);
示例:select upper(name);
示例:select substr("gefbvhjebdsdjwjsnjkewnsskdqw",1,3) out_put_;
示例:select instr("杨不悔爱上了殷六侠","殷六侠") out_put;
示例:select trim('a' from 'aaaaaaaaaa张aaa翠山aaaaaaa')as out_put;
示例:select replace("aaaabbbbbcccc",'a','c')as out_put;
示例:select lpad("张翠山",10,'aa') as out_put;
3.数学函数
1.round(num) 四舍五入
2.ceil(num) 向上取整
3.floor(num) 向下取整
4.truncate(num1,num2) 截断(num1保留num2位小数)
5.mod(num1,num2) 取余
4.日期函数
1.now() 显示当前系统日期+时间
2.curdate() 返回当前系统时间
3.curtime() 返回当前时间,不包括日期 【time()】
4. year(now()) 年 month(now())月 day(now())日 hour(now())时 minute(now())分 second(now())秒
说明:2020-03-11 15:57:25 (时间格式)
5.
1.str_to_date() 将字符通过指定格式转换成日期
2.date_format(); 将日期转换成指定格式字符串
示例:select str_to_date("1998-03-06","%Y-%m-%d");
示例:select date_format(now(),"%y年%m月%d日");
说明:
1.%Y 四位年份
2.%y 两位年分
3.%m 月(01,02,03,..11,12)
4.%c 月(1,2...11,12)
5.%d 日(01,02,...)
6.%H 时(24小时制)
7.%h 时(12小时制)
8.%i 分(01,02...59)
9.%s 秒(01,02,..59)
5.其他函数
1.select version() 数据库版本
2.select datebase() 当前使用的数据库
3.select user() 当前用户
6.流程控制函数
1.if(条件, res1,res2) if..else的效果,条件为true返回值为res1,反之为res2.
示例:select name,age,if(age20,"老人","年轻人")as 备注 from student;
2.case switch case的效果
case ...要判断的字段
when 常量1 then 需要显示的值或者语句
when 常量2 then 需要显示
...
else 常量n then 需要显示
end
示例: select name,case id when 1 then 3 when 2 then 33 else 33 end from student;
5.分组
按字段分组,表示此字段相同的数据会被放到一个集合中。
分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中。
可以对分组后的数据进行统计,做聚合运算。
语法:select 列1,列2,聚合...from 表名 group by 列1,列2...
需求:查询男女生总数
示例: select gender ,count(*)from student group by gender;
示例:select name,gender,count(*) from student group by gender,age;
分组后的数据筛选:
select 列1,列2,聚合...from 表名 group by 列1,列2...
having 列1,...聚合...
示例:select gender count(*) from student group by gender having gender;
where和having的区别:
where是对from后指定的表进行筛选,属于对原始数据的筛选
having是对group by的结果集机行筛选
6.排序
语法:select *from 表名 order by 列1 asc|desc, 列2 asc|desc...
说明:
1.将数据按照列1进行排序,如果某些列1值相同,那么按照列2进行排序
2.默认为升序,
3.asc为降序,desc为升序
需求:将没有删除的数据按照年龄排序
示例:select * from student where isDelete=0 order by age desc, id desc;
7.分页
语法:select * from 表名 limit start ,count;
说明: start索引从0开始
示例:
select * from student limit 0,3;
select * from student limtit 3,3;
select * from student where gender=1 limit 0,3;
6.关联查询
1.建表语句
1.create table class(id int auto_increment primary key,name varchar(20) not null,
studentNum int(20) not null);
2.关联表语句
语法:alter table 多表名 add foreign key(外键字段) reference(主键字段);
示例:alter table student add foreign key(classid) references class(id);
3.关联查询
select student.name,class.name from class inner join student on class.id=student.id;
select student.name,class.name from class left join student on class.id=student.id;
1.表1 inner join 表2 表1和表2匹配的行会在结果集中。
2.表1 left join 表2 表1与表2匹配的行会出现在结果集中,外加表1未对应的数据用null填充。
3.表1 right join 表2 表1与表2匹配的行会出现在结果集中,外加表2未对应的数据用null填充。