【Mysql】Headfirst系列第四章:表的关系及ALTER/CHANGE/RENAME TO
2017-09-13 09:37
295 查看
RDMBS Relational Database
Management System
只关心一个词语‘关系’
设计表的时候,考虑彼此列之间如何产生关系,如何一起描述某项事物。
原子性 atom 数据已经被分割至最小块,不能或者不应该再被分割
几个问题:
你的表在描述什么事物?
以何种方式使用表取得描述的事物?
列是否包含原子性数据,可让查询既简短又直逼要害?
主键
可独一无二地识别出每条记录
主键不可以为null
插入新纪录时必须指定主键值
主键必须简洁
主键不可以被修改
一个例子
CREATE TABLE my_contacts
{
contact_id INT NOTNULL,//主键非空
last_name varchar(30) default NULL,
first_name varchar(30) default NULL,
email varchar(50) default NULL,
gender char(1) default NULL,
birthday date default NULL,
profession varchar(50) default NULL,
location varchar(50) default NULL,
status varchar(50) default NULL,
interests varchar(100) default NULL,
seeking varchar(100) default NULL,
PRIMARY KEY (contact_id)
}//添加主键的语法:PRIMARY KEY
括号内为主键列的列名
SHOW 命令
看列名 SHOW colomns FROM table_name;
看警告信息 SHOW WARNING
主键ID自动递增
CREATE TABLE my_contacts
{
contact_id INT NOT NULL AUTO_INCREMENT,//主键非空
last_name varchar(30) default NULL,
first_name varchar(30) default NULL,
email varchar(50) default NULL,
gender char(1) default NULL,
birthday date default NULL,
profession varchar(50) default NULL,
location varchar(50) default NULL,
status varchar(50) default NULL,
interests varchar(100) default NULL,
seeking varchar(100) default NULL,
PRIMARY KEY (contact_id)
}//添加主键的语法:PRIMARY KEY
括号内为主键列的列名
ALTER指令 对表进行修改 但不舍弃数据
关键字: ALTER TABLE
ALTER TABLE my_contacts
ADD COLUMN eyes_color;
利用关键字 AFTER 可以指明新加入的列放在哪个列的后面
相关的关键字还有 BEFORE/SECOND/FIFTH
如果加入多个列,ADD COLUMNS
如果加入主键 ADD PRIMARY KEY(column_name)
表的改名换姓
RENAME 关键字
ALTER TABLE table_name
RENAME TO table_name1;
Change 指令
Change column 不仅可以改名字还可以同时修改列的类型
配合ALTER指令
ALTER TABLE mycontacts
CHANGE COLUMN eyes_color hair_color varchar(32);
BUT 如果你要把数据改为其他类型,可能会出现数据截断的情况
如果只想改变列的数据类型而不改变名称的话 改变位置
用modify这个关键字
ALTER TABLE table_name
MODIFY COLOUMN column_name type;
MODIFY COLUMN color AFTER make;
创建表之后还能通过关键字改变列的顺序吗?不可以
只能在添加新列时指定特定位置。
过多的列会使表变得臃肿,查询序列也会变低
通过drop卸掉用不着的列
ALTER TABLE project_list
DROP COLUMN start-end;
9/6 今日的练习
alter table hooptie
add column car_id int not null
AUTO_INCREMENT first,
add primary key (car_id);
修改列名,用change column old_name new_name new_type ;
Management System
只关心一个词语‘关系’
设计表的时候,考虑彼此列之间如何产生关系,如何一起描述某项事物。
原子性 atom 数据已经被分割至最小块,不能或者不应该再被分割
几个问题:
你的表在描述什么事物?
以何种方式使用表取得描述的事物?
列是否包含原子性数据,可让查询既简短又直逼要害?
主键
可独一无二地识别出每条记录
主键不可以为null
插入新纪录时必须指定主键值
主键必须简洁
主键不可以被修改
一个例子
CREATE TABLE my_contacts
{
contact_id INT NOTNULL,//主键非空
last_name varchar(30) default NULL,
first_name varchar(30) default NULL,
email varchar(50) default NULL,
gender char(1) default NULL,
birthday date default NULL,
profession varchar(50) default NULL,
location varchar(50) default NULL,
status varchar(50) default NULL,
interests varchar(100) default NULL,
seeking varchar(100) default NULL,
PRIMARY KEY (contact_id)
}//添加主键的语法:PRIMARY KEY
括号内为主键列的列名
SHOW 命令
看列名 SHOW colomns FROM table_name;
看警告信息 SHOW WARNING
主键ID自动递增
CREATE TABLE my_contacts
{
contact_id INT NOT NULL AUTO_INCREMENT,//主键非空
last_name varchar(30) default NULL,
first_name varchar(30) default NULL,
email varchar(50) default NULL,
gender char(1) default NULL,
birthday date default NULL,
profession varchar(50) default NULL,
location varchar(50) default NULL,
status varchar(50) default NULL,
interests varchar(100) default NULL,
seeking varchar(100) default NULL,
PRIMARY KEY (contact_id)
}//添加主键的语法:PRIMARY KEY
括号内为主键列的列名
ALTER指令 对表进行修改 但不舍弃数据
关键字: ALTER TABLE
ALTER TABLE my_contacts
ADD COLUMN eyes_color;
利用关键字 AFTER 可以指明新加入的列放在哪个列的后面
相关的关键字还有 BEFORE/SECOND/FIFTH
如果加入多个列,ADD COLUMNS
如果加入主键 ADD PRIMARY KEY(column_name)
表的改名换姓
RENAME 关键字
ALTER TABLE table_name
RENAME TO table_name1;
Change 指令
Change column 不仅可以改名字还可以同时修改列的类型
配合ALTER指令
ALTER TABLE mycontacts
CHANGE COLUMN eyes_color hair_color varchar(32);
BUT 如果你要把数据改为其他类型,可能会出现数据截断的情况
如果只想改变列的数据类型而不改变名称的话 改变位置
用modify这个关键字
ALTER TABLE table_name
MODIFY COLOUMN column_name type;
MODIFY COLUMN color AFTER make;
创建表之后还能通过关键字改变列的顺序吗?不可以
只能在添加新列时指定特定位置。
过多的列会使表变得臃肿,查询序列也会变低
通过drop卸掉用不着的列
ALTER TABLE project_list
DROP COLUMN start-end;
9/6 今日的练习
alter table hooptie
add column car_id int not null
AUTO_INCREMENT first,
add primary key (car_id);
修改列名,用change column old_name new_name new_type ;
相关文章推荐
- mysql主从复制-CHANGE MASTER TO 语法详解
- Entity Framework 实践系列 —— 搞好关系 - 单相思(单向一对一,one-to-one)
- 【MySQL】MySQL 5.7 "Your password has expired.To log in you must change it using a client that suppor"
- mysql 中alter语句中change和modify的区别
- MySQL ALTER TABLE: ALTER vs CHANGE vs MODIFY COLUMN 2014-07-03 14:13:11
- JPA关系映射系列一:one-to-one外键关联
- su: warning: cannot change directory to /home/mysql: No such file or directory
- mysql 安装出错,提示“mysqld: Can't change dir to 'D:\MySQL\MySQL Server 5.7\data\'”
- 【Java+Maven】问题系列——Cannot change version of project facet Dynamic Web Module to XX.XX
- JPA关系映射系列二:one-to-one主键关联
- mysql-1862、1820、java.sql.SQLException: Your password has expired. To log in you must change it using a client that supports expired passwords.
- Entity Framework 实践系列 —— 搞好关系 - 单相思(单向一对一,one-to-one)
- How to change max_allowed_packet value in mysql?
- mysql 中alter语句中change和modify的区别
- Linq to Sql 学习系列之八 继承与关系
- JPA关系映射系列三:one-to-many和many-to-one
- Pro JPA2读书笔记系列(四)-第四章(对象-关系映射)
- Entity Framework 实践系列 —— 搞好关系 - 生儿育女(一对多,one-to-many)
- MySQL不能删除外键,抱错Error on rename of './ruler/test2child' to './ruler/#sql2-298-92' (errno: 152)
- MySQL之 ALTER vs CHANGE vs MODIFY COLUMN