mysql介绍

数据库系统:

    

       数据库:文件夹

  

       数据表:文件  


       表记录:一条数据





数据库管理软件


    mysql  : 开源 

oracle 

sqlserver

mysql : 


       服务端: mysqld

  

  客户端: cmd  php  python

  

  

  

数据库操作:

    

    

    show databases; 显示所有数据库名称

create database database_name [character set utf8];  创建一个数据库

show create database database_name;                   查看数据库的创建信息

use database_name;                                   切换数据库

alter database db_name [character set xxx]            修改数据库的字符集   



    drop database [if exists] db_name;                     删除数据库

    

数据表操作:


    1  创建表:

    create table table_name (

      filed   字段类型    [完整性约束],

      filed   字段类型    [完整性约束],

      filed   字段类型    [完整性约束],

);

2 查看表

  

 desc table_name;  查看表结构

 

 show tables; 是该数据库下所有的表名

 

 show create table table_name ; 查看数据库的表创建信息

 

 

 

3 修改表:

  

  alter table table_name   add       field   type 完整性约束

  alter table table_name   modify    field   type 完整性约束

  alter table table_name   change    field   type 完整性约束

  alter table table_name   drop      field   type 完整性约束

  

 

 

4 删除表


      drop table tab_name;


    

表记录操作:


    1 增加记录:


        insert [into] tab_name   (field1,field2....) values (values1,values2....) ,

 (values1,values2....),

  ...                 ;

  

  

insert  tab_name set field=value, field=value,..... ;

  

  

2 修改记录

  

  

  update tab_name set field=value where 子句

  

  

3 删除表记录:


      delete from  tab_name  where 子句



             清空表记录: 1  delete from tab_name

 

 2  truncate tab_name   (数据量大时推荐使用)

 

 


    4 查询表记录(******)

 

    

select  * from tab_name   : 显示所有的记录的所有字段信息

 

 

 

select [distinct] filed,filed2,.....   from tab_name

                             

  where 子句

  group by 分组     key  :  分组条件

  having 子句  : 过滤

  order by

  limit


         查询 每一个省份的平均工资

              select city,avg(salary) from emp group by city;


         查询 平均工资大于8000的省份的名称

 

     select city,avg(salary) from emp group by city having avg(salary) > 8000


 

  

  

   多表查询:

   

内连接查询:

   select * from emp inner join dep on emp.dep_id=dep.id;

左外连接查询:

select * from emp left join dep on emp.dep_id=dep.id;

  

 


       


  

完整性约束:


    主键约束: 

      primary key    :  非空(not null )且 唯一 (unique)  



    外键约束(关联字段):

      

        

  



表关系:



     表与表的关系(两张表)

 

 

一对多

 

      将关联字段设置在多的表中

  

  

  CREATE TABLE  emp(

  id INT  PRIMARY KEY ,

  name VARCHAR (20),

  dep_id INT ,

  

  FOREIGN KEY (dep_id) REFERENCES dep(id)

  

)

  

   

多对多

 

      借助第三张表实现的

  

  CREATE  TABLE  STUDENT2TEACHER(


  id  INT  PRIMARY KEY  auto_increment,


  studnet_id INT ,

  teacher_id INT ,


  FOREIGN KEY (studnet_id)  REFERENCES student(id),

  FOREIGN KEY (teacher_id)  REFERENCES teacher(id),


)

 

 

一对一

 

      将关联字段设为Unique

  

  CREATE TABLE  author(

  id INT  PRIMARY KEY ,

  name VARCHAR (20),

  authorDetial_id INT unique,

  

  FOREIGN KEY (dep_id) REFERENCES dep(id)

  

)