• Mysql-5-数据表的基本操作


    1.创建表:之前需要use database database_name 然后create table 表名();

    例:创建员工表tb_employee1,结构如下表所示

    字段名称

    数据类型

    备注

    id

    int11

    员工编号

    name

    varchar25

    员工名称

    depld

    int11

    所在部门编号

    salary

    float

    工资

    mysql> create database aa;
    mysql> use aa;
    mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float);

    2.主键约束:主键又称主码,是表中一列或多列的组合。主键约束要求主键列的数据唯一,并且不能为空。主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询速度。主键分为两种类型:单字段主键和多字段联合主键。

    (1)单字段主键

    mysql> create table tb_employee1(id int(11)primary key,name varchar(25),depld int(11),salary float);
    mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id));

    (2)多字段联合主键

    mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id,name));

    3.外键约束:外键用来在两个表之间建立联系,它可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以是空值,若不为空值,则每一个外键必须等于另一个表中主键的某个值。

    下面介绍几个概念。是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的主键。例如:部分表的主键id,在表tb中有一个键deptld与这个id关联。

    主表(父表):对于两个具有关联关系的表而言,相关字段中主键所在的那个表就是主表。

    从表(自表):对于两个具有关联关系的表而言,相关字段中外键所在的那个表就是从表。

    例:定义数据表tb_employee5,并且在该表中创建外键约束

    创建一个部门表tb_dept1,表结构如下表所示

    字段名称

    数据类型

    备注

    id

    int11

    部门编号

    name

    varchar22

    部门名称

    location

    varchar50

    部门位置

    mysql> create table tb_dept1(id int(11)primary key,name varchar(22),location varchar(50));
    定义数据表tb_employee5,让它的deptld字段作为外键关联到tb_dept1的主键id:
    mysql> create table tb_employee5(id int(11)primary key,name varchar(25),deptld int(11),salary float,constraint fk_emp_dept1 foreign key(deptld) references tb_dept1(id));

    4.非空约束(not null):是指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

    语法规则:字段名 数据类型 not null

    例:定义数据表tb_employee6,指定员工的名称不能为空

    mysql> create table tb_employee6(id int(11)primary key,name varchar(25)not null,deptld int(11),salary float);

    5.唯一性约束:要求该列唯一,允许为空,但只能出现一个空值。唯一性约束可以确保一列或者多列都不能出现重复值。

    (1)在定义完列之后直接指定唯一约束

    语法规则:字段名 数据类型 unique

    mysql> create table tb_dept2(id int(11)primary key,name varchar(22)unique,location varchar(50));

    (2)在定义完所有列之后指定唯一约束

    语法规则:constraint 约束名 unique(字段名)

    mysql> create table tb_dept3(id int(11)primary key,name varchar(22),location varchar(50),constraint sth unique(name));

    unique和primary key的区别:一个表中可以有多个字段声明为unique,但只能有一个primary key声明;声明为primary key的列不允许有空值,但是声明为unique的字段允许空值的存在。

    6.默认约束:指定某列的默认值。如男性同学较多,性别就可以默认为“男”。如果插入一条新的记录时没有为这个字段赋值,那么系统自动会为这个字段赋值为男。

    语法规则:字段名 数据类型 default 默认值

    例:mysql> create table tb_employee7(id int(11)primary key,name varchar(25)not null,deptld int(11)default 1111,salary float);

    7.设置数据表的属性值自动增加:在数据库应用中,经常希望在每次插入新数据时,系统会自动生成字段的主键值。可以为表主键添加auto_increment关键字来实现。在mysql中,默认情况下auto_increment初始值为1,每新增一条记录,字段自动加1.一个表只能有一个字段使用auto_increment约束,且每个字段必须为主键的一部分。auto_increment约束的字段可以是任何整数类型(tinyint/samllint/int/bigint)。

    语法规则:字段名 数据类型 auto_increment

    例:定义数据表tb_employee8,指定员工标号自动增加

    mysql> create table tb_employee8(id int(11)primary key auto_increment,name varchar(25)not null,deptld int(11),salary float);
    mysql> insert into tb_employee8(name,salary) values('lucy',1000),('lii',800),('cai',20000);
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from tb_employee8;
    +----+------+--------+--------+
    | id | name | deptld | salary |
    +----+------+--------+--------+
    |  1 | lucy |   NULL |   1000 |
    |  2 | lii  |   NULL |    800 |
    |  3 | cai  |   NULL |  20000 |
    +----+------+--------+--------+
    3 rows in set (0.00 sec)

    8.查看数据表的结构

    查看表基本结构:describe 表名 或 desc 表名

    mysql> desc tb_employee8;
    +--------+-------------+------+-----+---------+----------------+
    | Field  | Type        | Null | Key | Default | Extra          |
    +--------+-------------+------+-----+---------+----------------+
    | id     | int(11)     | NO   | PRI | NULL    | auto_increment |
    | name   | varchar(25) | NO   |     | NULL    |                |
    | deptld | int(11)     | YES  |     | NULL    |                |
    | salary | float       | YES  |     | NULL    |                |
    +--------+-------------+------+-----+---------+----------------+

    (1)NULL:表示该列是否可以存储null值

    (2)key:表示该列是否已经编制索引。pri为该列主键的一部分;uni表示该列是unique索引的一部分;mul表示在列中某个给定值允许出现多次。

    9.查看表详细结构

    语法规则:show create table 表名G

    mysql> show create table tb_employee8G
    *************************** 1. row ***************************
           Table: tb_employee8
    Create Table: CREATE TABLE `tb_employee8` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(25) NOT NULL,
      `deptld` int(11) DEFAULT NULL,
      `salary` float DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)

    10.修改数据表:修改数据库中已经存在的数据表结构。常用的修改表的操作有:修改表名,修改字段数据类型或字段名,增加和删除字段,修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。

    (1)修改表名

    alter table 旧表名 rename 新表名
    例:mysql> alter table tb_dept3 rename tb_deptment3;

    (2)修改字段数据类型

    alter table 表名 modify 字段名 数据类型
    例:mysql> alter table tb_dept1 modify name varchar(30);

    (3)添加字段

    alter table 表名 add 新字段名 数据类型
    例1:mysql> alter table tb_dept1 add managerld int(20);(没有完整性约束条件的字段)
    例2:mysql> alter table tb_dept1 add column1 varchar(12) not null;(添加有约束条件)
    例3:mysql> alter table tb_dept1 add column2 int(11) first;(添加到第一列)
    例4:mysql> alter table tb_dept1 add column3 int(11) after name;(添加到name后一列)

    (4)删除字段

    alter table 表名 drop 字段名
    例:mysql> alter table tb_dept1 drop column3;

    (5)修改字段排序

    alter table 表名 modify 字段1 数据类型 first after 字段2
    例1:mysql> alter table tb_dept1 modify id int(11) first;
    例2:mysql> alter table tb_dept1 modify column2 int(11) after column1;

    (6)更改表的数据引擎

    alter table 表名 engine=更改后的存储引擎
    例:mysql> alter table tb_dept1 engine=innodb;

    (7)删除表的外键约束

    alter table 表名 drop foreign key 外键约束名

    (8)修改字段名

    mysql> alter table customers change c_contact c_phone varchar(50);

    11.删除数据表

    drop table 表1 表2 。。。

    删除被其他表关联的主表:先删除字表,再删除主表(或取消外键约束,删除主表)

  • 相关阅读:
    使用SELECT语句检索数据
    redis的安装和使用【2】redis的java操作
    Python之数据结构改造
    InnoDB undo log物理结构的初始化
    Redis-RDB持久化设置
    MySql(四)Select条件查询
    Node.js TLS/SSL
    Node.js 定时器
    Node.js 系统
    Node.js 字符串解码器
  • 原文地址:https://www.cnblogs.com/caicairui/p/7295358.html
Copyright © 2020-2023  润新知