MySQL学习知识重点

*SQL语言分类:1、DDL(定义数据库的对象:数据库、表、列 等)2、DML(表格的增删改)3、DQL(表格查询)4、DCL(定义数据库的访问权限和安全级别)

================================================================================================

DDL:

1.操作数据库:CRUD

           a、C(create):创建

                 *创建一个数据库:

                   create database [if not exists] 数据库名称 ;

                 *创建一个数据库并制定字符集utf8:

                    create database [if not exists] 数据库名称 character set utf8;

           b、R(retrieve):查询

                 *查询所有数据库名称:

                   show databases ;

                 *查看某个数据库的字符集(查询某个数据库的创建语句):

                    show create database 数据库名称 ;

           c、U(update):修改

                 *修改数据库字符集:

                    alter databases 数据库名称 character set 字符集名称 ;

           d、D(delete):删除

                 *删除某个数据库:

                  drop database [if not exists] 数据库名称 ;

           e、使用数据库

                  *查询正在使用的数据库的名称:

                   select database() ;

                   *使用数据库:

                    use 数据库名称 ;

 

2.操作表和列:CRUD

           a、C(create):创建

                 *创建一个表

                 create table 表名称(

                   列名1    数据类型1,

                   列名1    数据类型2,

                   ...

                      );

/

数据类型:int 整数类型

                  double 小数类型

                  date 日期  yyyy-mm--dd

                  datetime 日期加时间  yyyy-mm-dd  HH:mm:ss

                  timestamp 时间错类型 yyyy-mm-dd  HH:mm:ss  如果不赋值,默认值为null,默认使用当前系统时间

                  varchar 字符串类型  varchar(n) n代表最多几个字节,多余n会报错

///

                 *复制一个表

                  create table 表名称 like 被复制的表名称;

           b、R(retrieve):查询

                 *查看某个数据库中所有的表

                 show tables;

                  *查看某个表的结构

                  desc 表名称;

           c、U(update):修改

                *修改表的名称

                 alter table 表名称 rename to 新的表名称;

                *修改表的字符集

                  alter table 表名称 character set 字符集名称;

                 *添加一列 

                  alter table 表名称 add 列名称  数据类型 ;

                  *修改列名称 类型

                   alter table 表名称 change 列名称 新的列名 数据类型;

                   alter table 表名称 modify 列名称 新的数据类型 ;

                   *删除一列

                    alter table 表名称 drop 列名称 ;

           d、D(delete):删除

                 *删除某个表:

                 drop table [if  exists] 表名称;

================================================================================================

DML:

1.添加数据:

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

       注:如果不定义列名,默认给所有列添加值。

2.删除数据:

       delete from 表名 where 条件 ;

       注:如果不写条件,就删除表中所有数据;

              如果要删除操作,建议使用:truncate table 表名称; 效率高,先删除表,然后创意一张一样的空表。

3.修改数据:

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

        注:如果不写条件,则修改表中所有数据。

================================================================================================

DQL:

1.基础查询

    *  查询表中的记录     

            select

            列名称1,列名称2,... 列名称n    (*)

             from 表名称 

             where 条件

             group by 分组字段

             having 分组之后的条件 

             order by 排序

             limit 分页限定;

           注:如果想查看表所有记录,可以用*代替列名称: select * from 表名称 ;

    *  去除查询结果中的重复值

         select distinct 列名称 from 表名称 ;

    *  替换null内容(举例替换成0)

         select ifnull(列名称,0) from 表名称 ;

    *  起别名

         select 列名称 (as) 别名 from 表名称 ;         

         注:as可以省略  

1.2.条件查询

     * where 子句后跟的条件

     *运算符

         >、<、<=、>=、=、<>

         between...and...

         in(集合)

         like :模糊查询     _表示任意字符    %表示多个字符      

         is null

         and 或 &&

         or  或  ||

         not   或 !

1.3.排序查询

   select *from 表名称 where order by 排序字段1 排序方式1 ,排序字段2  排序方式2 ... ;

   注:排序方式两种:ASC(升序)  和 DESC (降序)        

         如果不写默认升序;

         如果有多个排序字段,只有当第一个字段结果相同的部分,才会执行第二个字段进行排序。

1.4.聚合函数:将一列数据作为一个整体,进行纵向计算

         count :计算个数

         max:  计算最大值

         min:计算最小值

         sum:  计算和

         avg:  计算平均值

  注:语法—— select 聚合函数名(列名称)from 表名称;

        聚合函数计算会排除null值
