Mysql数据库基本操作语法命令归纳

Posted 洛阳泰山

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库基本操作语法命令归纳相关的知识,希望对你有一定的参考价值。


一、数据库相关概念:

  •     DB          Database                                     数据库
  •     DBA        Database Administrator               数据库管理员
  •     DBS        Database System                        数据库系统
  •     DBMS     Database Managerment System 数据库管理系统

    DBS=DBMS+DBA+DB+软件+硬件

    三种模型:层次模型  网状模型  关系模型

    关系型数据库:
       设计数据库的三个步骤:
        1.概念结构设计阶段:E-R 图: 实体(集)  属性  联系
                一对一(1:1)  一对多(1:n) 多对多(m:n)
        2.逻辑结构设计阶段
        3.物理结构设计阶段

    常见的数据库:
        mysql
        SQLServer 
        Oracle
        DB2

    约束:
        primary key    主键约束:不能为空且不能重复:唯一区分记录的标志(表级约束)
        foreign key    外键约束  
        not null    非空约束
        unique        唯一约束  null 'a'   null 
        default        默认约束
        check        检查约束(在mysql中无效)   set enum
        auto_increment    自增  (主键)  

        主表  从表

二、数据库操作:

sql命令 

    status;        查看当前状态
    show databases; 显示所有数据库
    use 数据库名;    使用/打开数据库
  create database bochy;
  create database [if not exists] bochy;(如果不存在)创建数据库
  drop database [if exists] bochy;  (如果存在)删除数据库(谨慎使用)

三、数据库中表的操作:

    use bochy;    先打开数据库

    创建表:

    create table [if not  exists]  student(
    id int,
    name  varchar(6)  not null ,
    sex set('男','女'),
    ext text
    );
   create table student (
     id int primary key  auto_increment,
     name varchar(8) not null,
     age smallint default 18,
     address varchar(50) default '郑州市金水区',
     ext decimal(10,2)
     );
   create table score (
     id int ,
     cid int ,
     grade int,
     primary key(id,cid),
     foreign key(id) references student(id),
     foreign key(cid) references course(cid)
     );
  显示当前数据库的所有表:show tables; 
  查看表结构:desc student;

 添加数据:

insert into student  values( 2015001,'张三','男','dfdsfbhfhw'  );

  添加部分列数据:

    insert into student(id ,name)  value(2015005,'小明');

    添加多条数据:

    insert into student values(2015006,'xiao王','男',null) ,(2015007,'ssss','男',null),(2015008,'xxx','女',null);

    删除表中数据:

    delete from student ;(删除表中所有数据)
    delete from student where id=2015006;(删除满足条件的数据)
    delete from student where id  is null;
    delete from student where id!=2015005;
    delete from student where id <>2015005;

    查看表中的数据:

  

  select * | 部分列
    from  表名
    | where (筛选记录的)条件
    | group by 字段名   having 筛选分组的条件
    | order by 字段名|聚合函数  asc|desc 
    | limit [起始下标,]长度 ;
    select * from Student;
    select id, name from student;
    select id as 学号, name  as  姓名  from student;
    select id  学号, name  姓名  from student;

  查询满足条件的前10条数据

select id,name,sex,sum from student where sex='男'  order by sum  desc  limit 10 ;

 从下标为2的记录开始,往后查询5条数据

 select * from student limit 2,5;

   模糊查询

    select *   from student where name like '%a%';
    select *   from student where name like '%a_';

  比较查询 

 select * from student where sex='男' and sum>300 ;
 select * from student where sex='男' or  sum>300 ;

范围查询

    select * from student where id='2015001' or id='2015003' or id='2015005' or id='2015021'  ;
    select * from student where id in( 2015001,2015003,2015005,2015007,2015021,2015100,2015112);

统计查询 

select count(*),sum(age),avg(age),max(age),min(age) 最小年龄 from student where age between 20 and 40;


    +----------+----------+----------+----------+----------+
    | count(*) | sum(age) | avg(age) | max(age) | 最小年龄 |
    +----------+----------+----------+----------+----------+
    |        9 |      222 |  24.6667 |       35 |       21 |
    +----------+----------+----------+----------+----------+
    1 row in set (0.05 sec)
  

select major,count(*) from student where major='信息工程';


    +----------+----------+
    | major    | count(*) |
    +----------+----------+
    | 信息工程 |        2 |
    +----------+----------+
    1 row in set (0.00 sec)

分组查询 

select sex ,count(*) 人数 from student group by sex;


    +------+------+
    | sex  | 人数 |
    +------+------+
    | 男   |    7 |
    | 女   |    5 |
    +------+------+
    2 rows in set (0.00 sec)

select major,count(*) from student group by major;


    +--------------+----------+
    | major        | count(*) |
    +--------------+----------+
    | java软件开发 |        2 |
    | 平面设计     |        2 |
    | 网络工程     |        3 |
    | 信息工程     |        2 |
    | 英语         |        3 |
    +--------------+----------+
    5 rows in set (0.05 sec)

select major,count(*) 人数 from student where age between 20 and 40 
    group by major  having 人数>=2  order by 人数 desc  limit 2;


    +--------------+------+
    | major        | 人数 |
    +--------------+------+
    | 网络工程     |    3 |
    | java软件开发 |    2 |
    +--------------+------+
    2 rows in set (0.00 sec)

子查询:

查找所有年龄大于李四年龄的学生的信息

select * from student where age> ( select age from student where name='李四'   );

查找成绩大于网络工程专业最高成绩的学生的信息

select * from student where sum> (  select max(sum) from student where major='网络工程'  );

any:任意一个

select * from student where sum > any(   select sum from student where major='网络工程');

all:所有

 select * from student where sum > all(   select sum from student where major='网络工程');

some:一些

select * from student where sum > some(   select sum from student where major='网络工程');

查询既选修了1001课程又选修了1002课程的学生的信息

select id from score where cid='1002'  and id in(    select id  from score where cid='1001');


+---------+
| id      |
+---------+
| 2015001 |
| 2015021 |
+---------+
2 rows in set (0.00 sec)


自查询:

 select a.eno ,a.ename 员工姓名 ,b.ename 经理名称 from employee a left join employee b on a.boss=b.eno;

多表查询:

1.全链接(笛卡尔积):

select * from 表1,表2;

2.等值连接:

select * from 表1,表2 where 表1.字段=表2.字段;

3.内连接:

select * from 表1 [inner] join 表2  on  表1.字段=表2.字段  where 

4.外链接

 左外链接:在保留左表所有数据的基础上进行等值连接

select * from 表1 left[outer] join 表2  on  表1.字段=表2.字段  where

 右外链接:在保留右表所有数据的基础上进行等值连接

 select * from 表1 right[outer] join 表2  on  表1.字段=表2.字段 where

5.联合查询

select * from student where major='信息工程'
union [all | distinct] 
select * from student where id in(2015001,2015002,2015020,2015021);


 


 

以上是关于Mysql数据库基本操作语法命令归纳的主要内容,如果未能解决你的问题,请参考以下文章

Mysql数据库基本操作语法命令归纳

数据库查询语句

MySQL数据库

SQL:查询每门课程的课程名、选课学生姓名及其学号,选课人数

201521123045 《JAVA程序设计》 第14周学习总结

201521123089《Java程序设计》第14周学习总结