5天手把手教你,MySql从入门到精通:06.MySql修改表的结构-谜妹韩漫漫画

SQL:Structued Query Language,结构化查询语言

SQL语言分为4类子语言:

1、DDL:Data Definition Language数据定义语言

create,drop,alter,truncate table

2、DML:Data Manipulation Language数据操纵语言

insert,delete,update,select

3、DCL:Data Control Language数据控制语言,授权

grant,revoke

-- 授权:将用户1(当前用户)表test的查询和添加记录的权限授予给user2

grant select,insert on user1.test to user2; 

-- 撤销权限:将用户1(当前用户)表test的insert权限收回

revoke insert on user1.test from user2;

4、TCL:Transaction Control Language事务处理语言

commit,rollback

MySql

修改表的结构:

alter table 表名 <action操作行为>;

操作行为包括如下:

说明:action 可以是如下语句:

A、add 列名 建表语句 [first | after 列名]

可以为表添加一列,如果没指定first或者after,则在列尾添加一列,

否则在指定列添加新列

B、add primary key (列名)为表添加一个主键,如果主键已经存在,则出现错误

C、add foreign key(列名) references 表名(列名)为表添加一个外键

D、alter 列名 set default 默认值可以更改指定列默认值

E、change 旧列名 新列名 <建表语句> [first | after 列名]

   可以更改列类型和列名称,如果原列的名字和新列的名字相同

F、modify 列名 <建表语句> [first | after 列名]

和change的作用相同

G、drop 列名     //可以删除一列

H、drop primary key//可以删除主键

I、engine 类型名       //可以改变表类型,引擎类型

在创建一个新的MySQL数据表时,可以为它设置一个类型,其中最重要的3种类型是

MyISAM:成熟、稳定和易于管理

InnoDB:加入事务、数据行级锁定机制、外键约束条件、崩溃恢复等新功能

HEAP:只存在于内存中,可做临时表

create table tmp(…) ENGINE=MyISAM

J、rename as 新表名     //可以将表名更改

案例如下:

1、创建部门表和员工表

use oa;

create table departments

(

id int primary key,-- 部门编号

name varchar(50) not null-- 部门名称

);

-- 添加记录

insert into departments values(10,'研发部');

insert into departments values(20,'人事部');

insert into departments values(30,'销售部');

insert into departments values(40,'总裁部');

create table employees9

(

id int, -- 员工编号,主键

name varchar(50), -- 员工姓名,不能为空

sex enum('男','女'),  -- 员工性别,枚举值

hiredate date,  -- 入职日期

salary float(10,2),  -- 工资,缺省值是1000

pid varchar(18) unique-- 身份证号码,唯一性

);

-- 添加测试记录

insert into employees9 values(1001,'刘备','男','1983-01-31',1000.38,123);

insert into employees9(hiredate,id,name,sex) values('1985-3-28',1002,'关羽','男');

insert into employees9 values(1003,'张飞','男','1987-11-30',3000.38,1);

insert into employees9 values(1004,'赵子龙',null,'1997-11-30',null,2);

insert into employees9(id,name,hiredate) values(1005,'诸葛孔明','2000-11-30');

 

2、在员工表中添加列departmentid

alter table employees9 add departmentid int; -- 默认添加的列放在最后

alter table employees9 add departmentid int first; -- 放在最前面

alter table employees9 add departmentid int after salary; -- 放在工资字段后面

3、为员工表设置id列为主键

alter table employees9 add primary key(id);

4、为员工表添加列departmentid为外键列,引用departments表的id列

alter table employees9 add foreign key(departmentid) references departments(id);

5、将员工表的salary的缺省值设置为1000

alter table employees9 alter salary set default 1000;

alter table employees9 alter salary set default null;

-- 通过修改列的方式添加缺省值

alter table employees9 modify salary float(10,2) default 1000;

-- 取消缺省值列

alter table employees9 modify salary float(10,2);

6、将员工表的name列修改为非空列

-- 修改列的数据类型、宽度精度、是否为空、调整字段的位置顺序

alter table employees9 modify name varchar(50)  not null;

-- 将修改的列为非空并放在首部,作为第一个字段

alter table employees9 modify name varchar(50)  not null first;

-- 将修改的列为非空并放在尾部,作为最后一个字段

alter table employees9 modify name varchar(50)  not null after departmentid;

-- 还原到原始位置,在id的后面

alter table employees9 modify name varchar(50)  not null after id;

7、将员工表的name列名改成employeename

alter table employees9 change name employeename varchar(50);

alter table employees9 change employeename name varchar(50) not null;

alter table employees9 change name employeename varchar(50) first;

alter table employees9 change employeename name varchar(50) not null after id;

8、在员工表中添加列address,varchar,250个长度

alter table employees9 add address varchar(250);

alter table employees9 add (phone varchar(11),remark varchar(250));

9、删除员工表中列address

alter table employees9 drop address;

10、删除主键

alter table employees9 drop primary key;

添加主键约束,指定约束名称

alter table employees9 add constraint pk_e9_id primary key(id);

11、删除外键

show create table employees9; -- 查看建表语句信息,找到外键约束名称

mysql> SHOW CREATE TABLE employees9;