1.5.分组查询

        语法:select 聚合函数名(列名称) from 表名称  group by 分组字段 ;         

1.6.分页查询

        语法:select * from 表名称 limit 开始的索引 , 每页查询的条数;

        注:开始的索引 = (当前页码-1)* 每页查询的条数

               分页操作是一个“方言”,不同类型的数据库,表达方式不用

1.7.约束:对表中的数据进行规定,保证数据的正确性和完整性。

         * 主键约束 : primary key

                   注:主键非空且唯一

                 创建表时添加约束:create table 表名称(id  int primary key,name varchar(20));

                 创建表结束后添加约束:alter table 表名称 modify int id primary key ;

                 删除主键约束:alter table 表名称  drop primary key;

          * 自动增长 :auto_increment

                 创建表时添加自动增长:create table 表名称(id  int  auto_increment,name varchar(20));

                  创建表结束后添加约束:alter table 表名称 modify int id auto_increment;

                  删除自动增长:alter table 表名称  modify int id ;

         * 非空约束 : not null

                创建表时添加约束:create table 表名称(id  int not null,name varchar(20));

                创建表结束后添加约束:alter table 表名称 modify int id not null ;

                删除非空约束:alter table 表名称  modify int id ;

         * 唯一约束 : unique

                 创建表时添加约束:create table 表名称(id  int unique,name varchar(20));

                 创建表结束后添加约束:alter table 表名称 modify int id unique ;

                 删除唯一约束:alter table 表名称 drop index id ;

         * 外键约束 : foregin key

                创建表时添加约束:

                create table 表名称(

                      ...

                      外键列名称 数据类型,

                       constraint  外键名称 foreign key (外键列名称) references 主表名称(主表列名称)

                 );

                创建表结束后添加约束:

                alter table 表名称 add constraint  外键名称 foreign key (外键列名称) references 主表名称(主表列名称);

                删除外键约束:alter table 表名称 drop forigen key 外键名称 ;

           *级联操作

                 1.添加级联操作:

                create table 表名称(

                      ...

                      外键列名称 数据类型,

                       constraint  外键名称 foreign key (外键列名称) references 主表名称(主表列名称)on update cascade on delete cascade ;

                 );

                 2.分类

                    级联更新:on update cascade

                    级联删除:on delete cascase 

2.多表查询

2.1   查询语法:

               select

                      列名列表

               from

                      表名列表

               where 

                       条件

       *笛卡尔积:有两个集合A,B。取这两个集合的所有组成情况。要完成多表查询,需要消除无用数据。

2.2  内连接查询

       *隐式内连接:使用where条件消除无用数据

       *显式内连接:

        select 字段列表 from 表名1 [inner] join 表名2 on 条件

2.3 外连接查询

       *左外链接:select 字段列表 from 表1 left [outer] join 表2 on 条件;

        查询的是左表所有的数据及其交集部分

       *右外链接:select 字段列表 from 表1 right [outer] join 表2 on 条件;

        查询的是左表所有的数据及其交集部分

3.事务

3.1事务的基本介绍

        *概念:如果多个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。

        *操作步骤:

              1.开启事务:start transaction;

              2.回滚:rollback;

              3.提交:commit;

          注意:MySQL中一条SML会自动提交一次事务,如果手动谢了开启事务,必须写提交,才会提交事务

                   Oracle数据库是默认需要手动提交的

          *查看事务的默认提交方式:select @@autocommit;   -- 1 代表自动提交  --0 代表手动提交

          *修改默认提交方法:set @@autocommit = 0;

3.2事务的四大特征:

         a 、原子性:是不可分割的最小单位,要么同时成功,要么同时失败。

         b、持久性:当事务提交或者回滚后,数据库会持久化的保存数据。

         c、隔离性:多个事务之间,相互独立。

         d、一致性:事务操作前后,数据总量不变

================================================================================================

DCL:

1.管理用户

       *添加用户: create user '用户名'@'主机名' identified by '密码';

       *删除用户:drop user '用户名'@‘主机名’;

       *修改用户密码:set passward for '用户名'@‘主机名’=password('新密码');

       *查询用户:use mysql;  --  切换到mysql数据库 

                          select *from user;  -- 查询USER表

          注:通配符 % 表示可以在任意主机访问使用数据库

2.权限管理

         *查询权限:show grants for  '用户名'@‘主机名’;

         *授予权限:grant 权限列表 on 数据库名.表名 to '用户名'@‘主机名’;

         *撤销权限: revoke 权限列表 on 数据库名.表名 to '用户名'@‘主机名’;

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值