MYSQL须知

作者: Stella_叶 | 来源:发表于2018-05-13 20:29 被阅读201次

    执行:

    1.创建数据库

    create database 库名 charset=utf8;

    2.使用数据库

    use 数据库名;

    3.创建表

    create table 表名(字段名 类型 约束条件, 字段名 类型 约束条件...);

    注意: varchar类型必须限制字数,int无所谓

    4.修改表结构

    增加字段: alter table 表名 add 字段名 约束;

    增加多个字段: alter table 表明 add 字段名1 约束,add 字段名2 约束;

    删除字段:alter table 表名 drop 字段名;

    删除多个字段: alter table 表名 drop 字段名1,drop 字段名2;

    修改字段:alter table 表名 modify 列名 类型及约束,modify 列名 类型及约束;

    改名:alter table 表名 change 旧字段名 新字段名 新字段名 约束,change 旧字段名 新字段名 约束;

    5.删除表信息

    物理删除:delete from 表名 ; 删除全部信息

    部分信息:delete from 表名 where 条件= ;

    逻辑删除: update 表名 set is_delete = 1;

    6.删除表

    drop table 表名;

    7.插入信息和修改

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

    全列插入:值的顺序与表中字段的顺序对应

    insert into students values(0,’郭靖‘,1,'蒙古','2016-1-2');

    全列多行插入:值的顺序与给出的列顺序对应

    insert into classes values(0,'python1'),(0,'python2');

    insert into students(name) values('杨康'),('杨过'),('小龙女');

    修改表信息:

    update 表名 set 列1=值1,列2=值2... where 条件

    查看:

    1.查看表信息

    select * from 表名;

    表的创建语句: show create table 表名;

    2.查看表结构

    desc 表名;

    3.查看当前所在的数据库

    select database();

    4.查看特定字段的信息

    select 字段名,字段名 from 表名;

    5.联合查询

    select 字段名,字段名 from ( 表A名 inner join 表B名 on 表A.XX=表B.XX);

    取交集  自联结

    note:MYSQL会先显示 inner join 前方的表的字段

    括号可加可不加,加括号可以使sql语句看起来结构性更强

    注意:联合查询必须在各表有一致的键时才能成立,若有重名的字段名,需用表A.字段名或表B.字段名加以区分.

    左联: select * from 表A left join 表B on 条件;

    以A表为基准,取并集

    右联:select * from 表A right join 表B on 条件;

    以B表为基准,联合表A和表B,取并集

    6.子查询(×难点×)

    查询班级学生平均年龄

    查询大于平均年龄的学生

    select * from students where age > (select avg(age) from students);

    列级子查询

    查询还有学生在班的所有班级名字

    找出学生表中所有的班级 id

    找出班级表中对应的名字

    select name from classes where id in (select cls_id from students);

    行级子查询

    需求: 查找班级年龄最大,身高最高的学生

    行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素

    select * from students where (height,age) = (select max(height),max(age) from students);

    子查询中特定关键字使用

    in 范围

    格式: 主查询 where 条件 in (列子查询)

    7.分组

    select gender from students group by gender;

    +--------+

    | gender |

    +--------+

    | 男    |

    | 女    |

    | 中性  |

    | 保密  |

    +--------+

    select gender,group_concat(name) from students group by gender;

    +--------+-----------------------------------------------------------+

    | gender | group_concat(name)                                        |

    +--------+-----------------------------------------------------------+

    | 男    | 彭于晏,刘德华,周杰伦,程坤,郭靖                                |

    | 女    | 小明,小月月,黄蓉,王祖贤,刘亦菲,静香,周杰                        |

    | 中性  | 金星                                                      |

    | 保密  | 凤姐                                                      |

    +--------+-----------------------------------------------------------+

    8.聚合函数

    为了快速的得到数据 我们经常使用以下五个函数

    总数

    count(*)表示计算总行数,括号中写星与列名,结果是相同的

    例1:查询学生总数

    select count(*) from students;

    最大值

    max(列)表示求此列的最大值

    例2:查询女生的编号最大值

    select max(id) from students where gender=2;

    最小值

    min(列)表示求此列的最小值

    例3:查询未删除的学生最小编号

    select min(id) from students where is_delete=0;

    求和

    sum(列)表示求此列的和

    例4:查询男生的总年龄

    select sum(age) from students where gender=1;

    -- 平均年龄

    select sum(age)/count(*) from students where gender=1;

    平均值

    avg(列)表示求此列的平均值

    例5:查询未删除女生的编号平均值

    select avg(id) from students where is_delete=0 and gender=2;

    9. 排序  默认是 asc 升序

    例1:查询未删除男生信息,按学号降序

    select * from students where gender=1 and is_delete=0 order by id desc;

    例2:查询未删除学生信息,按名称升序

    select * from students where is_delete=0 order by name;

    例3:显示所有的学生信息,先按照年龄从大-->小排序,当年龄相同时 按照身高从高-->矮排序

    select * from students  order by age desc,height desc;

    高阶:

    #视图

    叫什么视图

    有什么用:

    1.一个复杂sql语句可以使用视图替换,代替

    2. 数据库表结构更换了,我们可以不用更换python代码

    代码:

    create view v_视图名 as (select xxxxxx);

    删除

    drop view v_视图名;

    注意:

    不要在视图上去修改数据(道德).

    #事务

    1.事务

    2.事务作用:保证数据修改的完整性

    3. 特性:

        数据操作后可以,可以回滚(注意删除表,删除库没办法)

        acid  原子性,一致性,隔离性,持久性

    #索引

    1.叫索引

    2.有什么用:加快查询的速度

    3. 原理:对我们的字段进行分组,如果大并发的情况下,修改数据会变慢

    4. 创建

    5. create index 名字 on 表名(索引的字段);

    6. 查看

    7. show index from 表名;

    8. 删除

    9. drop index 索引名 on 表名;

    相关文章

      网友评论

        本文标题:MYSQL须知

        本文链接:https://www.haomeiwen.com/subject/ztjldftx.html