一:基本命令:

1:启动服务

说明:以管理员身份运行

net start 服务名称(mysql)

2:停止服务

3:连接数据

mysql -u  用户名(root)-p

输入密码(安装时设置的)

4:退出登录(断开连接)

quit或exit

5:查看版本

select version();

6:显示当前时间

select now();

7:远程连接

mysql -h ip地址  -u root -p

二:数据库操作

1:创建数据库

create database 数据库名  charset=utf-8;

2:删除数据库

drop  database 数据库名;

3:切换数据库

4:查看数据库

select database();

三:表操作

1:查看当前数据库中的所有表:

show tables;

2:创建表:

create table 表名(列及类型)

说明:auto_increment表明自增长

示例:create table student(id int auto_increment primary key,name varchar(20) not null, age int not null, gender bit defult 1 ,address varchar(20), isdelete bit defult 0);

3:删除表:

drop table student;

4:查看表结构:

desc 表名;

5:查看建表语句:

show create table 表名;

6:重命名表名

rename table 原表名  to 新表名;

7:修改表:

alter table 表名 add|change|drop 列名   类型;

四:数据操作

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",19,"上海")

c:同时插入多条数据

insert into student values(0,"hanmeimei",18,0,"北京",0)(0,“poi”,22,1,“海南”,0);

delete from 表名 where 条件;

delete from student where id=4;

注意:没有条件全部删除,慎用

update 表名 set 列1=值1,列2=值2,。。。。。

update student set age=16 where id=7;

注意:如果没有条件所有列都修改

说明:查询表中的全部数据

select * from 表名;

select * from student;

1:基本语法

select * from 表名

说明:a、from关键字后面是表名,表示数据来源于这张表

b、select后面写表中的列名,如果是*表示在结果集中显示表中的所有列

c、在select后面的列名部分,可以使用as为列而起别名,这个别名显示在结果集中

d、如果要查询多个列,之间使用逗号进行分隔

示例:select *from student;

select name,age from student;

select name as a,age from student;

2:消除重复行

在select 后面列前面使用distinct可以消除重复的行

select gender fron student;

select distinct  gender from student;

3:条件查询:

select * from 表名  where 条件

b、比较运算符

等于    =

大于  >

小于  <

大于等于     >=

小于等于     <=

不等于   !=或者<>

需求:查询id值大于8的所有值

示例:selece * from student where id>8;

c、逻辑运算符

and    并且

or    或者

not    非

d、模糊查询

%表示任意多个字符

_表示一个任意字符

需求:查询姓*的同学

示例:select *from student  where name like"李%";

select *from student  where name like"李_";

e、范围查询

in  表示在一个非连续的范围内

between...and...表示在一个连续的范围内

需求:查询编号为8、10、12的学生

select * from student where id in(8,10,12);

需求: 查询标号为6到8:

示例:select * from student where id between 6 and 8;

f、空判断

注意:null与“”是不同

判断空:is null

判断非空:is not null

需求:查询没有地址的同学

示例:select * from student where address is null;

需求:查询有地址的同学

示例:select  * from student where address is not null;

g、优先级

小括号,not 比较符 ,逻辑运算符

and比or的优先级高,如果同时出现并希望选择or,需要结合()来使用

为了快速得到统计数据,提供了5个聚合函数

a、count(*)   表示计算总行数,括号中可以写*和列名

b、max(列)  表示求此列的最大值

c 、min(列)   表示求此列的最小值

d、sum(列)   表示求此列的和

e、avg(列)    表示求此列的平均值

需求:查询学生总数

示例:select count(*) from student;

需求:查询女生编号的最大值

示例:select max(id)  from student where gender=0;

需求:查询所有学生的年龄和

示例:select sum(age) from student

按照字段分组,表示此字段相同的数据会被放到一个集合中。

分组后,只能查询出相同的数据列,对于有差异的数据列无法显示在结果集中

可以对分组后的数据进行统计,做聚合运算

语法:select 列1,列1,聚合。。。。from 表名 group by 列1,列2,列3,。。。。

需求:查询男女生总数

示例:select gender,count(*)  from student group by gender;

分组后的数据筛选:select 列1,列1,聚合。。。。from 表名 group by 列1,列2,                                      列3,。。。。       having 列1,。。。聚合。。。

示例:select  gender,count(*) from student group by gender having                         gender,count(*);

where和having的区别:

where是对from后面的表进行筛选,属于对原始数据的筛选

having是group by的结果进行筛选

分组后的条件使用having来限定,where是对原始数据进行条件限制。几个关键字的使         用顺序为 where 、group by 、having、order by

示例:Select name ,sum(*)  from employee_tbl WHERE id<>1 group by name          having sum(*)>5 order by sum(*) DESC;

语法:select * from 表名 order by 列1 asc/desc,列2 asc/desc,。。。。

a、将数据按照列1进行排序,如果某些列1的值相同,则按照列2排序

b、默认按照从小到大的顺序排序

c、asc升序

d、desc降序

需求:将没有被删除的数据按照年龄排序

示例:   select * from student  where isdelete=0 order by age desc;

select * from student  where isdelete=0 order by age desc,id desc;

语法:select * from 表名 limit start,count;

说明:start索引从0开始

示例:select * from student limit 0,3;

select * from student limit 3,3;

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 defult 1stuNum int not null,foreign key(classid) references class(id));

关联查询:select student.name ,class.name,from class inner join students on class.id=students.classid;

select student.name ,class.name,from class left join students on class.id=students.classid;

select student.name ,class.name,from class right  join students on class.id=students.classid;

1:表A  inner join 表B:

表A与表B匹配的行会出现在结果集中

2:表A left  join 表B:

表A与表B匹配的行为会出现在结果集中,外加表A中独有的数据,未对应的数据使用null填充