MySQL常用操作集合

一、MySQL语言分类(SQL:Structure Query Language:结构化查询语言)

DDL(Data Definition Language):数据定义语言:定义数据库,数据表它们的结构:create(创建)、drop(删除)、alter(修改)

DML(Data Manipulation Language):数据操纵语言:主要用来操作数据:insert(插入)、update(修改)、delete(删除)

DCL(Data Control Language):数据控制语言:定义访问权限,取消访问权限,安全设置:grant

DQL(Data Query Language):数据库查询语言:select(查询)、from(子句)、where(子句)

二、数据库的CRUD操作

1.库的操作

1.1、cmd下登陆数据库服务器:mysql -u用户名 -p密码

例如:用户名是root,密码是root的登陆:mysql -uroot -proot

1.2、创建数据库:create database 数据库名字

        创建数据库并指定字符集:create database 数据库名字 character set 字符集

        创建数据库指定字符集和校对规则:create database 数据库名字 character set 字符集 collate 校对规则

1.3、查看所有数据库: show databases;

1.4、修改数据库的字符集:alter database 数据库的名字 character set 字符集;

1.5、删除数据库:drop database 数据库名字;

1.6、查看当前正在使用的数据库: select database();

1.7、使用某个数据库:use 数据库名    //想要对某个数据库进行增删改查操作即先使用此命令

2.表的操作

2.1、创建表:

        create table 表名(

        列名    列的类型(长度) 约束,

        列名2  列的类型(长度) 约束

        );

        列的类型:int、char、varchar、double、float、boolean、date、time、datetime、timestamp、text、blob等

        列的约束:

            主键约束:primary  key

            唯一约束:unique

            非空约束:not null

        注意:主键约束和唯一约束的区别:

        主键约束:①数据唯一,默认不能为空;②外键都是指向另外一张表的主键;③一张表只能有一个主键;

        唯一约束:①数据唯一,可以为空;②唯一约束不可以作为其他表的外键;③一张表可以有多个唯一约束;

2.2、查看所有表:show tables;

2.3、查看表的创建过程:show create table 表名;

2.4、查看表结构:desc 表名;

2.5、修改表:

        添加列(add):alter table 表名 add 列名 列的类型 列的约束;

        修改列(modify):alter table 表名 modify 列名 列的类型;

        修改列名(change):alter table 表名 change 列名 新的列名 新列类型;

        删除列(drop):alter table 表名 drop 列名;

        修改表名(rename):rename table 表名 to 新表名;

        修改表的字符集:alter table 表名 character set 字符集;

2.6、删除表:drop stable 表名;

3.对数据的操作

3.1、插入数据

        单条格式:insert into 表名 (列名1,列名2,....) values (值1,值2,....);    //插入部分列,列名不能省略

        例:insert into student (sid,sname) values (1,'张三');

        单条格式:insert into 表名 values (值1,值2,....);    //插入全部列属性,则列名可省略

        例:insert into student values (1,'zhangsan',1,25);

        批量插入格式:insert into 表名 values (值1,值2,....),(值1,值2,....),(值1,值2,....),.....;

        注意:批量插入相对单条插入效率高,但是批量插入是一个整体语句,若其中一条出错则会导致整体插入失败。

3.2、删除数据

        格式:delete from 表名 where 条件;  //如果不写条件直接  delete from 表名;  则会删除表所有数据

        例:delete from stu where id = 6   //删除stu表id=6的数据

        面试问题:请说一下 delete 删除数据 和 truncate 删除数据有什么差别?

        解析:delete:DML:一条一条删除表中的数据

                truncate:DDL:先删除表再重建表

        关于执行效率高低:具体看表中的数据量。如果数据量小delete效率高,如果数据量大truncate效率高。

3.3、更新数据

        格式:update 表名 set 列名=列的值,列名2=列的值2  where 条件;

        如果不加条件直接写:update 表名 set 列名=列的值,列名2=列的值2;//表示将表中每条数据的相应列都改成相应值

