mysql我的学习总结

对于mysql中的数据库以及表的增删改查

增删改查数据库的:

  • 建立数据库mysql

    create database 数据库名 
    复制代码
  • 显示全部的数据库sql

    show databases
    复制代码
  • 输入这个命令一下全部的sql语句的命令都将针对这个数据库数据库

    use 数据库名
    复制代码
  • 查询某个数据库数据库安全

    show databases like 要查询的数据库的名字
    复制代码
  • 删除某个数据库spa

    drop  database 要删除的数据名
    复制代码

增删改查表的:

  • 建立一个表命令行

    create table 表名 (字段名1 数据类型,字段名2数据类型,...,字段名n 数据类型)
    复制代码
  • 显示数据库中全部的表code

    show tables
    复制代码
  • 查看表中的全部字段以及字段内的数据类型索引

    desc 表名
    复制代码
  • 修改表的事务

    如下为修改表的命令行:字符串

    • 添加字段

      alter table 要修改表的名字  add column 字段名 数据类型;
      复制代码
    • 修改字段

      alter table 要修改的表的名字 change column 要修改的字段名 修改后的字段名 修改后的该字段的数据类型
      复制代码
    • 修改表中的某个字段类型

      alter table 表名 modify 要修改的字段名 新的数据类型 
      复制代码
    • 删除表中的某个字段

      alter table 表名字 drop column 要删除的字段名
      复制代码
    • 修改表的名字

      alter table 旧表名 rename to 新表名字
      复制代码
  • 删除表

    drop table 表名
    复制代码

mysql中的约束:

  • 主键约束:

    若是有某个字段添加了那么这个字段的数据不能有重复不能为NULL

    • 经过建立表时去添加主键约束

      第一种经过建立表时去添加主键约束的方法:
         create table 表名 (字段名1 数据类型 ,字段名2 数据类型,...,字段名n 数据类型 primary key)
         //像这样咱们给某个字段的数据类型后加上primary key那么该字段就添加了主键约束
      第二种经过建立表时去添加主键约束:
       create table 表名 (字段名1 数据类型 ,字段名2 数据类型,...,字段名n 数据类型) primary key(字段名)
       //像这样primary key(字段名) 括号里的字段就会被添加上主键约束括号里能够写多个字段用逗号隔开这样叫作复合主键
      复制代码
    • 经过修改表时去添加主键约束:

      alter table 表名 add primary key(字段名)
        //像这样咱们就给primary key(字段名)括号里的字段添加了主键约束
      复制代码
  • 外键约束:

    外键约束主要用于两个表直接的链接,好比咱们有a和b两张表咱们能够经过a表中的外键去查询b表中的主键从而查询到咱们须要的数据。

    • 在建立表的时候添加外键约束。

      create table 表名 (字段名1 数据类型,字段2 数据类型,...,字段n 数据类型,constraint 外键名 foreign key (要添加外键的字段名) references 链接的表名 (链接的表中的字段该字段必须为主键))
      复制代码
    • 在修改表时添加外键约束

      alter table 表名 add constraint 外键名 foreign key (字段名) references 链接的表名 (链接的表中的字段该字段必须为主键)
      复制代码
    • 在修改表的时候删除外键约束

      alter table 表名 drop foreign key 外键名
      复制代码
  • 惟一约束:

    惟一约束主要帮助咱们去建立某个字段的时候这个字段里的数据是惟一的没有重复的可是能够有空值注:可能会与主键约束混淆可是一个表中能够有多个惟一约束,可是不能有多个主键约束,另外惟一约束的字段中的数据能够有空值可是主键约束的字段的数据中不能有空值

    • 在建立表时添加惟一约束:

      create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型 unique)
        //像这样给某个字段的数据类型后面加上unique那么这个字段就添加了惟一约束
      复制代码
    • 在修改表时添加惟一约束:

      alter table 表名 add consteraint约束名 unique (要添加惟一约束的字段名)
      复制代码
    • 删除惟一约束:

      alter table 表名 drop index 字段名
      复制代码
  • 检查约束:

    检查约束主要用于检查表某个字段的数据中是否知足断定条件

    • 在建立表时添加检查约束

      create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型,check (对某个字段的约束的限定条件好比:id>1))
      复制代码
    • 在修改表时添加检查约束:

      alter table add cpnstraint 检查约束名 check (对某个字段约束的限定条件)
      复制代码
    • 删除检查约束:

      alter table 表名 drop constraint 检查约束名 
      复制代码
  • 默认值约束:

    默认值就是咱们在给某个字段添加数据时没有赋值或者它的值为空那么它的值为默认值

    • 在建立表的时候添加默认值约束

      create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型 default 默认值)
        //像这样咱们给某个字段的数据类型后面加上了默认值约束那么若是它的某条数据为空的时候它的值为默认值
      复制代码
    • 在修改表的时候添加默认值约束

      alter table 表名 change column 字段名 default 默认值
      复制代码
    • 删除默认值约束

      alter table 表名 change column 字段名 字段名 数据类型 default null
      复制代码
  • 非空约束

    若是咱们给某个字段添加了非空约束那么这个字段里的数据就不能有空值不然会报错

    • 在建立表时添加非空约束

      create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型 not null)
          //像这样给某个字段的数据类型
      复制代码
    • 在修改表时添加非空约束:

      alter table 表名 change column 字段名 字段名 数据类型 not null
      复制代码
    • 删除非空约束:

      alter table column 字段名 字段名 数据类型 null
      复制代码
  • 查看表中全部的约束

    show create table 表名
    复制代码

