一、基本命令:
1、启动服务命令:以管理员身份运行cmd:net start 服务器名称(net start mysql)
https://blog.csdn.net/wzhedward/article/details/71036689
2、停止服务命令:...................: net stop 服务器名称
3、连接数据库:普通cmd:mysql -u 用户名 -p (mysql -u root -p)
输入账户的密码即可
4、退出登录(断开连接):quit/exit
5、查看版本:select version();
6、显示当前时间:select now();
7、远程连接:连接对方的mysql
mysql -h ip地址 -u 用户名 -p
输入对方的密码
二:数据库操作命令:
1、创建数据库:create database 数据库名称 charset=utf8;
2、删除数据库:drop database 数据库名称
3、切换数据库:use 数据库名
4、查看当前数据库:select database();
三:表操作命令:
1、查看当前库所有表:show tables;
2、创建表:格式:create table 表名(列及类型);
示例:create table student(id int auto_increment primary key,
name varchar(20) not null,
age int not null,
gender bit default 1,
address varchar(20),
isDelete bit default 0);
说明:auto_increment 自增长
primary key 主键
3、删除表:drop table 表名;
4、查看表结构:格式:desc 表名;
示例:desc student;
5、查看建表语句:
格式:show create table 表名:
示例:show create table student;
6、重命名表名:
格式:rename table 原表名 to 新表名;
示例:rename table car to newCar;
7、修改表结构:
格式:alter table 表名 add|change|drop 列名 类型;
示例:alter table newCar add isDelete bit default 0;
四:数据操作命令:
1、增
a、全列插入:
格式:insert into 表名 values(...);
说明:主键列是自动增长的,但是在全列插入时,需要占位,通常使用0,最后以实际数据为准
示例:insert into student values(0,"tom",19,1,"北京",0);
b、缺省插入:
格式:insert into 表名(列1,列2,...) values(值1,值2,)
示例:insert into student(name,age,address) values("lilei",20,"上海");
c、同时插入多条数据:
格式:insert into 表名 values(....),(....),....;
示例: insert into student values(0,"hanmeimei",18,0,"北京",0),(0,"poi",20,1,"海南",0),(0,"wenli",20,0,"青岛",0);
insert into student values(0,"hanmeimei",19,0,"北京",0),(0,"poi",19,1,"海南",0),(0,"wenli",20,0,"北京",0);
2、删
格式:delete from 表名 where 条件;
说明:当没有条件时,所有数据都被删掉
示例:delete from student where id = 4;
3、改
格式:update 表名 set 列1 = 值1,列2 = 值2,... where 条件
说明:如果没有条件,所有列被修改
示例:update student set address = "上海" where id = 2;
4、查
a、全部查取:
格式:select * from 表名
示例:select * from student
五:查
1、基本语法:
格式:select * from 表名
说明:
a、from 后关键字是表名,表示数据来源于这张表
b、select 后面写表中的列名,如果是*表示在结果集中显示表的所有列
c、在select 后面列名部分可以使用as 为列名取别名,这个别名显示在结果集中
d、如果要查询多个列,之间使用逗号分割
示例:select name,age from student;
select name as nam,age from student;
2、消除重复行:
在select 后面,列的前面使用 distinct 可以消除重复行
格式:select distinct 列名 from 表名;
示例:select distinct gender from student;
3、条件查询:
a、语法
select * from student 表名 where 条件;
b、比较运算符
等于: =
大于: >
小于: <
大于等于: >=
小于等于: <=
不等于: !=或<>
c、逻辑运算符
and:并且
or :或者
not:非
需求:查询id值大于2的女同学:
格式:select * from student where id>2 and gender = 0;
d、模糊查询:
like
%表示任意多个字符
_表示任意一个字符
需求:查询一个字符+老头。。。。
格式:select * from 表名 where 条件;
示例:select * from student where name like "_老头";
需求:查询老+n个字符:
示例:select * from student where name like "老%";
e、范围查询:
in 表示在一个非连续的范围内
between and :表示在一个连续的范围内
需求: 查询编号为 2,5,6 的学生:
示例L: select * from student where id in(2,5,6);
需求:1到3
示例:select * from student where id between 1 and 3;
f、空判断:
" ":空字符串
null:没有数据
判断空:is null
判断非空:is not null
需求:查询地址为空的同学
示例:select * from student where address is null;
XXX:select * from student where address is not null;
g、优先级
小括号,not ,比较运算符,逻辑运算符
and 比 or 高
4、聚合:快速得到统计数据
a、count(*) :计算总行数,括号中可以写*和列名
b、max(列) :此列最大值
c、min(列) : 此列最小值
d、sum(列) :此列值和
e、avg(列) :此列平均数
需求:查询学生总数
select count(name) from student;
需求:女生编号最大值
select max(id) from student where gender = 0;
需求:女生编号最小值
select min(id) from student where gender=0;
需求:所有年龄和
select sum(age) from student;
需求:年龄平均值:
select avg(age) from student;
5、分组:
按照字段分组,表示此字段相同的数据会被放到一个集合中。分组后,
只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中
可以对分组后的数据进行统计,做聚合运算。
语法:select 列1,列2 . . .from 表名 group by 列1,列2 。 。
需求:查询男女总数
select gender, count(*) from student group by gender;
select gender,name, 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 对 表元数据筛选,having:对group by 结果集筛选
6、排序:
语法:select * from 表名 from by 列1 asc|desc,列2 asc|desc,. . .
说明:按照列值排序,如果列1相同,则按照列2. .
asc 升序,desc降序
示例:按照年龄默认排序:
select * from student order by age(desc);
select * from student order by age , id;
7、分页:
语法:select * from 表名 limit start,count;
说明:索引从0 开始,从哪里开始,一共要看几个,而不是从几看到几
示例:第一条开始,看三条数据(0开始):
select * from student limit 0,3;(1,2,3 的数据)
select * from student limit 3,3;(4,5,6 的数据)
可以加上条件:比如看男的
select * from student where gender = 1 limit 0,3;
六:关联
建表语句:
1、create table class(id int auto_increment primary key,name varchar(20) not null
,stuNum int not null);
2、create table students(id int auto_increment primary key,name varchar(20) not null,
gender bit default 1,classId int not null,foreign key(classId) references class(id));
插入数据:
insert into class values(0,"python01",61),(0,"python02",62),(0,"python03",63);
insert into students values(0,"tom",1,1);
insert into students values(0,"lilei",1,2);
关联查询:
示例:select students.name,class.name from class inner join students on class.id = students.classId;
分类:1、表A innder join 表B;
说明: A 和 B 匹配的行出现在结果集中
2、表A left join 表B;
说明: A的独有数据也会出现,为对应的B数据用null显示
示例:select students.name,class.name from class left join students on class.id = students.classId;
3、表B right join 表B;
说明:b中独有的
示例:
select myapp_students.sname,myapp_grades.gname from myapp_grades inner join myapp_students on myapp_grades.id = myapp_students.sgrade_id;
select myapp_students.sname,myapp_grades.gname from myapp_grades inner join myapp_students on myapp_grades.id = myapp_students.sgrade_id;