SQL Server 代码语法
- 代码语法
代码语法
1.创建数据库
create database "xxxx";
2.使用指定的数据库
use "xxxx";
3.删除一个指定的数据库(删除数据库会将数据库中的表,和表中的数据,全部清除,不可撤回)
drop database "xxxx";
4.创建表
/*
create table employees
(
字段名 数据类型 约束,
字段名 数据类型 约束,
字段名 数据类型 约束,
字段名 数据类型 约束
)
*/
--创建一张雇负表
create table employees
(
emp_id int identity(100,1), --在建表时为字段添加自增属性(identity)
emp_id_card varchar(18),
emp_name nvarchar(50),
emp_gender bit,
emp_join_date datetime,
emp_age tinyint,
emp_address nvarchar(300),
emp_phone char(11),
emp_depld int,
emp_email varchar(100)
)
5.添加
insert into employees values(
'21321322','张三',1,
'2013-01-18',20,'重庆市渝北区','1946843685',
1223456,'10546348342@qq.com'
);
6.查询( * 表示查询所有数据)
select * from employees ;
7.复制表(只复制结构)
select * into employees2 from employees where 1=0;
7.复制表(复制结构和数据)
select * into employees2 from employees;
8.添加新字段到指定表中(新增字段后,原有数据为null)
alter table employees add education nvarchar(50);
9.修改字段的数据类型(前提是字段数据类型为空或者数据和被修改的类型可匹配)
alter table employees alter column education tinyint;
--为字段添加内容
update employees set education =100 where emp_id=100;
10.删除一个字段
alter table employees drop column education;
11.修改表名
--exec 同 execute
exec sp_rename 'employees','employee';
execute sp_rename 'emplyees','employee';
12.建表后添加自增(只能先将字段删除后添加)
alter table employee drop column emp_id;
alter table employee add emp_id int identity( 1001,1);
13.找到emp_id并删除那一行的数据
delete from employee where emp_id=1001;
重新添加数据
insert into employee values(
'21321322','张三',1,
'2013-01-18',20,'重庆市渝北区','1946843685',
1223456,'10546348342@qq.com'
);
14.创建索引
create index idx_name on employee(emp_name);
15.对索引的管理
exec sp_helpindex employee; --查看指定表中所有的索引
exec sp_rename 'employee.idx_name','idx_newname'; --为索引改名
drop index employee.idx_newname; --删除索引
update statistics employee; --更新指定表中所有的索引信息
16.约束的种类
/*
约束的种类:
主键约束:唯一约束,检查约束,非空约束
唯一约束:值不能重复
检查约束:限定值范围
默认值约束:提供默认值
非空约束:不能为空
外键约束:引用关系
建表后对约束的所有操作,必须建立在表中无数据的基础上
*/
--先建表
create table employees
(
emp_id int identity(1001,1),
emp_id_card varchar(18),
emp_name nvarchar(50),
emp_gender bit,
emp_join_date datetime,
emp_age tinyint,
emp_address nvarchar(300),
emp_phone char(11),
emp_depld int,
emp_email varchar(100)
)
--1.建表后添加主键约束
--alter table表名 add constraint 约束名 primary key(字段名);
alter table employees add constraint PK_EMPID primary key(emp_id);
--删除主键约束:
alter table employees drop constraint PK_EMPID;
--2.建表后创建唯一约束
alter table employees add constraint UN_NAME unique(emp_name);
--删除唯一约束:
alter table employees drop constraint UN_NAME;
--3.建表后创建检查约束
alter table employees add constraint CK_AGE check(emp_age>=18 and emp_age<=25);
--删除检查约束:
alter table employees drop constraint CK_AGE;
--4.建表后创建默认值约束
alter table employees add default(0) for emp_gender with values;
--删除默认值约束(后面那串约束在左边对应属性查看并修改成对应的约束):
alter table employees drop constraint DF__employees__emp_g__060DEAE8;
--5.建表后创建非空约束
alter table employees add constraint NT_PHONE check(emp_phone is not null);
--删除非空约束:
alter table employees drop constraint NT_PHONE;
--请先删除表employees(drop)
--建表时添加约束(和建表后添加一样)
create table employees(
emp_id int identity(1001,1) primary key,
emp_id_card varchar(18),
emp_name nvarchar(50) unique,
emp_gender bit default 0,
emp_join_date datetime,
emp_age tinyint check(emp_age>=18 and emp_age<=25),
emp_address nvarchar(300),
emp_phone char(11) not null,
emp_depId int,
emp_email varchar(100)
)
17.建表时语法
--外键约束:存在于至少两张表之上
--建表时添加外键
create table class
(
C_id tinyint identity(101,1) primary key,
c_name nvarchar(50) unique
)
insert into class values('三班');
select * from class;
create table student(
s_id int identity(1001,1) primary key,
s_name nvarchar(100) not null,
s_age tinyint check(s_age>=18 and s_age<=25),
s_sex nchar(4) check(s_sex='男' or s_sex='女'),
s_phone char(11) not null,
c_id tinyint foreign key references class(c_id) --外键
)
insert into student values('张三',20,'男','12345678998' ,101);
select * from student;
--建表后添加外键
alter table student add constraint FK_CID foreign key(c_id) references class(c_id);
--外键操作:将一张表的主键作为另-张表的外键
--字段名称可以不同,但是数据类型必须相同
--新增外键功能:级联删除和级联更新
alter table student add constraint FK_CID foreign key(c_id) references class(c_id)
on delete cascade on update cascade;
/*
如果学生表关联了班级表,如果表中没有数据,此时班级表可删除
学生表可删除
如果学生表关联了班级表,如果表中有数据,此时班级表不可删除,
学生表可刪除
如果学生表关联了班级表,如果班级表中某一条数据被学生表关联了,
此时,该数据不可删除,反之可刪删除
*/