增删改查数据:

  • 查询数据:

    • 查询表中全部的数据

      select * from 表名
      复制代码
    • 查询某个字段中的数据

      select 字段名 from 表名
      复制代码
    • 查询某个字段的数据并不显示重复的

      select distnct 字段名 from 表名
      复制代码
    • 给字段或者表取别名

      select 字段名/表名 as 别名
      复制代码
    • 查询表中x行至y行的数据

      select  * from 表名 limit x,y
        //x和y是数字
      复制代码
    • 只查找知足限制条件的数据

      select * from  表名 where 限制条件 好比id=1
      复制代码
  • 插入数据

    • 往表中插入数据

      insert into 表名 (字段名1,字段名2) values (数据1 ,数据2)
            //括号中的数据1就对应字段名1,数据2 就对应字段名2
      复制代码
    • 往表中插入数据

      insert into 表名 set 字段名1=数据1,字段名2=数据2 
      复制代码
    • 查询a表的数据而后插入到b表中

      insert into b表名 (字段名1,字段名2) select 字段名1,字段名2 from a表名
      复制代码
  • 修改数据:

    update 表名 set 要修改的字段=新值
          //这个必定要结合where限定条件来结合使用不然会把字段里的数据所有修改为一个
    复制代码
  • 删除数据

    delete from 表名 where 限制条件
       //这个命令若是不结合限制条件去结合使用那么会清空整张表
    复制代码

视图的增删改查:

简单来讲视图就是一条select语句进行查询后的一个结果集,可是视图也不形同于表能够

  • 建立视图

    create view 视图名 as select查询语句
    复制代码
  • 查询视图

    desc 视图名
    复制代码
  • 修改视图

    //第一种修改视图的方式
        alter view 视图名 as select查询语句
        //第二种修改视图的方式
        update 视图名 set 字段名=新值 where 限制条件
    复制代码
  • 删除视图

    drop view 视图名
    复制代码

存储过程

咱们上面的sql语句等都是对于单个表的操做而存储过程是为了完成处理多条sql语句完成对多表的操做

  • 修改结束字符

    delimter 结束字符
       //修改结束字符是由于咱们的sql语句默认是以;进行结尾的可是咱们的存储过程能够说是多条sql语句的一个集合,若是不改变结束字符那么运行时会默认只执行第一条sql语句因此咱们要改变结束字符,可是存储过程当中的sql语句仍以;结尾。
    复制代码
  • 建立存储过程

    create procedure 存储过程名(参数 参数类型) begin 多条 duosql语句 end
    复制代码
  • 修改存储过程

    存储过程其实是不存在修改的,咱们能够先删除原存储过程再以相同的命名新的存储过程

  • 删除存储过程

    drop procedure 存储过程名
    复制代码
  • 调用存储过程

    call 存储过程名
    复制代码

触发器

触发器就是一种特殊的存储过程,不一样的是存储过程须要call调用才可以使用,而触发器不须要,触发器有两种类型before和after类型,before是在激活触发器的语句以前启动触发器,after是在激活触发器的sql语句以后启动触发器,可以激活触发器的语句有三种,insert ,delete,undate这三种语句

  • 建立触发器

    create tigger 触发器名 触发器类型 激活触发器的是哪一种语句 on 表名 for each row 启动触发器时要执行的sql语句;
    复制代码
  • 修改触发器

    一样也不存在修改触发器若是要修改触发器可经过删除触发器而后再以相同的名字命名

  • 删除触发器

    drop trigger 触发器名
    复制代码

索引

索引就至关于时表的目录,咱们在查询数据以前能够根据目录再去根据目录进行对数据的查询

  • 建立索引

    create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型,index(字段名));
       //这行命令用于建立通常索引
       create table 表名 (字段1 数据类型,字段2 数据类型,...,字段n 数据类型,unique(字段名))
       //这行命令用于建立惟一索引
    复制代码
  • 查看表中的索引

    show index from 表名
    复制代码
  • 删除索引

    drop index 索引名 on index 表名
    复制代码

用户

在mysql中的平常管理中咱们应该定义一些有权限的用户能够访问来保护数据的安全

  • 建立用户

    create user "用户名"@"localhost" inentifified by "密码"
    复制代码
  • 修改用户名

    rename user 旧用户名@"localhost" to 新用户名@"localhost"
    复制代码
  • 修改密码

    set password for "用户名"@"localhost"=password("新密码")
    复制代码
  • 删除用户

    drop user "用户名"@"localhost"
    复制代码
  • 关于如何给用户设置权限后续会补充

