数据表的修改

1. 创建实验表people

  • people

CREATE TABLE people
(
name varchar(),
gender varchar(),
birthday varchar()
)

2.修改表

ALTER TABLE 表名
子句

--(1) 添加字段
ALTER TABLE 表名
ADD 列名 类型 [列说明]

-- 列说明
-- [NULL | NOT NULL]
-- [DEFAULT]
-- [PRIMARY KEY][约束]

--例  在people中添加电话号码

ALTER TABLE people
ADD tel varchar() --例 在people中添加年龄 ALTER TABLE people
ADD age int DEFAULT CHECK(age >= and age <= ) SELECT * FROM people --例 在people中添加id字段作主键
ALTER TABLE people
ADD id varchar() CONSTRAINT pkey PRIMARY KEY

-- (2) 删除字段
ALTER TABLE 表名
DROP COLUMN 列名

--例如  删除“电话”字段
ALTER TABLE people
DROP COLUMN tel

-- (3)修改字段类型

ALTER TABLE 表名
ALTER COLUMN 列名 新类型

--例 将出生日期改为日期型
ALTER TABLE people
ALTER COLUMN birthday date ALTER TABLE people
ALTER COLUMN age decimal(,) --即使修改类型也不能与建表时的约束产生冲突,这里出错

--(4)添加约束

ALTER TABLE 表名
ADD CONSTRAINT 约束名
CHECK (条件)

--例 为性别字段添加约束
ALTER TABLE people
ADD CONSTRAINT pgender
CHECK(gender='男' or gender='女')

--(5)删除约束

ALTER TABLE 表名
DROP CONSTRAINT 约束名

--例如 删除为性别加的约束
ALTER TABLE people
DROP CONSTRAINT pgender --为约束命名,便于引用 --删除id上的主键
ALTER TABLE people
DROP CONSTRAINT pkey

--(6)添加主键约束
ALTER TABLE 表名
ADD CONSTRAINT 约束名
PRIMARY KEY(字段列表)

--例如 将people中id和姓名设为主键(当前无主键)
--注: (1) 目前表中无主键
--     (2) 所用字段不允许空

ALTER TABLE people
ALTER COLUMN
name varchar() NOT NULL --修改name字段的类型 ALTER TABLE people
ADD CONSTRAINT pkey
PRIMARY KEY(id, name) --组合主键

--(7)添加外键约束

ALTER TABLE 表名
ADD CONSTRAINT 约束名 FOREIGN KEY(外键字段名)
REFERENCES 表名2(被参照字段名)

--例 id设为外键

ALTER TABLE people
ADD CONSTRAINT fkey FOREIGN KEY(id)
REFERENCES Student(snumb) --此时列的长度不匹配, 报错,即:先运行下段代码,再重新运行上段代码
ALTER TABLE people
ALTER COLUMN
id varchar(10) NOT NULL

--3.删除表

DROP
DROP TABLE 表名

--例如 删除people表
DROP TABLE people

