MySQL中数据表的基本操纵
本文基于对国家863中部软件孵化器编著的《MySQL从入门到精通》一书的操作实践。
一、创建数据表
数据表属于数据库,在创建数据表之前,应该使用语句 USE 数据库名 指定操作是在那个数据库中进行。
创建数据表的语句为CREATE TABLE ,语法规则如下:
CREATE TABLE 表名
( //为括号
字段名1 数据类型 [列级别约束条件] [默认值],
字段名1 数据类型 [列级别约束条件] [默认值],
......
[表级约束条件]
); //要有分号
使用CREATE TABLE 创建表时,要注意一下几点:
(1)要创建表名,不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER等;
(2)数据表中每一个字段的名称和数据类型,如果要创建多个,要用逗号隔开。
1、主键约束
主键,又称主码,是表中一列或者多列的组合。主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,它们之间一一对应。主键分为两种类型:单字段主键和多字段联合主键。
(1)单字段主键
a)在定义列的同时指定主键,语法规则如下:
字段名 数据类型 PRIMARY KEY [默认值]
b)在定义完所有列之后指定主键,语法格式如下:
PRIMARY KEY [字段名]
(2)多字段联合主键
语法规则如下:
PRIMARY KEY [字段1,字段2....,字段名n]
2、外键约束
外键用来在两个表的数据之间建立连接,它可以是一列或多列,一个表可以有一个多多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。主键所在的表为主表,外键所在的表为从表。
创建外键的语法如下:
[CONSTRAINT 外键名] FOREIGN KEY 字段名1 [字段名2...] REFERENCES 主表名 主键列1 [,主键列2...]
注意:子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样,则创建子表是,就会出现错误提示。
3、非空约束
非空约束(NOT NULL Constraint)是指字段的值不能为空。语法规则如下:
字段名 数据类型 NOT NULL
4、唯一性约束
唯一性约束要求该列唯一,允许为空,但是只能出现一个空值。唯一约束可以确保一列或基类都不出现重复值。
1)语法
字段名 数据类型 UNIQUE
2)语法
在定义往所有列之后指定唯一约束,语法如下:
[CONSTRAINT <约束名>] UNIQUE(<字段名>)
5、默认约束
默认约束指定某列的默认值。语法如下:
字段名 数据类型 DEFAULT 默认值
注:UNIQUE和PRIMARY KEY的区别:
1)一个表可以有多个字段声明为UNIQUE,但是只能由一个PRIMARY KEY声明;
2)声明为PRIMARY KEY 的类不允许有空值,但是声明为UNIQUE的字段允许空值的存在。
6、设置数据表的属性值自动增加
在数据库应用中,希望在每次插入新记录时,系统自动生成字段的主键值。可以通过表主键添加AUTO_INCREMENT关键字来实现。
一个表只能由一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。语法如下:
字段名 数据类型 AUTO_INCREMENT
然后对数据表中插入相应的数据以后看:
二、查看数据表结构
1、查看表基本结构
语法如下:
DESCRIBE(DESC) 表名;
2、查看表详细结构
语法格式如下:
SHOW CREATE TABLE <表名\G>;
三、修改数据表
1、修改表名
语法如下:
ALTER TABLE <旧表名>RENAME [TO]<新表名>;
注:修改表名并不修改表的结构。
2、修改字段数据类型
ALTER TABLE<表名>MODIFY<字段名><数据类型>;
3、修改字段名
ALTER TABLE<表名>CHANGE<旧字段名><新字段名><新数据类型>;
4、添加字段
ALTER TABLE<表名>ADD<新字段名><数据类型>[约束条件][FIRST/AFTER 已存在的字段名];
默认的添加位置是数据表的最后列
1)添加无完整性约束条件的字段
2)添加有完成约束条件的字段
3)在表的第一类添加一个字段
4)在表中指定列之后添加一个字段
5、删除字段
ALTER TABLE <表名>DROP<字段名>;
6、修改字段排序
ALTER TABLE<表名>MODIFY<字段1><数据类型>FIRST AFTER<字段2>;
7、修改表的存储引擎
ALTER TABLE<表名>ENGINE=<更改后的存储引擎名>;
8、删除表的外键约束
ALTER TABLE<表名>DROP FOREIGN KEY<外键约束名>;
四、删除数据表
DROP TABLE 表1,表2....
值得注意的是,删除数据表时,若有外键约束,应先删除约束条件,再删除主表。也可以先删除子表,再删除主表。
总结:
1、数据表的修改用ALTER TABLE
2、数据表的删除用DROP
MySQL中数据表的基本操纵的更多相关文章
- 查看MYSQL中数据表占用的空间
由于数据太大了.所以MYSQL需要瘦身,那前提就是需要知道每个表占用的空间大小. 首先打开指定的数据库: use information_schema; 如果想看指定数据库中的数据表,可以用如下语句: ...
- MySQL中数据表的查操作
查询数据表的全部内容 mysql> show tables;#查看当前数据库下的全部表 +--------------------+ | Tables_in_ceshi_ku | +------ ...
- MySql中数据表增加字段很慢怎么办
正确的做法是这样,对于数据量很大的表,需要添加所有或者修改字段的做法是如下: 1.先创建一张一样的表 create table new_tb like tb_old; 2.修改创建表的字段 alter ...
- mysql中数据表记录的增删查改(2)
select `数据表.字段1`, group_concat(`数据表.字段2`) from `数据表` group by `数据表.字段1` order by `数据表.字段1` desc; sel ...
- mysql中数据表记录的增删查改(1)
数据记录的增删改查 insert into `数据表名称` (`字段名称`, ...) values ('1', ...); delete from `数据表名称` where 子句; update ...
- MySQL中数据表的增操作
今天学习到表的增操作,写个博客总结一下,PS:以下所有的凝视都是我在电脑上所有操作完毕后,再拷贝到记事本上加入的.至于在运行的时候可不能够那样加入凝视,就有待考证了. 选择库 mysql> sh ...
- 给MySQL中数据表添加字段
添加一个char字段: mysql> alter table stock add src char(20); Query OK, 3766 rows affected (0.65 sec) Re ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- MySQL为数据表的指定字段插入数据
username not null 没有默认值/有默认值 insert不插入username字段 均不报错 2014年07月23日21:05 百科369 MySQL为数据表的指定字段插入数据 ...
随机推荐
- Qt-QPalette-调色板学习
已经很久没有更新博客了,一是因为换了公司,完全是断网开发了,没有时间来写博客,最主要的就是温水煮青蛙,自己在舒适的环境中越来越懒了,最近打算强制自己更新一波.不知道能坚持多久.由于目前没有具体的Qt项 ...
- Qt-QML-Connections,接受组件信号
这里还没有什么新的体会.就直接上代码,在上篇一处上改出来的 import QtQuick 2.5 import QtQuick.Controls 1.4 ApplicationWindow { vis ...
- 在使用Pipeline串联多个stage时model和非model的区别
train.csv数据: id,name,age,sex1,lyy,20,F2,rdd,20,M3,nyc,18,M4,mzy,10,M 数据读取: SparkSession spark = Spar ...
- Python3 Tkinter-Scrollbar
1.创建 from tkinter import * root=Tk() Scrollbar(root).pack() root.mainloop() 2.设置silder的位置 from tkint ...
- Twaver的mono-desiner导出的json文件解析
以画的交换机为例,其他大概都差不多. 利用Twaver做出交换机模型如图1所示,其中,每一个端口都是一个单独的对象.具体Twaver操作流程参见网址:http://twaver.servasoft.c ...
- Thunder团队第六周 - Scrum会议3
Scrum会议3 小组名称:Thunder 项目名称:i阅app Scrum Master:李传康 工作照片: 参会成员: 王航:http://www.cnblogs.com/wangh013/ 李传 ...
- java鼠标操控小程序
最近在做一个软工的屏幕监控软件,已经实现了屏幕图片的传输,但是没有鼠标,才发现键盘上的PtrScSysRq键所截到图是没有鼠标信息的.== 暂时只需实现鼠标的移动事件,用robot.mouseMove ...
- Android 平台 HTTP网速测试 案例 API 分析
作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/25996817 工信部规定的网速测试标准 : 除普通网页测速 ...
- spring学习(一)——控制反转简单例子
spring框架是一个开源的轻量级的基于IOC与AOP核心技术的容器框架,主要是解决企业的复杂操作实现. 那IOC与AOP,到底如何解释呢,在看spring视频中,两个专业术语一定必须要懂得. IOC ...
- ACM 第六天
图论 网络流 最大流 INF(初始值) 路径上权值最小的边,决定流量大小. 流量网络的三个特性: ①流量控制 ②反对称性 ③流量守恒 残余网络:保留了c(e)容量<f(e)流量[可以继续流,因为 ...