zoukankan      html  css  js  c++  java
  • mysql数据库基本操作(三)

    数据表操作

    基础操作

    1.创建表(类似于一个excel表)

     create table tab_name(
                field1 type[完整性约束条件],
                field2 type,
                ...
                fieldn type
            )[character set xxx];
    

              数据库的增删查改和数据类型掌握后,就可以开始在数据库里面建表了,首先有一个主键的概念:能够唯一区分出当前记录的字段称为主键,主键要是非空且唯一的,且字段一定要是数字类型,下面我们创建一个员工表:

    创建一个员工表employee
    
    create table employee(
                id int primary key auto_increment ,
                name varchar(20),
                gender bit default 1,   -- gender char(1)  default 1   -----    或者 TINYINT(1) 
                job varchar(20),
                salary double(4,2) unsigned,
                resume text    -- 注意,这里作为最后一个字段不加逗号
              );
    
    
    /* 约束:
           primary key (非空且唯一)  :能够唯一区分出当前记录的字段称为主键!
           unique
           not null
           auto_increment 主键字段必须是数字类型。
           外键约束 foreign key  */

      2.查看表信息       

        desc tab_name 查看表结构
        show columns from tab_name  查看表结构
        show tables 查看当前数据库中的所有的表
        show create table tab_name    查看当前数据库表建表语句 

            有些命令和database的很像,这里就不演示了。

    3.修改表结构

            什么是表结构的修改?其实就是对字段(类似Excel里面的表头)的修改,因为现在表里面还没有任何数据,所以现在只能对字段进行增删改查。

    (1)增加列(字段)

            首先我们试一下增加一个字段:

    alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名];
    alter table employee add addr varchar(20) not null unique after name;

           增加了一个名叫addr的字段,数据类型是varchar(20),约束条件是非空且唯一,位置在字段name后面,我们现在查看一下表结构:

              也可以同时增加多个字段,注意字段名不要重复了:

    #添加多个字段
          alter table employee 
                add hobby varchar(20),
                add age  int first,
                add birth TINYINT after name;

    (2)修改一列类型

              我们把age 的类型和位置改一下,最后的修改会覆盖之前的修改内容;

    alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
    alter table employee modify age tinyint ;
    alter table employee modify age int  default 20 after id;

    (3)修改列名

              现在我们把age改成Age,并修改约束条件:

     alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
     alter table employee change age Age int default 28 first;

    (4)删除一列

               现在把Age这一行删除:

    alter table tab_name drop [column] 列名;
    alter table employee drop Age;

            那么,删除多行或者删除一行又增加一行怎么写?我们先把最后两行resume和hobby删除:

    alter table employee drop resume,
             drop hobby;

             删除一行增加一行也是一样的,分两行写就行了。

    (5)修改表名     

    rename table 表名 to 新表名;
    rename table employee to emp;

    (6)修该表所用的字符集

           和第一篇我们修改数据库字符集一样:

    alter table student character set utf8;

     4.删除表

         删除表就很简单了:

    drop table tab_name;

    5 添加删除主键

    alter table tab_name add primary key(字段名称,...) 
    alter table users drop primary key;

    6.唯一索引

          现在我们的表还没有数据,当我们表里面有大量数据的时候,我们再按主键去查找的话,需要遍历,耗时就很长了,这个时候有一个唯一索引,他的算法不是通过遍历去查找,而是更优化的一种方法,从而提升查找的效率,大概能达到几百倍的提升,下面就是唯一索引的一些语法:

    alter table tab_name add unique [index|key] [索引名称](字段名称,...) 
    
        alter table emp add unique(name)-- 索引值默认为字段名show create table emp;
        alter table emp add unique key user_name(name);-- 索引值为user_name
    
        -- 添加联合索引
        alter table emp add unique index name_age(name,birth);#show create table emp;
    
        -- 删除唯一索引
        alter table tab_name drop {index|key} index_name

    完整性约束条件之主键约束

    单字段主键

    主键字段特点:非空且唯一

     create table users(
                id INT primary key,
                name varchar(20),
                age TINYINT
              );

    多字段联合主键

    <1> 一张表只能有一个主键

    <2> 主键类型不一定非是整型

     create table users2(
                id INT,
                name varchar(20),
                age TINYINT,
                primary key(name,id)
              );
  • 相关阅读:
    506Relative Ranks(LeetCode)
    计算二进制中1的个数
    vector<vector<int>> 简单知识介绍
    167. Two Sum II
    561. Array Partition I(LeetCode)
    sizeof 用法部分总结
    530. Minimum Absolute Difference in BST(LeetCode)
    JS计算两个日期之间的天数
    路演会上会登记结论的委员信息页面
    eclipse安装SVN插件
  • 原文地址:https://www.cnblogs.com/pengfy/p/10894985.html
Copyright © 2011-2022 走看看