从头开始学MySQL--------表的基本操作

注意点提醒:

        表结构变化之前要备份,因为数据是无法恢复的。

        不是每张表都是需要主键的!

        有外键关联的两张表必须使用相同的存储引擎。

        自增属性默认从1开始。如果你插入的id是5,那么下次自增的id属性就是6。

4.1.1 

        获取所有数据库 show databases;

        在创建表之前应该在命令行输入: use <databaseName> ,表明进入哪个数据库进行修改。

4.1.2  主键约束

        主键,又称之为主码,是表中一列或多列的集合,不允许为空它能唯一的标识表中的一条记录

        行称之为记录,列称之为字段或者属性。

CREATE TABLE temp7
(
    id INT(11) PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    age INT(11)
);

//复合主键
CREATE TABLE temp8
(
     id INT(11),
     name VARCHAR(255),
     age INT(11),
     PRIMARY KEY(id,name)
)

4.1.3  外键约束

       原: 一个表的外键可以为空值,若不为空,则每个外键必须等于另外一个表的主键的某个值。P50

       外键要么为空,要么等于另外一个表的已经存在的主键。

       主从表,谁是主表,谁是从表呢? A的外键指向B的主键。那么B是主表或父表,A是从表或子表。

       外键的数据类型必须与主键的数据类型一致。

       部门有ID ,员工表持有部门ID 。 那么是员工的外键指向部门的ID,所以员工是从表,部门是主表

//创建部门表
CREATE TABLE dept
(
    id INT(11) PRIMARY KEY,
    name VARCHAR(255) NOT NULL
) ;

//插入数据
INSERT INTO dept(id,name) VALUES(4,'开发部');

//创建employee表,设置外键约束
CREATE TABLE employee
(
   id INT(11) PRIMARY KEY,
   name VARCHAR(255) NOT NULL,
   age INT(11),
   deptId INT(11),
   //外键语法:constraint foreignKeyName foreign key(属性) references 主表(主键)
   CONSTRAINT fk_emp_dept FOREIGN KEY(deptId) REFERENCES dept(id)
);

//这里必须要指定部门表的某条记录的主键ID
INSERT INTO employee(id,name,age,deptId) VALUES(1,'大宇',22,4);

4.1.4  非空约束

        数据不能为空。插入数据的时候,在数据类型后面追加NOT NULL

4.1.5  唯一性约束

        这个表里面这个字段,即这一列的每个值不允许重复。在数据类型后面追加UNIQUE。

PRIMARY KEY 与 QNIQUE的区别

        UNIQUE允许数据为空,而PRIMARY KEY不允许为空。

4.1.6  使用默认值

         在数据类型后面追加 DEFALUT 默认值。

         小提示:批量插入的话,VALUES后面的每个小括号算一条数据。

DROP TABLE IF EXISTS dept;

CREATE TABLE dept
(
   id INT(11) PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  address VARCHAR(255) DEFAULT '苏州'
);

INSERT INTO dept(id,name) VALUES(1,'技术开发部');

4.1.7  设置主键自增

        在数据类型后面追加 AUTO_INCREMENT

        一个表只能有一个属性进行自增,一般是整数类型(INT、BIGINT、TINYINT)自增。

        主键默认值从1开始。

        只有主键才能设置自增!

DROP TABLE IF EXISTS dept;

CREATE TABLE dept
(
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  address VARCHAR(255) DEFAULT '苏州'
);

INSERT INTO dept(name) VALUES('技术开发部');

4.2.1  查看表结构

        DESC  表名;

        

key有三个值。  PRI表示主键,UNI表示唯一性约束,MUL表示这个值能出现多次。

4.2.2  获取表详细的创建语句

        SHOW CREATE TABLE 表名   

4.3.1 修改表名

        把表employee改名为 employee2

ALTER TABLE employee RENAME TO employee2

4.3.2  修改字段的数据类型(字段没动,所以用MODIFY)

        把dept表的name字段长度从255修改成100

ALTER TABLE dept MODIFY name VARCHAR(100);
DESC dept;

4.3.3  更改字段名(字段都动了,所以用CHANGE)

        把name属性更换成了chineseName属性。

//ALTER TABLE dept CHANGE 旧属性名 新属性名 数据类型 数据约束
  ALTER TABLE dept CHANGE name chineseName VARCHAR(255) NOT NULL

4.3.4  添加字段

       数据约束比如UNIQUE或者是NOT NULL 追加在数据类型后面即可。

//默认添加telephone到dept表的末尾
ALTER TABLE dept ADD telephone VARCHAR(255);
//添加number字段到dept表的开头
ALTER TABLE dept ADD number VARCHAR(255) FIRST;
//添加englishName字段到dept表的chineseName属性后面
ALTER TABLE dept ADD englishName VARCHAR(255) AFTER chineseName;

       

4.3.5  删除字段

//删除dept表的englishName字段
ALTER TABLE dept DROP englishName

4.3.6  修改字段的位置(当然类型也可以修改)

ALTER TABLE dept MODIFY telephone VARCHAR(255) FIRST;
ALTER TABLE dept MODIFY id INT(11) AFTER address;

        

4.3.8  删除外键约束

        employee2表的外键信息如下

ALTER TABLE employee2 DROP FOREIGN KEY fk_emp_dept;

阅读更多

         目录贴:从头开始学MySQL-------目录帖

 

 

posted @ 2022-07-17 12:15  小大宇  阅读(57)  评论(0编辑  收藏  举报