1、第六讲 SQL语言之数据定义,数据库技术,数据库技术,SQL和T-SQL,SQL语言能够提供对数据库的各种操作访问,还能作为一种语言用于数据库应用的开发 Transact-SQL是SQL的增强版本 在SQL Server中使用“查询分析器”执行SQL语句。 SQL语句对大小写不敏感;SQL Server 默认安装的话,对大小写不敏感,数据库技术,SQL语言核心功能和动词,数据定义 create drop alter数据查询 select数据操纵 insert update 数据控制 grant revoke,数据库技术,数据定义,关键词:Create、Drop、Alter1.数据库2.数据表3
2、.索引4.视图(在后面讲述),数据库技术,一.数据库管理语句,1.创建数据库语句create database 语法:create database 数据库名其它参数 例子:create database luna这时候luna数据库使用默认的设置语法的代表里面的内容可选。如果想了解create的详细参数可以查看书本或者参考资料,数据库技术,一.数据库管理语句,2.删除drop database 语法:drop database 数据库名,.n 例子:drop database lunadrop database luna1,luna2可以同时删除多个数据库,数据库技术,二.表管理语句,1.创
3、建表 create table 语法: create table 表名( 字段1 数据类型 约束条件,字段2 数据类型 约束条件,.字段n 数据类型 约束条件 ),数据库技术,二.表管理语句,在create table语句中,共有几种定义表名的方式,注意表名写法的区别 create table 表名 要用“use语句或直接在查询分析器选择相应的数据库”,如:use database TestDBcreate table Employee create table 数据库名.属主名.表名如create table TestDB.dbo.Employee,数据库技术,完整例子,create dat
4、abase 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) go,1.可以使用分号(;)来标识在一句完整的sql语句;如果不 使用,sql语句根据语法结构来判断语句的结束 2.注意代码的空格
5、 3.Go的作用是执行其前面的代码;Use用来选择在那个数据库进行操作,数据库技术,二.表管理语句,2.添加各种约束 (1)非空约束 NULL/NOT NULL如果希望某一列必须有数据,在该列的定义后面加上NOT NULL参数。例子如:create table Employee(Emp_Name varchar(50) NOT NULL,.)注意要用空格隔开.那如果允许为空需不需要加上null?,数据库技术,二.表管理语句,(2)主键约束 primary key 语法:constraint constraint_name primary key (列名,) 如: Constraint Empl
6、oyeePK 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 const
7、raint_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 (
8、sno) references student会有出错的可能吗?什么情况下会正常?,数据库技术,二.表管理语句, foreign key和副表要出现在适当的位置经典问题:对应的字段还没出现或者对应的主表 都还没有创建就建立外键关系。,数据库技术,二.表管理语句,也可以这样设置:create table sc ( sno int null references student(sno),)建立外键时,如果不是单独放在一行,对单列建立 外键关系可以省略foreign key,数据库技术,二.表管理语句,(5)检查约束check 列级的约束:直接在每一列后面添加check(约束表达式) 例子:sex
9、 char(2) check (sex=男 or sex=女),(引号是英文状态引号)注意:check()中间的约束表达式不需要加上引号,数据库技术,二.表管理语句, 表级的约束 constraint constraint_name check(约束表达式)放单独行的写法注意:如果完整性约束条件涉及到该表的多个属 性列,则必须定义在表级上,否则即可以定义在 列级上也可以定义在表级上,数据库技术,二.表管理语句,(6)默认值约束 default直接在列后面添加:default(默认值) 例子:sex char(2) default(男),注意:这里的例子中default()中的内容为什么需要加上
10、引号,可以不加吗?要跟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子句
11、语法:alter table 表名add constraint 约束名 具体约束例子: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 列名 数据类型 例子:
12、alter table employeealter 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 !,