zoukankan      html  css  js  c++  java
  • MySQL 之 库操作,表操作

    系统数据库

    • information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
    • mysql:核心数据库,里面包含用户、权限、关键字等信息。不可以删除
    • performance_schema:mysql 5.5版本后添加的新库,主要收集系统性能参数,记录处理查询请求时发生的各种事件、锁等现象 
    • sys : mysql5.7版本新增加的库,通过这个库可以快速的了解系统的元数据信息,可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助

    一.数据库操作

    1.创建数据库

    #语法: CREATE DATABASE db_name charset utf8;
    

      

    2.查看数据库

    #查询当前用户下所有数据库
    show databases;
    
    #查看创建数据库的信息
    show create database db_name;
    
    #查询当前操作所在的数据库名称
    select database();

    3.选择数据库

    USE db_name;

    4.删除数据库

    DROP DATABASE db_name;  #注意:drop为永久删除
    

    5.查看默认储存引擎

    SHOW ENGINES(用于查看系统默认支持的引擎)
    
    innodb引擎
    
    innodb事务型数据库首选引擎,支持事务安全表(acid),支持行锁定外键。mysql5.5之后作为默认储存引擎。
    

    6.查看库的引擎

    SHOW VARIABLES LIKE db_name;
    

    二、数据表基本操作

    表(TABLE) 是一种结构化的文件,可用来存储某种特定类型的数据。表中的一条记录有对应的标题,标题称之为表的字段。

    1.创建数据表

    CREATE TABLE 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    )ENGINE=innodb DEFAULT CHARSET utf8;
    
    create table student(
        id int not null auto_increment primary key,
        name varchar(250) not null,
        age int not null,
        sex enum('','') not null default '',
        salary double(10,2) not null
    )engine=innodb default charset=utf8;
    
    ps: not null :表示此列不能为空
         auto_increment :表示自增长,默认每次增长+1
    注意:自增长只能添加在主键或者唯一索引字段上
      
    primary key :表示主键(唯一且不为空)
    engine =innodb :表示指定当前表的存储引擎
    default charset utf8 :设置表的默认编码集
    创建表
    主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
                create table tb1(
                    nid int not null auto_increment primary key,
                    num int null
                )
                或
                create table tb1(
                    nid int not null,
                    num int not null,
                    primary key(nid,num)
                )
    主键
    使用主键约束
    
    概念:主键又称主码,是表中一列或多列的组合,主键约束(primary key constraint)要求主键列的唯一数据,并且不允许为空。
    
    作用:1.结合外键可以加快查询速度;
           2.主键和记录之间关系如同人和身份证的关系是一一对应的。
    
    1.1单子段主键(字段名 数据类型 PRIMARY KEY[默认值])
    
    (1)定义列的同时定义主键
    (2)定义完所有列后定义主键
    
    
    1.2多字段联合主键(PRIMARY KEY(字段1,字段2,...字段n);)
    
    假设表中间没有主键id,为了唯一确定一个员工,可以把姓名和部门号联合起来作为主键使用。
    
    
    1.3使用外键约束
    
    外键用来在两个表数据间建立链接,它可以是一列也可以是多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个外键可以为空值,若不为空值,则每个外键必须于另一个表主键某个值。
    
    主表(父表):主键所在表
    
    从表(子表):外键所在表
    
    CONSTRAONT 外键名 FORENIG KEY 字段名 REFERENCES 主表名 主键列
    
    
    1.4使用非空约束(字段名 数据类型 NOT NULL;)
    
    字段值不能为空
    
    
    1.5使用唯一性约束(字段名 数据类型 UNIQUE;)
    
    要求唯一,允许为空,但是只能有一个空值。
    
    
    1.6使用默认约束(字段名 数据类型 DEFAULT 默认值)
    
    指定记录默认赋值
    
    
    1.7使用属性值自动增加(字段名 AUTO_INCREMENT;)
    
    注意:1.一个表只能有一个字段使用AUTO_INCREMENT,
           2.且该字段必须为主键的一部分.
           3.约束的字段可以是任何数据类型
         
    主键补充
    自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)
                create table tb1(
                    nid int not null auto_increment primary key,
                    num int null
                )
                或
                create table tb1(
                    nid int not null auto_increment,
                    num int null,
                    index(nid)
                )
    注意:1、对于自增列,必须是索引(含主键)。
             2、对于自增可以设置步长和起始值
         show session variables like 'auto_inc%';
         set session auto_increment_increment=2;
         set session auto_increment_offset=10;
    
          show global  variables like 'auto_inc%';
          set global auto_increment_increment=2;
          set global auto_increment_offset=10; 
    自增

    2.查询表数据

    #查看数据库中的数据表
    show tables;
    
    #查询表数据
    select 字段(多个以","间隔) from 表名;
    例:  select name,sex from student;
    或者: select * from student;
       
    #查看表结构
    desc 表名;
    例: desc student;
     
    #查看表的详细语句结构
    show create table student;
    
    

     

    3.修改表结构

    #添加表字段
    alter table 表名 add 字段名 类型 约束 默认值;
    例如: alter table student add age int not null default 0 after name;
    ps: after name 表示在name字段后添加字段 age.    
          first为头部
        
      
    #修改表字段
    方式一: alter table 表名 modify 字段名 类型 约束 默认值;
    方式二: alter table 表名 change 旧字段 新字段 类型 约束 默认值;
    ps:二者区别:
    change 可以改变字段名字和属性
    modify只能改变字段的属性
    
    #增加列(字段)
     alter table table_name ADD [column] 列名 类型 [完整性约束条件] [first | after 字段名];
    
    
    #修改一列类型
     alter table table_name MODIFY 列名 类型 [完整性约束条件][first|after 字段名;
    
    #修改列名
     alter table table_name CHANGE [column] 列名 新列名 类型 [完整性约束条件] [first|after 字段名];
    
    
    #删除一列
    alter table table_name DROP [column] 列名;
    
        
    #删除表字段 :
    alter table 表名 drop 字段名;
      
    #更新表名称:
    rename table 旧表名 to 新表名;
    
    #更改表的储存引擎
    ALTER TABLE 表名 ENGINE =更改后的储存引擎名;
    
    #删除表的外键约束
    ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;
    
    #修该表所用的字符集
     ALTER TABLE table_name CHARACTER SET utf8; 或者 ALTER TABLE table_name CHARSET utf8;
    

      

    #添加主键 : 
    alter table 表名 add primary key(字段,"多个","间隔");
     
    #移除主键 : 
    alter table 表名 drop primary key;
    
    ps:如果主键为自增长,以上方式则不被允许执行,请先去掉主键自增长属性,然后再移除主键
    alter table 表名 modify id int not null,drop primary key 
    更新主键操作
    #添加外键: 
    alter table 从表 add CONSTRAINT fk_test foreign key 从表(字段) REFERENCES 主表(字段);
    
    #移除外键: 
    alter tabledrop foreign key 外键名称;
    
    ps:如果外键设置后想修改,那么只能是先删除,再添加
    外键更新操作
    #修改默认值 : 
    alter tablealter 字段 set default 100;
    #删除默认值 :
    alter tablealter 字段 drop default;
    默认值更新操作

    4.删除表

    #删除表
    drop table 表名;
    
    DROP TABLE IF EXISTS 表名称  这会判断表是否存在
     
    #清空表
    truncate table 表名;
    

    5.复制表

    #只复制表结构和表中数据
    CREATE TABLE tb2 SELECT * FROM tb1;
    ps:主键自增/索引/触发器/外键 不会 被复制
       
    #只复制表结构
    create table tb2 like tb1;
    ps: 数据/触发器/外键 不会被复制 
    
  • 相关阅读:
    windows server 2012 如何开启 hyper-v 并创建虚拟机
    ABP框架系列之二十四:(Email-Sending-EF-电子邮件发送)
    ABP框架系列之二十三:(EF-MySql-Integration-EF-MySql-集成)
    ABP框架系列之二十二:(Dynamic-Web-API-动态WebApi)
    ABP框架系列之二十一:(Domain-Services-领域服务)
    ABP框架系列之二十:(Dependency-Injection-依赖注入)
    ABP框架系列之十九:(Debugging-调试)
    ABP框架系列之十八:(Data-Transfer-Objects-数据转换对象)
    ABP框架系列之十七:(Data-Filters-数据过滤)
    ABP框架系列之十六:(Dapper-Integration-Dapper集成)
  • 原文地址:https://www.cnblogs.com/strive-man/p/8749297.html
Copyright © 2011-2022 走看看