+------------+--------------------------------------------------------------------------------

| Table      | Create Table

+------------+--------------------------------------------------------------------------------

| employees7 | CREATE TABLE `employees7` (

  `id` int(11) NOT NULL DEFAULT '0',

  `name` varchar(50) DEFAULT NULL,

  `sex` enum('男','女') DEFAULT NULL,

  `hiredate` date DEFAULT NULL,

  `salary` float DEFAULT '1000',

  `pid` varchar(18) DEFAULT NULL,

  `departmentid` int(11) DEFAULT NULL,

  PRIMARY KEY (`id`),

  UNIQUE KEY `pid` (`pid`),

  KEY `departmentid` (`departmentid`),

  CONSTRAINT `employees9_ibfk_1` FOREIGN KEY (`departmentid`) REFERENCES `departments` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8    |

+------------+--------------------------------------------------------------------------------

1 row in set (0.00 sec)

-- 删除外键

alter table employees9 drop foreign key employees9_ibfk_1;

-- 删除外键后,外键字段在KEY列还有MUL属性,删除方式如下

alter table employees9 drop key departmentid;

12、删除列pid的唯一性约束

-- 通过删除索引的方式来删除唯一性约束

alter table employees9 drop index pid; -- 直接删除唯一性约束的字段名即可

13、添加唯一性约束

alter table employees9 modify pid varchar(18) unique;

14、修改表名

alter table 表名 rename 新表名;

alter table employees9 rename employees99;

15、在建表的同时创建约束

create table employees10

(

id int primary key auto_increment, -- 员工编号,主键

name varchar(50) not null, -- 员工姓名,不能为空

sex enum('男','女'),  -- 员工性别,枚举值

hiredate date,  -- 生日

salary float default 1000,  -- 工资,缺省值是1000

pid varchar(18) unique,-- 身份证号码,唯一性

departmentid int,-- 部门编号,外键

foreign key(departmentid) references departments(id)-- 设置外键

);

和15年前同樣下著梅雨的初夏夜晚,全身淋得濕答答的鄰居姐姐再次出現於傢門前,乞求翔平的爸爸收留她們姐妹倆當傢庭幫傭。翔平看著對過往隻字不提的初戀對象-芷榆姐感覺越來越陌生,而和差不多年紀的芷琳,卻在同一個屋簷下愈發親近...「少爺,請問今天想來點什麼♥」
2023-04-12
中乐透致富的鲁蛇,原以为有钱就能买下卖身的她们,背后竟牵扯出女人们的悲惨家世
2022-06-23
惜物的大学生-伟勋因为手机用到死当,被销售话术迷惑买了一支超级复古的新手机。某天,他利用手机的电子支付买东西,却遭到正妹店员强吻!没想到,当他买东西要付的钱越来越多,正妹店员的行径就越发离谱,这次还脱下了内裤…「先生,麻烦请尽快插入付款♥」
2023-06-01
我知道这样不对,但我的理智已在崩裂边缘,是酒精的影响?还是我真的......
2015-12-11
“隐藏在爱情后面的是他极致的执着”被怪物追击处于危险之中的浩宇.紧急瞬间,拥有s级超能力的午律救下了他.“没事吧?”S级超能力者午律和普通人浩宇的生活完全不一样本以为两人再也不可能遇见了但是几天之后两人在想不到的地方重逢了.搬到浩宇隔壁的午律已经知道了他的名字在一次次的接触中,产生了不一样的感觉…究竟对普通人A如此热情的原因是什么呢?
2023-05-19
还没起名字就和父母分开的小狼。被路过的野兔熙都救了一命。“哥哥能给我起个名字吗?”在小狼炯炯有神的眼神攻击下,熙都最终给小狼起了个名字叫偶然。以此为契机,偶然和熙都开始一起生活。成年后的偶然第一次成功人化的那天,在某处闪烁着危险的眼神。兔子的天敌狼偶然和野兔熙都会发生怎样的故事呢?
2023-05-19
柔道馆教练瑞振遇到了被特聘为临时教练且还是国家队选手出身的在河。与大大咧咧的瑞振不同,在河冷漠的态度令人尴尬无比,于是在回家途中遇到的二人一时冲动便一起去喝了酒...当瑞振中酒醉中醒来的时候,睁开眼睛看到的第一个景象却是在河一边喊着自已的名字一边行不可描述之事!
2023-05-19
投资有成的志汉买下了三间小套房当上年轻房东,没想到第一天就遇到高中同班的太妹同学,重启被当小弟使唤的生活,另一方面又遇到赖皮房客带着礼物来拜託他宽限房租期限,「房东先生,不然我可以用其他东西抵房租吗?」
2021-06-25
虽然玄秀拥有优秀的妻子,但他的夫妻生活并不美满。面对公司火辣女同事的诱惑,他该如何选择呢...
2019-01-28
在学长学弟制相当严格的体育大学里,南柱因为被学姊火辣身材吸引,不小心对着学姊勃起!!从此被贴上变态标籤的他,大学生活越过越坎坷。然而,没想到却有一双隐密的视线,在暗处偷偷观察着尺寸异于常人的「小南柱」!!
2022-06-23