赞
踩
--创建数据库 create database DateTest2 on --数据文件 ( name="DateTest2",--逻辑名称 filename="D:\SqlServer_Data\DateTest2.mdf",--物理路径和名称 size=5MB,--文件初始大小 filegrowth=2MB--数据文件增长方式,也可以写百分比 --注意:最后一项不用逗号结尾 ) log on ( name="DateTest2_log",--逻辑名称 filename="D:\SqlServer_Data\DateTest2_log.ldf",--物理路径和名称 size=5MB,--文件初始大小 filegrowth=2MB--数据文件增长方式,也可以写百分比 --注意:最后一项不用逗号结尾 )
(1)运行结果:
2. 快速创建数据库
--快速创建数据库
create database DataTest3
(1)所有的配置均默认,创建的位置也是默认位置。
(2)文件位置:
column_name data_type [IDENTITY(seed, increment)] [NOT NULL]
CREATE TABLE Employee (
ID int IDENTITY(1,1) PRIMARY KEY,
Name varchar(50) NOT NULL,
Age int,
Gender char(1)
);
在这个例子中,ID 列被定义为整数类型,并设置为自增长列。自增长列的起始值为 1,每次自增长的增量为 1。ID 列还被指定为表的主键,用于确保每个行都具有唯一的标识符。
INSERT INTO Employee (Name, Age, Gender)
VALUES ('John', 25, 'M');
此语句将向 Employee 表中插入一行数据,其中 ID 列的值将自动生成。
DECLARE @id int;
INSERT INTO Employee (Name, Age, Gender)
VALUES ('Jane', 30, 'F');
SET @id = SCOPE_IDENTITY();
SELECT @id;
这个例子将向 Employee 表中插入一行数据,并使用 SCOPE_IDENTITY() 函数获取最后插入行的 ID 值,将其存储到 @id 变量中,并返回该值。
sto int primary key,--学号,设置主键
(2)主键设置的identity(初值,步长)
sto int primary key identity(1001,1),--学号,设置主键,初值1001,后面每次新建一个学生自动加一
(3)设置非空
name varchar(20) not null,--姓名,设置为非空
(4)创建学生表
--注意创建表之前要切换到对应的数据库 use DateTest2 --创建表 --create table 表名 --( --字段名1 数据类型, --字段名2 数据类型 --) --建立学生表 create table Student ( Sto int primary key identity(1001,1),--学号,设置主键,初值1001,后面每次新建一个学生自动加一 Name varchar(20) not null,--姓名,设置为非空 Age int,--年龄 Sex nvarchar(1)check(Sex='男'or Sex='女'),--性别,添加约束 Phonenum int unique,--手机号,设置唯一性 StudentRemark text--学生相关描述 )
运行结果:
(1)char:定长,char(10),无论存储的数据是否真的存到了10个字节,都要占用10个字节。例如:存‘ab’仍然占用10个字节。(注意:一个汉字占两个字节)
(2)varchar:变长,varchar(10),最多占用10个字节,如果未到10个字节,占用内存是其真实大小。例如:存‘ab’只占2个字节
(3)text:长文本
(4)char,varchar,text前面加上n:存储的是Unicode字符,对中文很友好,例如:varchar(100):可以存储100个字符,50个汉字;而nvarchar(100):可以存储100个字符,100个汉字
(5)data与datatime:data:只能存储年月日,datatime:可存储年月日,时分秒。
(6)float:存储小数,存在误差
(7)decimal:精度更高,decimal(总长度,小数点后有几位),decimal(12,2):表示数据总长度12位,小数点后有两位
CREATE TABLE StudentTable( 学号 char(6) NOT NULL PRIMARY KEY , 姓名 char(8) NOT NULL , 性别 bit NULL DEFAULT (1) , 出生时间 datetime NULL , 专业 char(12) NULL , 总学分 int NULL DEFAULT (0) CHECK (总学分>=0 AND 总学分<160) , 备注 varchar(500) NULL ) CREATE TABLE CourseTable ( 课程号 char(3) NOT NULL , 课程名 char(16) NOT NULL , 开课学期 tinyint NULL DEFAULT (1) CHECK (开课学期>=1 AND 开课学期<=8) , 学时 tinyint NULL DEFAULT (0) , 学分 tinyint NULL DEFAULT (0) , PRIMARY KEY (课程号) ) CREATE TABLE GradeTable ( 学号 char(6) NOT NULL , 课程号 char(3) NOT NULL , 成绩 int NULL DEFAULT (0) , PRIMARY KEY (学号, 课程号) ) delete from StudentTable WHERE 学号=081102; insert StudentTable values('081101','王林',1,'1990-2-10','计算机',50,null), ('081102','程明' ,1,'1991-2-1' ,'计算机',50,null), ('081103','王燕' ,0,'1989-10-6' ,'计算机',50,null), ('081104','韦严平',1,'1990-8-26' ,'计算机',50,null), ('081106','李方方',1,'1990-11-20','计算机',50,null), ('081107','李明' ,1,'1990-5-1' ,'计算机',54,null), ('081108','林一帆',1,'1989-8-5' ,'计算机',52,'提前休完,获得学分'), ('081109','张强民',1,'1989-8-11' ,'计算机',50,'提前休完,获得学分'), ('081110','张蔚' ,0,'1991-7-22' ,'计算机',50,null), ('081111','赵琳' ,0,'1990-3-18' ,'计算机',50,null), ('081113','严红' ,0,'1989-8-11' ,'计算机',48,null), ('081201','王敏' ,1,'1989-6-10' ,'通信工程',42,null), ('081202','王林' ,1,'1989-1-29' ,'通信工程',40,null), ('081203','王玉民',1,'1990-3-26' ,'通信工程',42,null), ('081204','马琳琳',0,'1989-2-10' ,'通信工程',42,null), ('081206','李计' ,1,'1989-9-20' ,'通信工程',42,'提前休完,获得学分'), ('081210','李红庆',1,'1989-5-1' ,'通信工程',44,'提前休完,获得学分'), ('081216','孙祥欣',1,'1989-3-19' ,'通信工程',42,null), ('081218','孙研' ,1,'1990-10-9' ,'通信工程',42,null), ('081220','吴薇华',0,'1990-3-18' ,'通信工程',42,null), ('081221','刘燕敏',0,'1989-11-12','通信工程',42,null), ('081241','罗林琳',0,'1990-1-30' ,'通信工程',50,null); insert CourseTable values('101','计算机基础',1,80,5), ('102','程序设计与语言',2,68,4), ('206','离散数学',4,68,4), ('208','数据结构',5,68,4), ('210','计算机原理',5,85,5), ('209','操作系统',6,68,4), ('212','数据库原理',7,68,4), ('301','计算机网络',7,51,3), ('302','软件工程',7,51,3); insert GradeTable values('081101','101',80), ('081101','102',78), ('081101','206',76), ('081103','101',62), ('081103','102',70), ('081103','206',81), ('081104','101',90), ('081104','102',84), ('081104','206',65), ('081102','102',78), ('081102','206',78), ('081106','101',65), ('081106','102',71), ('081106','206',80), ('081107','101',78), ('081107','102',80), ('081107','206',68), ('081108','101',85), ('081108','102',64), ('081108','206',87), ('081109','101',66), ('081109','102',83), ('081109','206',70), ('081110','101',95), ('081110','102',90), ('081110','206',89), ('081111','101',91), ('081111','102',70), ('081111','206',76), ('081113','101',63), ('081113','102',79), ('081113','206',60), ('081201','101',80), ('081202','101',65), ('081203','101',87), ('081204','101',91), ('081210','101',76), ('081216','101',81), ('081218','101',70), ('081220','101',82), ('081221','101',76), ('081241','101',90);
--添加新的列
alter table Student
add grade int
--(2)删除列
alter table Student
drop column grade--column 表示列的意思
--alter table Student alter column 列名 数据类型
--修改年龄varchar(20)为varchar(10)
alter table Student alter column Name varchar(10)
--(5)添加约束(check约束),约束名可自定义
alter table Student add constraint CK__Student__Sex__1 check(Sex='男'or Sex='女')
查看约束名称:鼠标右键表->选中设计->选中列右键选择check
--(4)删除约束
--alter table 表名 drop constraint 约束名
alter table Student drop constraint CK__Student__Sex__1
约束为空:
--alter table 表名 constraint 约束名primary key(列名)
alter table 表名 add constraint 约束名 primary key(列名)
alter table 表名add constraint 约束名 unique(列名)
alter table 表名 add constraint 约束名foreign key(列名) references 关联表名(列名(主键))
###3.4.6添加默认值约束
alter table 表名 add constraint default 默认值 for 列名
insert into 表名(列名1,列名2......) values(数据1,数据2,......)
SET IDENTITY_INSERT Student ON
insert into Student(Sto,Name,Age,Sex,Phonenum,StudentRemark)
values(1001,'李华',23,'男',156423,'优秀')
insert into Student(Sto,Name,Age,Sex,Phonenum,StudentRemark)
values(1002,'王磊',25,'男',156489,'良好')
--简写,如果每一列都添加数据,则表名后面的列名可省略
insert into Student values('周杰伦',45,'男',156459,'良好')
INSERT INTO table_name (column1, column2, column3)
VALUES
('value1', 'value2', 'value3'),
('value4', 'value5', 'value6'),
('value7', 'value8', 'value9');
上面的语句将在一次操作中向表中插入三行数据,每行包含三个值。
实例:
insert into Student values
('那英',35,'女',189646,'优秀') ,
('张杰',43,'男',189465,'良好')
(2)使用INSERT INTO SELECT语句,可以使用INSERT INTO SELECT语句从另一个表或查询中选择多个行,并将它们插入到目标表中。例如:
INSERT INTO table_name (column1, column2, column3)
SELECT column1, column2, column3
FROM other_table
WHERE some_condition;
上面的语句将从另一个表中选择满足某些条件的多个行,并将它们插入到指定的表中。可以在SELECT语句中使用JOIN等其他操作来选择要插入的行。
DELETE FROM 表名 WHERE 列名 = 值;
其中,表名 是要删除数据的表的名称,列名 是要筛选删除的行的列的名称,值 是要匹配的列的值。
DECLARE @变量名 数据类型 [= 初始值];
DECLARE @myVar INT = 0;
DECLARE @myVar INT;
SET @myVar = 1;
WHILE condition
BEGIN
-- SQL statements to be executed
END
其中,condition 是一个逻辑表达式,当该表达式的值为 true 时,循环会一直执行。在循环体中,可以包含任意数量的 SQL 语句。
DECLARE @i int = 1;--创建变量
DECLARE @sum int = 0;
WHILE @i <= 10
BEGIN
SET @sum = @sum + @i;
SET @i = @i + 1;
END
SELECT @sum;
(1)PRINT 语句用于在控制台或查询结果窗格中输出一条消息。PRINT 语句的语法如下:PRINT 'message';
(2)其中,message 是要输出的文本消息。PRINT 语句可以用于调试和跟踪 SQL 脚本的执行过程,以及输出程序中的提示信息。但是,PRINT 语句不能将结果集返回给客户端,它只是在控制台或查询结果窗格中输出文本消息。
(3)以下是一个使用 PRINT 语句输出文本消息的示例:
DECLARE @message varchar(50) = 'Hello, world!';
PRINT @message;
在这个例子中,首先声明一个字符串变量 @message,并将其赋值为 ‘Hello, world!’。然后使用 PRINT 语句将 @message 变量的值输出到控制台或查询结果窗格中。
2.SELECT 语句
(1)SELECT 语句用于从数据库中检索数据,并将结果集返回给客户端。SELECT 语句的语法如下:
SELECT column1, column2, ... FROM table_name WHERE condition;
(2)其中,column1, column2, … 是要检索的列名,table_name 是要检索数据的表名,condition 是一个可选的筛选条件,用于限制检索的结果集。SELECT 语句可以用于检索数据、计算聚合函数、进行表连接、排序、分组等操作,并将结果集返回给客户端。
(3)以下是一个使用 SELECT 语句检索数据的示例:
SELECT *
FROM Customers
WHERE City = 'London';
在这个例子中,使用 SELECT 语句从 Customers 表中检索所有列,并筛选出城市为 London 的客户。这个查询会返回一个结果集,包含符合条件的所有客户记录。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。