MySQL数据库之基础增删改查操作

时间:2022-09-15 23:15:44
作者:        守望幸福MySQL数据库之基础增删改查操作
最后修改日期:2014-7-27
所操作的MySQL数据库名:firstdb
所用的两个表结构如下:
       student表
number name socre born_date
1      张三  96  2000-01-01
2      李四   98  1999-4-23
...    ...    ..   ........
      customer表
id    firstname   surname
1      张            三
2      李            四
3      王            五
4      麻            六
...    ...         .....
以上表为例进行如下增删改查操作


    增加操作


增加一个数据库:                     create database firstdb;
增加一个表结构:                     create table student(number int,name varchar(20),score float,born_date date)0;
增加一行数据:                       insert into student(number,name,score,born_date) values(5,'zhang',100,'1994-11-11');
增加多行用多个(,,,,),之间用逗号隔开(student中的参数可以省略)。
增加一列数据:                       alter table student add birthday DATE;


                             查询操作
<一>简单基础查询

显示所有数据库:                            show databases;
显示指定数据库的所有表:                    show tables;(注:使用前需要指定使用哪个数据库,use databasename;)
显示指定的数据库:                          show create database databasename;(注:databasename为数据库名)
显示指定的表:                              show create table tablename;       (注:tablename为表名)
显示表结构:                                describe tablename;
按成绩从小到大排列显示:                     select * from student order by score;
按成绩反序排列显示:                         select * from student order by score desc;(注desc 为反序,如果不指定默认值为asc)
限制输出一行:                              select * from student order by score desc limit 1;
第一个参数为偏移量,
第二个参数为距离偏移量显示的行数             select * from student order by score desc limit 0,5;
根据姓名查询数量:                          select count(name) from student;
根据姓名查询数量,区别重名:                 select count(distinct name) from student;
根据姓名显示表中的详细信息,区别重名         select distinct name from student;
区别所有元素显示表中的详细信息:             select distinct * from student;
显示成绩最大值:                            select max(score)  from student;
显示成绩最小值:                            select min(score) from student;
显示成绩平均数:                            select avg(score) from student;
显示成绩总和:                              select sum(score) from student;
数据库也可用于普通数值计算:                 select 2*2;
显示的所有信息中成绩+10:                    select number,name, score+10 from student;
显示当前时间,日期:                         select now(),current_date();
显示born_date的年份:                       select year(born_date) from student;
显示born_date的月份:                       select month(born_date) from student;
显示born_date的日期:                       select dayofmonth(born_date) from student;


<二>高级查询:
变量别名显示:                              select name,month(born_date) as month,dayofmonth(born_date)                                             as day from student;

使用concat()函数连接列显示:                select concat(number,name) as name from student;  (注:concat(字符串1,字符串2,...)


显示一年中的第几天:                        select dayofyear(born_date) from student;(注:也可以计算具体数值如:select dayofyear('1994-11-11');)


同时操作两个表:                            select id ,name,score,firstname from student,customer where id=number;

显示两个表中姓名后缀相同的数据的所有属性:    select * from student,customer where right(student.name,1)=customer.surname;


group by从句:                                select number,sum(score) as sum from student group by number;


                             删除操作


删除整个数据库:                              drop database firstdb;(注:drop database 数据库名;)
删除整个表:                                  drop table student;
删除表中的number为1的一行:                   delete from student where number= 1;
删除表中的一列:                              alter table student drop born_date; 
                             更改操作


改变表中的数据:                           update student set born_date='1994-11-11' where number=1;
改变表中数据变量名,允许新旧名重复:        alter table student change born_date birthday;
改变表中变量数据类型:                     alter table student modify born_date date;
为表重命名,两种方法:                     alter table student rename newname;
                                                           alter table student rename to newname;