SQL语句(三)数据表的修改的更多相关文章

  1. mysql详解常用命令操作,利用SQL语句创建数据表—增删改查

    关系型数据库的核心内容是 关系 即 二维表 MYSQL的启动和连接show variables; [所有的变量] 1服务端启动 查看服务状态 sudo /etc/init.d/mysql status ...

  2. 用SQL语句将数据表中的数据保存为JSON格式

    没有找到好的工具,只想到了拼字符串的方式,用   NVARCHAR(MAX)  可能有截断,不推荐使用,方法中使用了 FOR XML PATH('') 实现,有关其使用方法参考这里 表结构: SQL ...

  3. sql语句删除数据表重复字段的方法

    大家都可能遇到字段重复的情况,网上很多人在找方法,也给出了一些方法,但是有的方法是误导大家,铁牛写出以下方法,方便大家使用 1.通过group by把重复的字段筛选出来,并建立临时表tmp 1 cre ...

  4. sql语句创建数据表

    unsigned 数值类型 无符号化 AUTO_INCREMENT 自增长 PRIMARY KEY 唯一主键 COMMENT 备注信息 BIT 类型只有1和0两个值 enum 枚举数值类型 UNIQU ...

  5. sql语句中----删除表数据drop、truncate和delete的用法

    sql语句中----删除表数据drop.truncate和delete的用法 --drop drop table  tb   --tb表示数据表的名字,下同 删除内容和定义,释放空间.简单来说就是把整 ...

  6. PHP如何通过SQL语句将数据写入MySQL数据库呢?

    1,php和MySQL建立连接关系 2,打开 3,接受页面数据,PHP录入到指定的表中 1.2两步可直接使用一个数据库链接文件即可:conn.php <?phpmysql_connect(&qu ...

  7. SQL语句之 数据约束

    SQL语句之 数据约束 什么是数据约束 数据约束用来限制用户对数据的非法的修改操作. 1.约束字段的默认值 如果插入记录时,没有给某个字段赋值,那么我们可以设置它的默认值 关键字:default CR ...

  8. 通过Sql语句导数据

    在通过SQL Server向导中的SQL语句导数据时,默认情况下源表中的nvarchar字段类型会变成202,解决此问题的方法是,要重新选择一下对应的数据接收表.

  9. 使用sql语句获取数据库表的信息

    下面的sql语句可以查看表的信息.其中modify_date和create_date可以根据表的修改时间来查看.如果不需要删除后,就能看到所有表的字段信息 ) PERCENT d.name AS 表名 ...

随机推荐

  1. 【历史】- Windows NT 之父 - David Cutler

    David Cutler,大卫·卡特勒,一位传奇程序员,1988年去微软前号称硅谷最牛的内核开发人员,是VMS和Windows NT的首席设计师,被人们成为“操作系统天神”.他曾供职于杜邦.DEC等公 ...

  2. PSP(4.20——4.26)以及周记录

    1.PSP 4.20 8:45 9:25 10 30 Cordova A Y min 13:00 17:00 65 175 Cordova A Y min 4.21 9:00 17:00 125 35 ...

  3. python模块_re模块

    正则表达式笔记'''#re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.#re.search 扫描整个字符串并返回第一个成功的匹配#fi ...

  4. pandas函数应用

    1.管道函数 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang cha ...

  5. python threading模块使用 以及python多线程操作的实践(使用Queue队列模块)

    今天花了近乎一天的时间研究python关于多线程的问题,查看了大量源码 自己也实践了一个生产消费者模型,所以把一天的收获总结一下. 由于GIL(Global Interpreter Lock)锁的关系 ...

  6. Python——socketsever模块

    1.作用:同时与多个客户端通信 import socketserver class MyServer(skcketserver.BaseRequestHandler): def handle(self ...

  7. Nginx HTTP 过滤addition模块(响应前后追加数据)

    --with-http_addition_module 需要编译进Nginx 其功能主要在响应前或响应后追加内容 add_before_body 指令 将处理给定子请求后返回的文本添加到响应正文之前 ...

  8. SpringBoot+MyBatis多数据源使用分页插件PageHelper

    之前只用过单数据源下的分页插件,而且几乎不用配置.一个静态方法就能搞定. PageHelper.startPage(pageNum, pageSize); 后来使用了多数据源(不同的数据库),Page ...

  9. bzoj 2460 [BeiJing2011]元素 (线性基)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2460 题意: 给你一堆矿石,矿石有a,b两种性质,取任意个矿石,满足取得的这些矿石a性质异或 ...

  10. Educational Codeforces Round 25 A,B,C,D

    A:链接:http://codeforces.com/contest/825/problem/A 解题思路: 一开始以为是个进制转换后面发现是我想多了,就是统计有多少个1然后碰到0输出就行,没看清题意 ...