MySQL数据库常用命令汇总(全网最全)

发布时间:2025-12-09 19:56:14 浏览次数:4

目录

数据库常用命令

数据库的创建

数据表的操作

表数据的增删查改

分组与函数查询

运算符:数学运算符

连接查询

多表查询

修改语句

删除语句

字符查询like

MySQL练习

总结感谢每一个认真阅读我文章的人!!!

重点:配套学习资料和视频教学


数据库常用命令

进入数据库,在win系统下,打开cmd,切换用户权限,进入root。

沒權限,用root登錄:mysql -uroot
如果root有密碼:mysql -uroot -p

数据库的创建

查询所有数据库:show databases;

创建数据库:create database  <数据库名>;

删除数据库:drop database  <数据库名>;

进入数据库:use  <数据库名>;

数据表的操作

1)查询数据库下表:show tables;

2)创建表:create table student(id int(4) primary key,name char(20));

注释: id为表的第一列;     

int数字类型;  

primary key主键的意思,列不能重复。

       Name为表的第二列名字。  

char:类型;  

创建表:create table score(id int(4) not null,class int(2));

注释: not null字段不能为空。

创建表:create table student1(id int(4) not null,name char(20));

Field (列名),Type(字段类型),null(是否为空),key(主键)

3)查看表结构:describe  student;    或      desc  student;

4)修改表名:alter table <表名> rename <表名>;

5)删除表:drop table <表名>;

6)修改表字段信息:alter table student change id id int(20);

7)增加表字段信息:alter table student1 add class int(4) not null after id;

8)删除一个表字段:alter table student1 drop number;

表数据的增删查改

提示:在数据库导入表时,要修改列的字段类型并设置主键;