3.4、查询数据

        格式:seletct [distinct]  [ * ]  [列名1,列名2]  from 表名 [where 条件];    //distinct,去重

        3.4.1、简单查询

        ①查询表中所有的数据:select * from 表名;

        例:seletct * from stu;   

        ②查询表中的姓名和性别:select 姓名,性别 from 表名;

        例:select sname,sex from stu;

        ③别名查询,as作为关键字,as关键字可以省略 //别名查询取别名的表或列在查询结果里显示的是别名

           表别名:select p.sname,p.sex from stu as p; //省略as写法:select p.name,p.sex from stu  p;

           列别名:select sname as 姓名,sex as 性别 from stu;//省略as写法:select sname  姓名,sex  性别 from stu;

        例:使用别名查询前:

                     

        例:使用别名查询后:

                  

        ④去重查询:select distinct sname from stu; //输出stu表的所有姓名并且过滤重复的姓名

        3.4.2、运算查询:仅仅在查询结果上做运算 + - * / ,原表不做变化。

        例如:select *,sex+1 as 性别预处理 from student;  //将性别列每项数据都+1,查询结果为原列+生成一列新列名为性别预处          理列,但原表不变。

         

        3.4.3、条件查询[where关键字]:指定条件,确定要操作的记录

        例如:select * from student where sex=1;  //查询student表中符合sex=1的所有数据。

         

        where 后的条件写法:

          ①关系运算符:>  >=  <  <=  =  !=  <>

            <>:不等于,标准SQL语法

             !=:不等于,非标准SQL语法

          例如:select * from student where sex <> 1;  //查询student表中sex不等于1的所有数据

             

          ②逻辑运算符:and,or,not

          例如:select * from student where sex=0 or age=25; //查询student表中符合sex等于0或者age=25的所有数据

           

          ③like:模糊查询

                _:代表是一个字符

               %:代表是多个字符

          例如:select * from student where sname like '%五%'; //查询student表中姓名包含'五'的所有数据项

           

          ④in:在某个范围中获得值

          例如:select * from student where age in (22,25); //查询student表中年龄是22、25的数据

           

        3.4.4、排序查询:order by  属性列  关键字

            asc:ascend  升序(默认)

            desc:descend  降序

        例如:select * from student order by age desc;  //查询student表中按年龄降序输出

         

        例如:select * from student where sname like  '赵%'  order by age;  //查询student表中sname中第一个字为赵并且age按默          认升序输出

         

        3.4.5、聚合函数

        ①sum():求和;②avg():求平均值;③count():统计数量;④max():最大值;⑤min():最小值

        举例sum:select sum(age) from student;  //查询student表中年龄的总和

        举例avg:select avg(age) from student;    //查询student表中年龄的平均值

        举例count:select count(*) from student;   //查询student表中数据的条数

        举例max:select max(age) from student;  //查询student表中年龄的最大值

        注意:where条件后面不能接聚合函数,太复杂的语句可以拆成子查询格式

        举例:select * from student where age > (select avg(age) from student); //查询student表中年龄大于平均年龄的数据

         

        3.4.6、分组(group by)

        举例:select sex  from student group by sex;  //从student表中查询sex列,sex进行分组

         

        注意:having关键字可以接聚合函数,出现在分组之后

                  where关键字不可以接聚合函数,出现在分组之前

        having举例:根据sex分组,分组统计每组(即男女两组)的平均年龄,并且平均年龄大于25;

        select sex,avg(age) from student group by sex having avg(age)>25;

         ,此时只有sex=1的组,因为sex=0的组平均年龄不大于25所以不满足。

4.编写顺序和执行顺序

4.1、编写顺序

         select ... from ... where ... group by ... having ... order by

4.2、执行顺序

         from ... where ... group by ... having ... select ... order by

 

觉得有用的小伙伴请点赞、评论或收藏一下多支持支持博主小弟,跪安~~

  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值