- 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 ;