主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列

  • 表数据新增格式:insert into 表格名(列名) values(值)
  • 先导入student和score表,表为Excel,可以自己编写。

    例子:

    mysql> insert into student(id,class,number,name) values(81,4,19,'stu81');

    mysql> insert into student(id,class,number) values(82,4,20);

    mysql> insert into student values(83,4,21,'stu83');

    mysql> alter table student change id id int(2) auto_increment;

    注释:auto_increment以1为单位自增长的意思;

    mysql> insert into student(class,number,name) values(4,22,'stu84');

    mysql> alter table score change id id int(4) auto_increment;

    注释:auto_increment自增长的意思。+1。输入该命令,表格会在新输入自动新增长新的一行,id也会成自增。

    mysql> insert into score(class,number,maths,chinese,english) values(4,19,80,78,98);

    mysql> insert into score(class,number,maths,chinese,english) values(4,20,98,88,68);

    mysql> insert into score(class,number,maths,chinese,english) values(4,21,91,83,78);

    mysql> insert into score(class,number,maths,chinese,english) values(4,22,67,83,88);

  • 查询表数据格式:select  *  from <表名>  where
  • 注释:语句以逗号做分隔,*通配符,select是展示的意思,where是条件;

    例子: 查询学生信息表中所有信息:select * from student;

           查询成绩表中,列id,class,chinese的信息:select id,class,chinese from score;

    3)表数据排序操作:升序:order by         降序:升序语句末尾加 desc

    例子:查询成绩表中,列id,chinese的信息并且以列chinese排序

    select id,chinese from score order by chinese;(升序)

    select id,chinese from score order by chinese desc;(降序)

    4)表数据查询操作:

    (1)查询1班与2班的成绩信息:mysql> select * from score where class=1 or class=2;

    (2)查询语文为77并且数学为88的成绩信息:

    mysql> select * from score where chinese=77 and maths=88;  

    (3)查询1,2,3班的成绩信息:mysql> select * from score where class in (1,2,3);

    查询不为4班的成绩信息: mysql> select * from score where class not in (4);

    (4)查询不为4班的成绩信息: mysql> select * from score where class !=4;   

    注释:  !在数据库里面为否定的意思:

    (5) 查询1班到3班的成绩信息: mysql> select * from score where class between 1 and 3;

    注释: between:在```之间,中间的意思:

    (6) 查询不为3班与4班的成绩信息:mysql> select * from score where class not in (3,4);

    (7)查询语文成绩大于等于80小于等于90的成绩信息

    mysql>select * from score where chinese>=80 and chinese<=90;

    (8) 统计成绩表的总数:mysql> select count(*) from score;

    (9) 按照英语去重,显示英语成绩信息:mysql> select distinct English from score;     

    注释: distinct 去除重复的意思;

    (10) 显示4到7行的数据:mysql> select * from score limit 3,4;    

    注释:数据库数据排列:0,1,2,3;  3显示第4行; 4,5,6,7共有4行;   3,4 ;  

    3表示第4行,4表示从第3行开始到第7行,共有4行;

    (11) 按chinese排序,显示4,5行数据: mysql> select * from score order by chinese limit 3,2;

    (12) 查询出学生姓名为stu10的学生信息:mysql> select * from student where name='stu10';

    注释:只要不是数字,有汉字数字字母多种组成的形式都要加单引号,表示字符串。

    (13) 查询出学生姓名为stu10或者stu15的学生信息:

    mysql> select * from student where name in ('stu10','stu15');

    (14) 分组查询每个班的人数:mysql> select class,count(*) from student group by class;

    作业:

    1,查询4班的成绩信息:select * from score where class=4;

    ;

    2,查询4班,语文成绩大于80小于90的成绩信息:

    select * from score where class in (4) and chinese>80 and chinese<90;

    3,查询学生表中5到10行的数据:select * from student limit 4,6;

    4,显示3班语文成绩为90,数学成绩为68,的class与number信息,:

    select class, number from score  where class=3  and  chinese=90 and  maths=68;

    5,查询出4班成绩并且按语文成绩倒序排序:

    select * from score where class=4 order by chinese desc;

    >

    6,查询2班与3班,语文成绩与数学成绩都大于80的class与number信息:

    select class, number from score where class in (2,3) and  chinese>80 and maths>88;

    7,查询学生名不为stu18,stu22,stu35,stu46,stu54,stu72班级与学号信息

    分组与函数查询

    温馨提示:分组之后查询其他函数结果是不正确的;

    分组函数:group by

    按班级分组,查询出每班数学最高分:select class,max(maths) from score group by class;

    不分班级查询总人数最高分: select max(maths) from score;

    注释: max:最大值;

    按班级分组,查询出每班数学最低分:select class,min(maths) from score group by class;

    注释:最小值min;

    按班级分组,查询出每班数学总分:select class,sum(maths) from score group by class;

    注释:sum:总分;

    按班级分组,查询出每班数学平均分:select class,avg(maths) from score group by class;

    注释:avg:平均值:

    按班级分组,查询出每班学生总数:select class,count(*) from score group by class;

    注释:count:有价值的;

    语句执行顺序:   from先执行,后执行where, 再接着执行having,limit等。

    例句:

    select class,max(maths) from score where group by(分组) class having(所有) order by(排序) limit

    from后面可以加兹查询,语句先执行后面再执行前面

    运算符:数学运算符

    mysql> select class,number,maths,maths+5 from score;

    mysql>select class,number,chinese+maths+english from score;

    mysql> select *,maths+chinese+english as total from score;

    mysql> select *,maths+chinese+english as total from score order by total desc;

    mysql> select class*2,number,maths+chinese+english as total from score order by total desc;

    连接查询

    左连接查询:

    mysql> select stu.*,sc.*,maths+sc.chinese+sc.english from student stu left join score sc on stu.id=sc.id;

    注释:stu:为别名。student stu left join score:student:为主表,score为副表显示。 left join:为左连接。 两表关联:其ID必须一一对应(stu.id=sc.id);

    右连接查询:

    mysql> select stu.*,sc.*,maths+sc.chinese+sc.english from student stu right join score sc on stu.id=sc.id;

    内连接查询:两个表同时都有的内容才会显示。

    mysql> select stu.*,sc.*,maths+sc.chinese+sc.english from student stu join score sc on stu.id=sc.id;

    显示查询数据连接:把后表与前排合起来在一个表显示。

    select id,name,class from student union select class,number,maths from score;

    多表查询

    select name,student.class,student.number,maths,chinese,english from student,score where student.id=score.id;

    题目练习

    显示总分大于200的学生信息:

    select stu.name,sc.maths,sc.chinese,sc.english,sc.maths+sc.chinese+sc.english from student stu,score sc where stu.id=sc.id and sc.maths+sc.english+sc.chinese>200;

    显示班级总数大于等于20的班级:

    select class,count(*) as total from student group by class having total>=20;

    显示人总数大于等于20的班级的成绩信息:

    mysql> select sc.class,sc.number,sc.maths from score sc,(select class,count(*) as total from student group by class having total>=20) s where sc.class=s.class;

    注释:commit:保存提交的意思,一般文件删除修改都要做保存;

    Rollback:撤回的意思,命令执行后;可以撤回为修改删除前的数据;

    truncate table score:永久删除的意思,尽量少用,删除则无记录找回;

    select now():查询现在的时间;

    修改语句

    update 表名 set  where 条件

    mysql> update student set birth=1988,department='中文系' where id=901 and name='张老大';

    把张老大的出生日期修改为1988,院系修改成中文系

    mysql> update student set birth=birth-5;

    把所有学生的年纪增加5岁;

    删除语句

    mysql> delete from student where id=901;

    删除901同学的,学生信息

    mysql> delete from student where address like "湖南%";

    删除湖南籍学生的信息

    mysql> delete from student;

    清空学生表信息

    字符查询like

    mysql> select * from student where address like '北京%';

    查询地址为北京的学生信息

    mysql> select * from student where address like '%北京%平%';

    查询地址为北京市昌平区的学生信息

    mysql> select * from score where stu_id in (select id from student where address like '湖南%');

    查询湖南籍学生的成绩信息;

    作业:

    1,把张三的计算机成绩修改成60分

    update score set grade=60 where stu_id in(select id from student where name='张三')and c_name='计算机';

    2,把计算机科目的分数降低5分

    update score set grade=grade-5 where c_name='计算机';

    3,把湖南省学生计算机分数提高5分

    update score set grade=grade+5 where c_name='计算机'and stu_id in(select id from student where address like '湖南%');

    4,把学号为904的学生,计算机成绩改为85

    update score set grade=85 where c_name='计算机' and stu_id=904;

    5,删除904学生的成绩

    delete from score where stu_id=904;

    6,删除湖南籍贯学生的成绩

    delete from score where stu_id in(select id from student where address like '湖南%');

    7,删除王姓与张姓同学英语成绩

    delete from score where stu_id in (select id from student where name like '王%'or name like '张%') and c_name='英语';

    8,删除年纪大于30的学生的计算机成绩

     delete from score where stu_id in (select id from student where 2016-birth>30);

    MySQL练习

    创建student和score表

    CREATE  TABLE  student (id  INT(10)  NOT NULL  PRIMARY KEY  ,name  VARCHAR(20)  NOT NULL ,sex  VARCHAR(4)  ,birth  YEAR,department  VARCHAR(20) ,address  VARCHAR(50) );

    创建score表,SQL代码如下:

    CREATE  TABLE  score (id  INT(10)  NOT NULL  PRIMARY KEY  AUTO_INCREMENT ,

    stu_id  INT(10)  NOT NULL ,c_name  VARCHAR(20) ,grade  INT(10));

    为student表和score表增加记录

    向student表插入记录的INSERT语句如下:

    INSERT INTO student VALUES( 901,'张老大', '男',1984,'计算机系', '北京市海淀区');

    INSERT INTO student VALUES( 902,'张老二', '男',1987,'中文系', '北京市昌平区');

    INSERT INTO student VALUES( 903,'张三', '女',1991,'中文系', '湖南省永州市');

    INSERT INTO student VALUES( 904,'李四', '男',1993,'英语系', '辽宁省阜新市');

    INSERT INTO student VALUES( 905,'王五', '女',1990,'英语系', '福建省厦门市');

    INSERT INTO student VALUES( 906,'王六', '男',1989,'计算机系', '湖南省衡阳市');

    INSERT INTO student VALUES( 907,'老七', '男',1991,'计算机系', '广东省深圳市');

    INSERT INTO student VALUES( 908,'老八', '女',1990,'英语系', '山东省青岛市');

    向score表插入记录的INSERT语句如下:

    INSERT INTO score VALUES(NULL,901, '计算机',98);

    INSERT INTO score VALUES(NULL,901, '英语', 80);

    INSERT INTO score VALUES(NULL,902, '计算机',65);

    INSERT INTO score VALUES(NULL,902, '中文',88);

    INSERT INTO score VALUES(NULL,903, '中文',95);

    INSERT INTO score VALUES(NULL,904, '计算机',70);

    INSERT INTO score VALUES(NULL,904, '英语',92);

    INSERT INTO score VALUES(NULL,905, '英语',94);

    INSERT INTO score VALUES(NULL,906, '计算机',90);

    INSERT INTO score VALUES(NULL,906, '英语',85);

    INSERT INTO score VALUES(NULL,907, '计算机',98);

    1.查询student表的第2条到4条记录

    select * from student limit 1,3;

    2.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息

    mysql> select id,name,department from student;

    3.从student表中查询计算机系和英语系的学生的信息

    select * from student where department in ('计算机系' ,'英语系');

    4.从student表中查询年龄23~26岁的学生信息

    select * from student  where birth between 1990 and 1993;    2016-23=1993  2016-26=1990

    select id,name,sex,2016-birth as age,department,address from student where 2016-birth;

    5.从student表中查询每个院系有多少人

    select department,count(id)  from student group by department;

    6.从score表中查询每个科目的最高分。

    select c_name,max(grade) from score group by c_name;

    7.查询李四的考试科目(c_name)和考试成绩(grade)

    select c_name,grade from score,student  where score. stu_id=student.id and name='李四';

    select c_name,grade from score where stu_id=(select id from student where name='李四');

    8.用连接的方式查询所有学生的信息和考试信息

    select stu.*,sc.*  from student stu left join score sc on stu.id=sc.id;

    9.计算每个学生的总成绩

    select stu_id,sum(grade) from score group by stu_id;

    10.计算每个考试科目的平均成绩

    select c_name,avg(grade) from score group by c_name;

    11.查询计算机成绩低于95分的学生信息

    select student.*, grade from score,student where   student.id=score.stu_id and c_name like '计算机' and grade<95;

    12.查询同时参加计算机和英语考试的学生的信息

    select student.*,c_name  from student,score where student.id=score.stu_id and student.

    id =any( select stu_id from score where stu_id in (select stu_id from score where c_name= '计算机') and c_name= '英语' );

    select * from student where id in(select stu_id from score where stu_id in (select stu_id from

    score where c_name='计算机' )and c_name='英语');

    select student.* from student,(select stu_id from score where stu_id in (select stu_id from score where c_name='计算机' )and c_name='英语') t1 where student.id=t1.stu_id;

    select * from student where id in (select stu_id from score sc where sc.c_name='计算机') and id in (select stu_id from score sc where sc.c_name='英语');

    13.将计算机考试成绩按从高到低进行排序

    select c_name,grade from score where c_name='计算机' order by grade;

     

    14.从student表和score表中查询出学生的学号,然后合并查询结果

    select id  from student union select id  from score;

    15.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩

    select name,department,c_name,grade from score sc,student st where st.id=sc.stu_id and (name like'张%'or name like '王%');

    16.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩中文系

    select name,2016-birth age,department,address,c_name,grade from student,score where student.id=score.stu_id and address like'湖南%';

    17.查询每个科目的最高分的学生信息.                                                    

    分解: score=t1,    t2=select c_name,max(grade) as grade from score group by c_name,    t1.stu_id注解

    分解: select * from student where id in (select t1.stu_id from score t1,t2 t2 where t1.c_name=t2.c_name and t1.grade=t2.grade);

    select * from student where id in (select t1.stu_id from score t1,(select c_name,max(grade) as grade from score group by c_name) t2 where t1.c_name=t2.c_name and t1.grade=t2.grade);

    select student.* from student,(select score.* from score,(select max(grade) grade,c_name from score group by c_name) t1 where score.c_name=t1.c_name and score.grade=t1.grade) t2 where student.id=t2.stu_id;

    总结
    感谢每一个认真阅读我文章的人!!!

    如果下面这些资料用得到的话可以直接拿走:

    1、自学开发或者测试必备的完整项目源码与环境

    2、测试工作中所有模板(测试计划、测试用例、测试报告等)

    3、软件测试经典面试题

    4、Python/Java自动化测试实战.pdf

    5、Jmeter/postman接口测试全套视频获取

    6、Python学习路线图

                        

    重点:配套学习资料和视频教学

    那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的点击下方名片加我VX免费领取。

              

     

                                                                    

     

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477