第六讲 SQL语言之数据定义 第三讲 SQL Server 2000 数据库技术
SQL和T-SQL SQL语言能够提供对数据库的各种操作访问,还能作为一种语言用于数据库应用的开发 Transact-SQL是SQL的增强版本 在SQL Server中使用“查询分析器”执行SQL语句。 SQL语句对大小写不敏感;SQL Server 默认安装的话,对大小写不敏感 数据库技术
SQL语言核心功能和动词 数据查询 select 数据操纵 insert update 数据控制 grant revoke 数据定义 create drop alter 数据查询 select 数据操纵 insert update 数据控制 grant revoke 数据库技术
数据定义 关键词:Create、Drop、Alter 1.数据库 2.数据表 3.索引 4.视图(在后面讲述) 数据库技术
一.数据库管理语句 1.创建数据库语句create database 语法:create database 数据库名[其它参数] 例子:create database luna 这时候luna数据库使用默认的设置 语法的[]代表里面的内容可选。如果想了解create的详细参数可以查看书本或者参考资料 数据库技术
一.数据库管理语句 2.删除drop database 语法:drop database 数据库名[,...n] 例子:drop database luna drop database luna1,luna2 可以同时删除多个数据库 数据库技术
二.表管理语句 1.创建表 create table 语法: create table 表名 ( 字段1 数据类型 [约束条件], 字段2 数据类型 [约束条件], ....... 字段n 数据类型 [约束条件] ) 数据库技术
二.表管理语句 在create table语句中,共有几种定义 表名的方式,注意表名写法的区别 ①create table 表名 要用“use语句或直接在查询分析器选择相应的数据库”,如: use database TestDB create table Employee ②create table 数据库名.属主名.表名 如create table TestDB.dbo.Employee 数据库技术
完整例子 create database TestDB go use TestDB create table Employee ( Emp_Id smallint, Emp_Name varchar(50), Sex char(2), Age smallint, Title varchar(50), Office_phone varchar(30), Mobile_phone varchar(50), Id_Card varchar(30), Wage decimal(18,2), Dep_Id tinyint) 1.可以使用分号(;) 来标识在一句完整 的sql语句;如果不 使用,sql语句根据 语法结构来判断语 句的结束 2.注意代码的空格 3.Go的作用是执行其 前面的代码;Use用 来选择在那个数据 库进行操作 数据库技术
二.表管理语句 2.添加各种约束 (1)非空约束 NULL/NOT NULL create table Employee (…… Emp_Name varchar(50) NOT NULL, ……. ) 注意要用空格隔开.那如果允许为空需不需要加上null? 数据库技术
二.表管理语句 (2)主键约束 primary key 语法:[constraint constraint_name] 如: ① Constraint EmployeePK primary key (Emp_Name), ② 注意:可以这样 primary key(sno,cno) 如果这样写的话是何种含义? 数据库技术
二.表管理语句 添加主键约束方法: ① 在某字段数据类型后直接使用“primary key” Emp_Name varchar(50) primary key, ② 单独添加一行,一般放在最后面 Constraint EmployeePK primary key(Emp_Name), --如果单独添加的一行主键约束放在开头位置的 时候会有可能出现什么情况? 数据库技术
二.表管理语句 (3)唯一性约束unique 语法:[constraint constraint_name] unique (列名,…) 使用方法类似于主键的使用方法 数据库技术
二.表管理语句 (4)外键约束 foreign key 语法:[constraint constraint_name] Foreign Key (列名) References 主表名(列名) 例子:在student表和sc表,把sc表中的sno字段设置 为student表中sno的外键,这样在sc表可以这样设 置:(单独放一行写法) foreign key (sno) references student(sno) 数据库技术
二.表管理语句 ① 如果写成下面的样子,要表达的含义是 什么: foreign key (sno) references student 会有出错的可能吗?什么情况下会正常? 数据库技术
二.表管理语句 ② foreign key和副表要出现在适当的位置 经典问题:对应的字段还没出现或者对应的主表 都还没有创建就建立外键关系。 数据库技术
二.表管理语句 也可以这样设置: create table sc ( sno int null references student(sno), ……) 建立外键时,如果不是单独放在一行,对单列建立 外键关系可以省略foreign key 数据库技术
二.表管理语句 (5)检查约束check ① 列级的约束:直接在每一列后面添加 check(约束表达式) 例子: sex char(2) check (sex=‘男’ or sex=‘女’), (引号是英文状态引号) 注意:check()中间的约束表达式不需要加上引号 数据库技术
二.表管理语句 ② 表级的约束 [constraint constraint_name] check(约束表达式) 放单独行的写法 注意:如果完整性约束条件涉及到该表的多个属 性列,则必须定义在表级上,否则即可以定义在 列级上也可以定义在表级上 数据库技术
二.表管理语句 (6)默认值约束 default 直接在列后面添加: default(默认值) 例子: sex char(2) default(‘男’), 注意:这里的例子中default()中的内容为什么 需要加上引号,可以不加吗?要跟check 区分开来 数据库技术
二.表管理语句 3.修改表 alter table 语法: alter table 表名 [add子句 ] [drop子句] [modify子句] [alter子句]; 数据库技术
二.表管理语句 添加列:add子句 语法:alter table 表名 add 列名 数据类型 [约束条件] 例子: alter table employee add addr char(20) 数据库技术
二.表管理语句 删除列:drop column子句 语法:alter table 表名 drop column 列名 数据库技术
二.表管理语句 添加约束:add constraint子句 语法:alter table 表名 例子: alter table employee add constraint addr_p primary key(addr) 数据库技术
二.表管理语句 删除约束: drop constraint子句 语法:alter table 表名 drop constraint 约束名 例子: alter table employee drop constraint addr_pk 数据库技术
二.表管理语句 修改列: alter column 语法:alter table 表名 alter column 列名 数据类型 例子: alter table employee alter column addr int 数据库技术
二.表管理语句 4.删除表 drop table 语法:drop table 表名 要首先在查询分析器选中要操作的数据库, 或者使用use命令选择要操作的数据库 数据库技术
三.索引 创建索引 create index 索引名称 on 表名(列名) 删除索引 drop index 索引名称 数据库技术
注意问题 1.“查询分析器”的sql关键字是有颜色的 2.表名、数据库.所有者.表名的区别 3.主键primary key、外键references,唯一性约束unique,检查性约束check和默认default直接在后面添加即可。那些地方是空格,那些地方是有逗号,那些有括号的要清楚。 4.怎样才算是语句结束或者是一行结束要弄清楚。可以加分号表名语句结束。 5.主键约束和外键约束可以单独一行添加,注意不同的外键约束的写法:如 ①foreign key (cno) references student(sno) ②cno int references student(sno) 数据库技术
Thank You !