SQL简单使用-进阶篇(2)

10.3 primary key 主键必须包含唯一的值,主键不能为null,每个表都应该有一个主键,并且是唯一的。
示例:参照unique,将其中的unique替换为 primary key即可。 上述有添加多个unique示例,如果改为primary 可以意思就是主键由添加的几个列组成。

10.4 foreign key 约束
a.可以用来预防破坏表之间连接的行为
b.防止非法数据插入外键列,因为它必须是指向的那个表中的值之一

示例:MYSQL

create table websites(
  id int(11) NOT NULL,
  name char(20) NOT NULL,
  url varchar(255) NOT NULL,
  alexa int(11) NOT NULL,
  country char(10) NOT NULL,
  primary key (id),
  foreign KEY (id) references apps(id)
);

示例:SQL server/oracle

CREATE TABLE websites
 (
 Id int NOT NULL PRIMARY KEY,
 OrderNo int NOT NULL,
 Id int FOREIGN KEY REFERENCES apps(Id)
 );

示例:MySQL/SQL Server/Oracle

CREATE TABLE websites
 (
 Id int NOT NULL,
 OrderNo int NOT NULL,
 Id int,
 PRIMARY KEY (O_Id),
 CONSTRAINT fk_PerOrders FOREIGN KEY (Id)
 REFERENCES apps(Id)
 );

alter table 使用foreign key约束
示例:

ALTER TABLE Orders
 ADD FOREIGN KEY (P_Id)
 REFERENCES Persons(P_Id)

示例:如需命名 FOREIGN KEY 约束,并定义多个列的 FOREIGN KEY 约束

ALTER TABLE Orders
 ADD CONSTRAINT fk_PerOrders
 FOREIGN KEY (P_Id)
 REFERENCES Persons(P_Id)

撤销FOREIGN KEY约束
示例:mysql

alter table Orders drop index fk_PerOrders;

示例:SQL

alter table Orders drop constraint fk_PerOrders;

10.5 CHECK 约束
用于限制列中的值的范围
示例:MYSQL

create table websites(
  id int(11) NOT NULL,
  name char(20) NOT NULL,
  url varchar(255) NOT NULL,
  alexa int(11) NOT NULL,
  country char(10) NOT NULL,
  check (id>0)
);

alter table 使用check约束
alter table websites add check (id>0);
撤销check约束(参照unique约束中的alter table)
alter table websites drop check constraint_name;

10.6 DEFAULT 约束
1.用于向列中插入默认值
2.如果没有规定其它值,那么将默认值添加到所有的记录
示例:MYSQL

create table student_information (
    student_id INT (10) NOT NULL,
    student_name CHAR (4),
    student_class CHAR (10) DEFAULT '' comment '班级',
    student_tele INT (11),
    student_add VARCHAR (255)
);  comment 是为 字段或列的属性添加注释用的

alter table 使用 default
示例:MYSQL

alter table websites
alter country set default 'CN';

示例:SQL server
alter table websites add constraint ad_c default 'CN' for country;
示例:oracle
alter table websites modify country default 'CN';
撤销default约束
示例:MYSQL

alter table websites
alter country drop default;

示例:SQL server/oracle

alter tables websites
alter column country drop default;
  1. create index 用于在表中创建索引
    在表中创建索引可以更高效的查询数据,用户无法查看到索引,他们只能被用来加速搜索/查询。
    注:更新一个包含索引的表所耗费的时间比没有索引表的时间更长,这是由于索引本身也需要更新。因此,理想的做法是仅仅在尝尝被所有的列(及表)上面创建索引。
    语法:创建一个简单的索引,允许使用重复的值
    create index index_name ON table_name (column_name);
    语法:在表中创建唯一的索引,不允许使用重复的值(create unique table):唯一的索引意味着两个行不能拥有相同的索引值。
    create UNIQUE index index_name ON table_name (column_name);

示例:将websites表中name列中创建名为web_index的索引。
create index web_index ON websites (name);

12.drop 可以删除表,索引和数据库
DROP INDEX 语句用于删除表中的索引。
用于 SQL Server 的 DROP INDEX 语法:
DROP INDEX table_name.index_name
用于 DB2/Oracle 的 DROP INDEX 语法:
DROP INDEX index_name
用于 MySQL 的 DROP INDEX 语法:
ALTER TABLE table_name DROP INDEX index_name
DROP TABLE 语句用于删除表。
DROP DATABASE 语句用于删除数据库。

仅仅需要删除表内的数据,但并不删除表本身
TRUNCATE TABLE table_name

13.ALTER TABLE 用于在已有的表中添加、删除或修改列。
添加列的语法:
ALTER TABLE table_name ADD column_name datatype;
删除表中的列语法:
ALTER TABLE table_name DROP COLUMN column_name datatype;
改变表中数据类型语法:
ALTER TABLE table_name MODIFY COLUMN column_name datatype;

示例: 在website表中添加名为column_date的列,然后修改列的数据类型,删除添加的列

alter table websites add column_date date;  添加
alter table websites modify column column_date year;修改
alter table websites drop column column_date;   删除
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值