事务:

事务是最小的单位不可再分,事务只和insert,update,delete这三种语句有关,也就说当咱们输入这三种语句中的其中一个就表示自动开启了一个事务,当语句执行成功表示自动关闭了事务

  • 手动开启事务:

    begin
    复制代码
  • 事务的提交

    commit
    复制代码
  • 事务的回滚,表示又回到了事务的起点

    rollback
    复制代码

mysql中的数据类型:

  • 整数类型:

    整数类型又分为如下几种

    • TINYINT (显示长度)

      很小的整数,存储空间只占一个字节,这种整数类型他的数值范围只能是:-128~127这个区间

    • SMALLINT (显示长度)

      小的整数,存储空间只占两个字节,这种整数类型他的数值范围只能是:-32768~32767这个区间

    • INT (显示长度)

      正常的整数,存储空间只占四个字节,这种整数类型他的整数范围只能是:-2147483648~2147483647这个区间

    • bigINT (显示长度)

      大整数,这种整数类型他的整数范围只能是:-2147483648~2147483647这个区间

    • 显示长度为数字,也就是当咱们去查询该数据时显示的数据长度,好比咱们在给某字段的数据类型,写为 int (2) 那么咱们在给该字段里存储的数据为299 ,那么咱们在去查询该数据时只能显示29
  • 小数类型

    小数类型又分为如下几种

    • float

      单精度浮点数,存储空间占4个字节

    • double

      双精度浮点数,存储空间占8个字节

    • DECIMAL (M, D)

      定点数,浮点数在数据中存储的是近似值而定点数存储的是精确值,m为定点数的长度包括小数点前的数,d为小数点后的数的长度。存储空间占m+2个字节

  • 日期时间类型:

    日期时间类型又分为如下几种

    • year

      year类型只用来表示年,存储空间为1个字节

      能够以4位字符的形式去插入或者4位数字的形式去表示范围为1901至2155 'xxxx',xxxx

      能够以2位字符的形式去插入或者以两位数字的形式去插入

    • time

      time类型用来表示时分秒,存储空间占3个字节,再去给time类型的字段赋值时要这样:"xx:yy:mm",xx表示多少时,yy表示多少分,mm表示多少秒

    • date

      date类型表示日期也就是x年x月x日,存储空间占3个字节,在去给date类型赋值的时候要这样:"xxxx:yy:dd",xxxx表示哪一年,yy表示几月,mm表示几号。

    • datetime

      datetime类型表示具体的时间也就是x年x月x日x时x分x秒,存储空间占8个字节,在去给datetime类型赋值的时候要这样:"xxxx-yy-dd ss :ff:mm",xxxx表示哪一年,yy表示几月,dd表示几号,ss表示多少时,ff表示多少分,mm表示多少秒。

  • 字符串类型:

    字符串类型又分为如下几种

    • char (m)

      固定长度可是,不是二进制字符类型,括号里的m是该数据类型中能够存储的字符长度可是不能够超过255,存储空间是m个字节

    • varchar (m)

      固定长度可是,不是二进制字符类型,括号里的m是该数据类型中能够存储的字符长度可是不能够超过255,存储空间是字符的长度也就是总共有多少个字符+1个字节

    • TINYTEXT

      短的,非二进制字符串类型,他的存储空间为字符串的长度+1个字节,可是字符串的长度不能大于256.

    • TEXT

      比短的长一点的,非二进制字符串类型,他的存储空间为字符串的长度+2个字节,可是字符串的长度不能大于2的16次方

    • MEDIUMTEXT

      比上一个长一点的,非二进制字符串类型,他的存储空间为字符串的长度+3个字节,可是字符串的长度不能大于2的24次方

    • LONGTEXT

      稍长一点的,非二进制字符串类型,他的存储空间为字符串的长度+4个字节,可是字符串的长度不能大于2的32次方

数据库中的存储引擎:

数据库存储引擎是数据库的底层软件组件,数据库管理系统使用存储引擎进行建立查询和更改数据的操做,不一样的存储引擎提供不一样的存储机制,索引技巧等。

mysql默认从存储引擎是innoDB ,由于innoDB是事务型数据库的首选引擎

mysql中的查询

上边写过的查询主要是用于查询单个表的,接下来是链接查询的也就是好比有两张表咱们能够经过a表去查询b表。

  • 内链接查询

    内链接查询就是能够同时查询多张表

    select * from 表1名 join 表2名 where 限制条件
      //限制条件必定要是:表名.字段名,只要使用join关键字进行对表名与表名链接不只能够两张还能够查询多张表
    复制代码
  • 外链接查询

    外链接查询又分为左链接和右链接

    • 左链接

    • 右链接

相关文章
相关标签/搜索