mysql数据库的常用语句

*对数据库操作*
////创建数据库////

1.使用用默认的数据库与校对
            create database 数据库名;
2.指定数据库字符
            create database 数据库名 character set utf8
3.查看当前数据库服务器下的所有数据库
            show databases;
4.查看创建数据库的语句
            show create database 数据库名;
5.删除数据库
            drop database 数据库名;
6.切换数据库
            USE 数据库名;
7.查看当前所使用的数据库
            select database();

*对数据库表结构操作**

1.int  整形
2.char  字符串
3.varchar         字符串
4.timestamp       yyyy-MM:dd hh:mm:ss

////约束////

1.主键约束
        primary key     primary key(id);
2.唯一约束
        unique
3.非空约束
        not null
4.默认值约束
        default 想要默认的值
5.自动增涨
        auto_increment

**对表操作
////创建表////**

1.create table(
字段一  类型,
字段二 类型,
....
)character set utf8;

////查看表////

1.查看表结构

desc 表名;

2.查看当前数据库下的所有表

show tables;    

3.查看表的字符编码集,也就是表的创建语句

    show create table 表名;

////修改表////(基本不用)

1.添加列操作

alter table 表名 add 列名 类型;

2.修改列的类型

    alter table 表名 modify 列名 类型;

3.删除列

alter table 表名 drop 列明;

4.修改列名称

alter table 表名 change 旧列名 新列明 类型;

////删除表////(基本不用)

1`.drop table 表名;`
2.truncate table 表名;
区别:前者有条件,自增主键补初始化
           后者不可回退,速度快,相当于重新建立了空表(初始化表)

*对数据库单表进行操作***
////insert 插入操作////**

1.插入所有列值

    insert into 表名(列名1,列名2...)values(列值1,列值2....);

2.插入部分列值

    insert into 表名(列名1,列名3...)values(列值1,列值3....);

3.不指定列名

insert into 表名 values(列值1,列值2...);

*update更新操作*

1.update语句修改表中数据

update 表名称 set 列名称=新值 where 列名称=某值;

*delete删除操作*

1.删除某行数据

delete from 表名 where 列名称=值;

2.删除所有行

delete from 表名;
    delete  * from 表名;

3.删除表中的数据

truncate table 表名;
    ```
        关于delete 与truncate的区别   
        ```                 
            delete是一行一行删除   truncate是将表结构销毁,在重新创建表结构.
            如果数据比较多,truncate的性能高。                   
            delete是受事务控制. 可以回滚数据.
            truncate是不受事务控制. 不能回滚.

////select基本查询////

1.查询所有的列(所有数据)

    select * from 表名称

2.查询指定列

    select 字段1,字段2...(列名称) from 表名;

3.去掉重复记录

    select distinct 字段 from 表名;

4.between…and

    相当于>= and <=
    between 30 and 40;

5. in

select* from 表名 where price in657680);

6.模糊查询

通配符使用
    查询出商品的名称中包含java的商品信息。
        select*from  表名  where 列名   like "%java%";
    查询出书名是两个字的商品信息
        select*from  表名  where 列名   like  "__";

7.null 值操作

    is null         判断为空
    is not null     判断不为空   

*order by 排序*

1.select 列名 from 表名称 where 条件  order by  列名 (默认是升序)
        asc   升序
        desc  降序

*聚合函数ifnull*****
 1.count:统计指定列不为NULL的记录行数;

 select count(*)from 表名 where  条件语句;

 2.sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

     select sum (列名 或者列之间的运算) from 表名称 where 条件语句;

 3.max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

select max(列名)  from 表名称 where 条件语句;

 4.min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

select min (列名)  from  表名称 where 条件语句;

 5.avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

 select avg (列名)  from 表名称;

*分组操作*

1.group by   语句用于结合合计函数,根据一个或多个列对结果集进行分组。
2.  select  (展示)                                
        id,name,sum(pnum)                   
    from    (来自哪里)                                  
        products 表名   
    where   (分组前的条件)
        id<9                              
    group by(分组)
        category
    having(分组后的条件)
        order by (排序)
        sum(pnum) desc(依据pnum和的降序排列)
    limit 2   分页或者 
        (或者)limit 0,2
*****Having与where的区别*****
```
        1.having是在分组后对数据进行过滤.
            2.where是在分组前对数据进行过滤  
        3.having后面可以使用分组函数(统计函数)
            4.where后面不可以使用分组函数。


******多表设计******

1.一对一----一般不用   
    2.一对多----在进行数据设计时,如果存在一对多的关系,要求在多的一方加入一个外键,用来描述它来自于一方的主键
    3.多对多----多对多的关系进行设计时,为了描述关系,会产生一个中间的关系表,来描述关系


********外键约束********


1.概念模型在数据库中就对应数据表,那么表与表之间的关系也包括:一对一,一对多,多对多。而表与表之间关系是       通过外键来维护的。
    2.将两张表联系在一块 让表和表发生关系

    3.外键约束特性如下:
            外键必须是另一表或自身表的主键的值;
            外键可以重复;
            外键可以为空;
            一张表中可以有多个外键。


******多表数据关联操作******


////**交叉连接**////

1.select*from A表名 cross join B表名;
select* from A表名,B表名;

2.实现原理时 笛卡尔积


--------------------------------------------------------------------------------------------------------
****内连接****

1.显式内连接
Select * from A表名 inner join B表名 on (连接条件[外键字段名=另一个表的主键字段])

2.隐式内连接语法
Select * from A表名,B表名 where 条件
select * from orders A ,customer B where A.customer_id=B.id;


--------------------------------------------------------------------------------------------------------
******外连接******

1.左外连接
Select * from A表名 left join B表名 on (A表名.外键字段=B表名.主键字段)
2.右外连接
Select * from A表名 right join B表名 on (连接条件)


******联合查询******

1.Select 字段 from A表名 where 条件
Union
Select 字段 from B表名 where 条件


        可以自动消除重复记录

*子查询*

1. Select * from A表名 where
                    列名 in (
                       Select 列名 from 表名 where 条件
                     )

*补充的函数*

1.now()----新建一列now()---列里的额内容是此时时间
        select now()from 表名;

2.MD5()----加密
        给添加的密码加密
        insert into 表名 (列名,PASSWORD) values ('zhangsan' ,MD5('123') ) ;

猜你喜欢

转载自blog.csdn.net/qq_40294980/article/details/82121218