T-SQl命令语句
数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)
数据库T-SQL语⾔操作(T-SQL语句、数据库、表、视图、索引)T-SQL语⾔按⽤途分四部分1. 数据定义语⾔(CREATE,DROP,ALTER)2. 数据操作语⾔(INSERT,DELETE,UPDATE)3. 数据查询语⾔(SELECT)4. 数据控制语⾔(GRANT,REVOKE,DENY)数据类型1. 系统数据类型2. ⽤户⾃定义数据类型(建⽴⽅式:a.图形化⽅式 b.命令⽅式)1use TEST2EXEC sp_addtype sno,'varchar(10)','nonull'3EXEC sp_droptype sno变量命名规则:字母、下划线、@或#开头,但不能全为下划线、@或#不能为“关键字”,不能嵌⼊空格及其他特殊字符,如需使⽤则需要双引号或⽅括号括起1.局部变量:由⽤户声明,必须以@开头,只在定义该变量的过程中有效,局部变量必须先声明后使⽤注意:第⼀次声明变量时,其值设置为NULL。
局部变量不能使⽤“变量=变量值”的格式进⾏初始化,必须使⽤SELECT或SET语句来设置其初始值。
如果声明字符型的局部变量,⼀定要在变量类型中指明其最⼤长度,否则系统默认其长度为1。
若要声明多个局部变量,请在定义的第⼀个局部变量后使⽤⼀个逗号,然后指定下⼀个局部变量名称和数据类型。
1USE student2DECLARE@var1char(10),@var2int3SET@var1='number'4select@var2=cgrade5from sc6where sno='201810010'78print@var1+"s"2.全局变量:由系统定义,供SQL server系统内部使⽤的变量,任何程序任何时间都可以调⽤。
通常以“@@”开头。
T-SQL语句1.注释语句(1) --(2) /*……*/2.批处理--GO3.控制流程语句(1) begin...end语句(相当于C语⾔中的{} )(2) if...else语句(可嵌套)(3)case语句(多条件选择语句)(4)print语句(屏幕输出语句)(5)while语句(有条件的循环语句)(6)goto语句(⽆条件跳转语句)(7)break语句(8)continue语句4.常⽤函数(系统函数、⽤户⾃定义函数)⼀些系统函数:(1)字符串函数(2)数学函数(3)⽇期和时间函数(4)聚合函数注意:⽤户⾃定义函数:1.分类:标量值函数:返回单个值内联表值函数:返回可更新的表多语句表值函数:返回不可更新的表2.标量值函数命令⽅式创建1CREATE FUNCTION f2(@a real,@b real) 2RETURNS real3AS4BEGIN5IF@a>=@b6RETURN@a7RETURN@b8END910PRINT'最⼤值为'11PRINT dbo.f2(77,56)1CREATE FUNCTION f3(@n real)2RETURNS real3AS4BEGIN5DECLARE@i real,@sum real6SET@i=07SET@sum=08WHILE@i<@n9BEGIN10SET@i=@i+111SET@sum=@sum+@i12END13RETURN@sum14END1516PRINT dbo.f3(10)3.⾃定义函数的调⽤(1)标量值函数可以使⽤select、print、exec调⽤(2)表值函数只能⽤select调⽤4.删除⽅式drop function 函数名数据库数据库概述1.数据库常⽤对象:表、数据类型、视图、索引、存储过程、触发器系统数据库:master、model、tempdb、msdb2.数据库存储结构(数据库⽂件、数据库⽂件组):数据库⽂件:存放数据库数据和数据库对象的⽂件。
T-SQL语句集合及示例
《数据库应用与开发教程》书内T-SQL语句集合及示例1.创建数据库CREATE DATABASE数据库名ON PRIMARY( NAME=主数据库文件名,FILENAME=主数据库文件地址名,SIZE=主数据库文件初始大小,MAXSIZE=主数据库文件最大大小,FILEGROWTH=主数据库文件增长大小/速度)LOG ON( NAME=数据库日志文件名,FILENAME=数据库日志文件地址名,SIZE=数据库日志文件初始大小,MAXSIZE=数据库日志文件最大大小,FILEGROWTH=数据库日志文件增长大小/速度 )GO代码示例:CREATE DATABASE EXAMON PRIMARY(NAME=EMAM_DAT,FILENAME='I:\EXAM\EXAMDAT.mdf',SIZE=3mb,MAXSIZE=500mb,FILEGROWTH=1mb)LOG ON(NAME=EXAM_LOG,FILENAME='I:\EXAM\EXAMLOG.ldf',SIZE=1mb,MAXSIZE=unlimited,FILEGROWTH=10%)GO2.删除数据库基础语句:DROP DATABASE 数据库名代码示例:DROP DATABASE EXAM3.创建表基础语句:USE 数据库名 GOCREATE TABLE 表名( 列名1 数据类型 修饰条件 是否为空, 列名2 数据类型 修饰条件 是否为空, 列名3 数据类型 修饰条件 是否为空, ………… )代码示例:USE EXAM GOCREATE TABLE ADMIN( ADMINID INT PRIMARY KEY , LOGINPWD VARCHAR (50) NOT NULL, LOGINPTPE VARCHAR (10) NOT NULL )4.设置主键基础语句:ALTER TABLE 表名ADD CONSTRAINT 主键名 PRIMARY KEY (想要设置为主键的列的列名)代码示例:ALTER TABLE 表名ADD CONSTRAINT pkey_Admin PRIMARY KEY (AMDINID)5.插入数据(1)添加一行数据 基础语句:INSERT INTO 表名(列名1,列明2,列名3……) VALUES (值一,值二,值3……)代码示例:INSERT INTO ADMIN (ADMINID ,LOGINPWD ) VALUES (1,'iamthepassword')(2)将全部信息添加到另外一个表INSERT INTO 目标表名(列名1,列明2……) SELECT 列名1,列明2…… FROM 原表名6.创建备份表基础语句:SELECT*INTO备份表名FROM原始表名WHERE 0=1示例代码:SELECT*INTO ADMINBAKFROM ADMIN WHERE 0=17.更新数据基础语句:UPDATE表名SET列名=更新的值WHERE条件示例代码:UPDATE ADMIN SET LOGINPWD='password'WHERE ADMINID=18.删除数据基础语句:DELETE FROM表名WHERE条件示例代码:DELETE FROM ADMIN WHERE ADMINID=39.删除表基础语句:DROP TABLE表名示例语句:DROP TABLE ADMIN10查询语句基础语句:SELECT 列名1,列名2 FROM表名WHERE条件ORDER BY要排序的列名(ASC/DESC)示例语句:SELECT ADMINID,LOGINPWD FROM ADMIN WHERE LOGINPWD='password'ORDER BY ADMINID DESC在使用SELECT语句中,可使用*号,代表选择表中的全部列,例:SELECT * FROM ADMIN在SELECT后面加上 DISTINCT 可消除重复行,例如:SELECT DISTINCT LOGINPWD FROM ADMIN在SELECT后面加上TOP 数字,可选择前多少行的数据,例:SELECT TOP 20 * FROM ADMIN要自定义列标题名,可有3种方法:(1)列别名=列名密码=LOGINPWD(2)列名 as 列别名 LOGINPWD=密码(3)列名列别名 LOGINPWD 密码模糊查询,可用 LIKE 例如:SELEC T * FROM ADMIN WHERE LOGINPWD LIKE‘PASS%’更多函数的使用方法,请见课本P86.多表查询,可用“表名.列明”的方式,例如:SELECT Student.studentNO,Score.score1 FROM Student,Score或者采用INNER JOIN关键字关联等内连接和外连接,请见课本P97.11.创建视图基础语句:CREATE VIEW视图名ASFROM表名示例代码:CREATE VIEW V_TESTASSELECT*FROM STUDENT12.创建外键约束基础语句:ALTER TABLE表名ADD CONSTRAINT外键名FOREIGN KEY(从表列名)REFERENCES主表名(主表列名)示例代码:ALTER TABLE scoreADD CONSTRAINT FK_SCORE_STUDENTFOREIGN KEY(STUDENTNO)REFERENCES STUDENT(STUDENTNO)13.在sql中使用变量,详情请见课本P14314.创建索引基础语句:CREATE INDEX索引名ON表名(需要索引的列名)代码示例:CREATE INDEX IDX_ABC ON SCORE(STUDENTNO)15.创建存储过程基础语句:CREATE PROC存储过程名(定义变量)AsSql语句代码示例:详见课本P166,包括3种,不含参数,含参数,含输出参数的存储过程示例。
SQLSever数据库中T-sql语句的使用(增、删、改、查)
SQLSever数据库中T-sql语句的使⽤(增、删、改、查)SQL中的增、删、改、查⼀、增:有2种⽅法1.使⽤insert插⼊单⾏数据:语法:insert [into] <表名> [列名] values <列值> 例:insert into Students (姓名,性别,出⽣⽇期) values ('王伟华','男','1983/6/15') 注意:如果省略表名,将依次插⼊所有列2.使⽤insert,select语句将现有表中的数据添加到已有的新表中语法:insert into <已有的新表> <列名> select <原表列名> from <原表名> 例:insert into addressList ('姓名','地址','电⼦邮件')select name,address,emailfrom Strdents注意:查询得到的数据个数、顺序、数据类型等,必须与插⼊的项保持⼀致⼆、删:有2中⽅法1.使⽤delete删除数据某些数据语法:delete from <表名> [where <删除条件>] 例:delete from a where name='王伟华'(删除表a中列值为王伟华的⾏) 注意:删除整⾏不是删除单个字段,所以在delete后⾯不能出现字段名2.使⽤truncate table 删除整个表的数据语法:truncate table <表名> 例:truncate table addressList注意:删除表的所有⾏,但表的结构、列、约束、索引等不会被删除;不能⽤于有外建约束引⽤的表三、改 使⽤update更新修改数据语法:update <表名> set <列名=更新值> [where <更新条件>] 例:update addressList set 年龄=18 where 姓名='王伟华' 注意:set后⾯可以紧随多个数据列的更新值(⾮数字要引号);where⼦句是可选的(⾮数字要引号),⽤来限制条件,如果不选则整个表的所有⾏都被更新四、查1.普通查询语法:select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[asc或desc]] 1).查询所有数据⾏和列 例:select * from a 说明:查询a表中所有⾏和 2).查询部分⾏列--条件查询 例:select i,j,k from a where f=5 说明:查询表a中f=5的所有⾏,并显⽰i,j,k3列 3).在查询中使⽤AS更改列名 例:select name as 姓名 from a where gender='男' 说明:查询a表中性别为男的所有⾏,显⽰name列,并将name列改名为(姓名)显⽰ 4).查询空⾏ 例:select name from a where email is null 说明:查询表a中email为空的所有⾏,并显⽰name列;SQL语句中⽤is null或者is not null来判断是否为空⾏ 5).在查询中使⽤常量 例:select name '北京' as 地址 from a 说明:查询表a,显⽰name列,并添加地址列,其列值都为'北京' 6).查询返回限制⾏数(关键字:top ) 例1:select top 6 name from a 说明:查询表a,显⽰列name的前6⾏,top为关键字(中没有top关键字⽤rownum替代)select * from a where rownum<6 7).查询排序(关键字:order by , asc , desc) 例:select name from a where grade>=60 order by desc 说明:查询表中成绩⼤于等于60的所有⾏,并按降序显⽰name列;默认为ASC升序2.模糊查询 1).使⽤like进⾏模糊查询 注意:like运算副只⽤语字符串, 例:select * from a where name like '赵%' 说明:查询显⽰表a中,name字段第⼀个字为赵的记录 2).使⽤between在某个范围内进⾏查询 例:select * from a where age between 18 and 20 说明:查询显⽰表a中年龄在18到20之间的记录 3).使⽤in在列举值内进⾏查询(in后是多个的数据)例:select name from a where address in ('北京','上海','唐⼭') 说明:查询表a中address值为北京或者上海或者唐⼭的记录,显⽰name字段3.分组查询 1).使⽤group by进⾏分组查询 例:select studentID as 学员编号, AVG(score) as 平均成绩 (注释:这⾥的score是列名) from score (注释:这⾥的score是表名) group by studentID2).使⽤having⼦句进⾏分组筛选 例:select studentID as 学员编号, AVG from score group by studentID having count(score)>1 说明:接上⾯例⼦,显⽰分组后count(score)>1的⾏,由于where只能在没有分组时使⽤,分组后只能使⽤having来限制条件,。
T-SQL常用语句总结
基本T-SQL语句1.增加(插入)语句插入一条记录Insert into表名(列名1,列名2,列名3)Values (值1,值2,值3)插入多条记录(从表1中将数据复制到领表2中)Insert into表2(列名1,列名2,列名3)Select表1.列名1,表1.列名2,表1.列名3From 表1注:执行这条语句之前,表2必须事先已经建好插入多条记录(从表1中将数据复制到新建的表2中)Select表1.列名1,表1.列名2,表1.列名3,identity(int,1,1) as idInto表2From表1注:常用于创建临时表插入多条记录Insert into 表1 (列名1,列名2,列名3)Select 值1,值2,值3 unionSelect值1,值2,值3 unionSelect值1,值2,值3注:这里值1,值2,值3必须是常量插入语句注意事项:1)插入的列个数必须和插入的值个数一致2)插入的值必须和插入的列的类型一致3)如果表中某列不允许为空,那么插入一行记录时必须为该列插入值4)如果表中有标识列,不能为标识列插入值5)如果表中某列有默认值,为该列插入值时,只能用Insert into 表名(列名1,列名2,列名3)Values (值1,值2,default)或者干脆就不为该列插入值2.更新(修改)语句Update表名set列名1=值1,列名2=值2【Where 更新条件】3.删除语句Delete from 表名【where 删除条件】Truncate表名注:这两种语句都只是删除表中的记录,删除过程中一定要注意如果该表有外键约束,一定要先删除外表4.查询语句基本查询语句Select列名1,列名2,列名3 from 表1【where 查询条件】或Select * from 表1 (查询表中所有的记录)为查询列重命名Select列名1 as 新命1,列名2as新命2,列名3 as新命3from表1【where 查询条件】查询中的常量列Select值1,值2,值3 from 表排序查询1)要求返回前n个记录Select top n列名1,列名2,列名3From表1Order by 列名desc2)要求返回整个表中的n%的记录Select top n% 列名1,列名2,列名3From表1注:order by 中desc 降序,asc升序(不写默认为升序)聚合函数1)求和Select sum(列名1) as 总和From 表【Where 条件】2)求平均Select avg(列名) as 平均From表【Where 条件】3)求最大值、最小值Select max(列名) as 最大值, min(列名) as 最小值From 表【Where 条件】3)统计个数Select count(*) as 个数From 表【Where 条件】分组查询Select列名1,avg(列名2) as 平均值From表1【Where 条件】Group by 列名1【having 条件】注:1)如果查询中有聚合函数还有其他列,这个列必须包含在group by 的后面2)在查询语句中,where先过滤掉整张表中不符合条件的数据,然后再根据Group by 后面的列进行分组,having是在分完组之后再过滤掉各个组内不符合条件的数据,最后再使用聚合函数统计剩下的数据常用的字符串函数1:replace函数第一个参数你的字符串,第二个参数你想替换的部分,第三个参数你要替换成什么select replace('lihan','a','b')结果:lihbn2:substring函数第一个参数你的字符串,第二个是开始替换位置,第三个结束替换位置select substring('lihan',0,3);结果li3: charindex函数第一个参数你要查找的char,第二个参数你被查找的字符串,第三个查找的起始位置,返回参数一在参数二的位置select charindex('a','lihan',1)结果:44:stuff函数(四个参数)函数将字符串插入另一字符串。
T-SQL语句
表级完整性约束条件 Nhomakorabea
Primary key:由多列组成的复合主键,语法格 式: Constraint 约束名 Primary key(字段列表) Foreign key:由多列组成的复合外键,语法格 式: Constraint 约束名 Foreign key(外键) references 被参照表(被参照表的主键) Check(条件表达式) :由多列组成的表达式, 语法格式: Constraint 约束名 Check(条件表达式)
使用T-SQL语句创建表
创建系部信息表如下: create table DeptInfo ( Dept_ID int identity(1,1) primary key, Dept_Code varchar(16) not null unique, --系 部代码,指定唯一性约束 Dept_Name varchar(50) not null, --系部名称 Dept_Desc varchar(200) --系部描述 )
使用T-SQL语句创建数据库
例:创建一个名为STUDENT的数据库,要求数据库存放在 ‘D:\database‘目录下 CREATE DATABASE STUDENT ON ( NAME= STUDENT, FILENAME =‘D:\database\STUDENT.mdf‘, SIZE=10, MAXSIZE=100 ) 注意:1.选项之间必须以半角逗号分隔 2.如果将数据库文件保存在文件夹中,必须确保文件夹存在
Primary key:主键约束,一个表只能有一个主键,所以 在创建表单时只能出现一次 Foreign key:外键约束,一个表可以定义多个外键约束, 但列级完整性约束控制外键列只能为单一列 Null或Not null:指定表中的属性列是否为空,控制用户 必须输入的列,默认值为Null Unique:唯一性约束,指定表中列保持唯一值即不能 重复 Defalut:默认值 Check(条件表达式):用于校验用户的输入值,拒绝 不满足条件的数据 例:Check(Student_Sex=‘1’ Or Student_Sex=‘0’)
基本T-SQL语句
10. 删除数据文件和文件组
<10.3>删除非空文件组:必须先删除文件组中的所有文 件,再删除该文件组! alter database bb remove file bb_data2 go
alter database bb remove filegroup f2 go
表的操作
• • • •
掌握用create语句----创建表 掌握用alter语句---修改表的结构 掌握对表中的数据进行的操作(增、删、改、查) 掌握用drop语句----删除表
1. 创建一个简单的数据库
语法格式: create database 数据库名 举例: create database aa -- 数据库名称: aa go
2. 创建一个完整的数据库
create database bb --数据库名称: bb on primary --primary 可以省略 ( name='bb', --主数据文件的逻辑名称 filename='e:\bb.mdf', --主数据文件的物理存放路径 size=1mb, --文件初始大小 maxsize=3mb, --文件最大容量 filegrowth=10% --文件增长方式(两种方式:<1>百分比,<2>兆字节) ), ( name='bb_data1', --辅助文件名称,不能与主数据文件名称相同 filename='e:\bb_data1.ndf', size=1mb, maxsize=3mb, filegrowth=10% ) log on ( name='bb_log1', --日志文件名称,不能与主数据文件、辅助文件的名称相同。 filenamee=1mb, maxsize=3mb, filegrowth=1mb ) go
使用T-SQL语句插入数据
使用 T-SQL语句插入数据
语法: insert into 表名 (列名) value (值列表) 注意:
1、每次插入一行数据,不能插入半行或几列数据 2、每个数据必须与所在的列的数据类型匹配 3、不能为标识列指定值 4、如果在创建表的时候就指定了不能为空的列,就必须插入数据 5、插入的数据要符合个种约束的要求 6、有默认约束的列可以代替插入的值 列: USE <数据库> GO INSERT INTO user VALUES('张三','男','23') INSERT INTO user(username,sex,age) VALUES('张三','男','23') INSERT INTO user(username,sex,age) VALUES(DEFAULT,'男','23')
Байду номын сангаас
t sql查询语句
t sql查询语句T-SQL是一种用于查询和管理关系型数据库的编程语言,T-SQL查询语句用于从数据库中检索数据。
以下是一些常见的T-SQL查询语句:1. SELECT语句:用于检索数据库中的数据。
例如:SELECT * FROM employees;2. WHERE 子句:用于过滤满足特定条件的数据。
例如:SELECT * FROM employees WHERE salary > 50000;3. ORDER BY子句:用于按照指定列的值对结果进行排序。
例如:SELECT * FROM employees ORDER BY last_name ASC;4. GROUP BY子句:用于根据指定列的值进行分组。
例如:SELECT department_id, AVG(salary) FROM employees GROUP BYdepartment_id;5. JOIN操作:用于在多个表之间建立关联关系。
例如:SELECT * FROM employees JOIN departments ONemployees.department_id = departments.department_id;6. UNION操作:用于合并两个或多个查询结果集。
例如:SELECT column1 FROM table1 UNION SELECT column1 FROM table2;7. INSERT INTO语句:用于向数据库表中插入新的行。
例如:INSERT INTO employees (first_name, last_name, salary) VALUES ('John', 'Doe', 50000);8. UPDATE语句:用于更新数据库表中的数据。
例如:UPDATE employees SET department_id = 2 WHERE employee_id = 100;9. DELETE语句:用于从数据库表中删除行。
T-SQL语句操作数据库——基本操作
--考号 --学号ABLE 表名
例如:
DROP TABLE peoInfo
三、使用SQL语句创建和删除约束
约束的目的是确保表中数据的完整性。
常用的约束类型:
主键约束(Primary Key constraint):要求主键列数据唯一,并且不允许为空。 唯一约束(Unique Constraint):要求该列唯一,允许为空,但只能出现一个空值。 检查约束(Check Constraint):某列取值范围显示、格式限制等,如有关年龄的约束。 默认约束(Default Constraint):某列的默认值,如我们的性别默认为“男”。 外键约束(Foreign Key Constraint):用于在两表之间建立关系,需要指定引用主表的那一列。
示例:
/*--删除peoInfo表中地址默认约束的语句--*/ ALTER TABLE peoInfo DROP CONSTRAINT DF_peoAddress
/*--添加默认约束--*/ ALTER TABLE peoInfo ADD CONSTRAINT DF_peoAddress DEFAULT ('地址不详') FOR peoAddress
/*--添加检查约束--*/ ALTER TABLE peoInfo ADD CONSTRAINT CK_stuAge CHECK(peoAge BETWEEN 15 AND 40)
二、创建和删除表
1、创建表的语法如下:
CREATE TABLE 表名 (
字段1 数据类型 列的特征, 字段2 数据类型 列的特征, ... )
示例:
需求:创建学员信息表peoInfo。
USE people GO CREATE TABLE peoInfo (
T-SQL语法大全(T-sql)
4、检查(CHECK(……)) ......................................................................................................................................... 4 5、外键(FOREIGN KEY(列名) REFERENCES 主表名(列名)) ................................................................................... 4 6、删除约束 ......................................................................................................................................................... 4 五、通配符 ............................................................................................................................................................... 4 六、插入数据 ........................................................................................................................................................... 5 1、注意事项 ......................................................................................................................................................... 5 2、插入多行数据 ................................................................................................................................................. 5 七、更新数据行 ....................................................................................................................................................... 6 八、删除数据行 ....................................................................................................................................................... 7 1、删除指定的行 ................................................................................................................................................. 7 2、删除所有记录 ................................................................................................................................................. 7 九、查询 ................................................................................................................................................................... 7 1、查询全部的行和列 ......................................................................................................................................... 7 2、查询部分行 ..................................................................................................................................................... 7 3、自定义命名查询结果中的列名 ..................................................................................................................... 8 十、模糊查询 ......................................................................................................................................................... 10 1、LIKE.............................................................................................................................................................. 10 2、IS NULL .................................................................................................ห้องสมุดไป่ตู้...................................................... 10 3、BETWEEN .................................................................................................................................................... 11 4、IN .................................................................................................................................................................. 11 十一、聚合函数 ..................................................................................................................................................... 11 1
T-SQL全部语句
T-SQL语言一、数据库1.创建数据库CREATE DATABASE database_name[ON{[PRIMARY] (NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={m ax_size︳UNLIMITED}][,FILEGROWTH=grow_increment])}[,……n]LOG ON(NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={max_size︳UNLIMITED}][,FILEGROWTH=grow_increment])}[,……n]][COLLATE collation_name]2.使用T-SQL语句管理数据库(1)打来数据库USE database_name(2)查看数据库信息[EXEC[UTE]]sp_helpdb database_name(3)增长或减少数据库容量ALTER DATABASE database_nameADD FILE (NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={max_size︳UNLIMITED}][,FILEGROWTH=grow_increment])ADD LOG FILE (NAME=logical_file_name,FILENAME=’os_filename_name’,[,SIZE=size][,MAXSIZE={max_size︳UNLIMITED}][,FILEGROWTH=grow_increment])MODIFY FILE (NAME=file_name,SIZE=newsize)REMOVE FILE logical_file_name(4)收缩数据库容量DBCC SHRINKDATABASE (database_name)(5)查看数据库选项EXEC sp_dboption (‘database_name’)二、数据表的基本操作1、创建数据表:create table table_name(列定义,计算列定义,表约束定义)2、表的修改与删除:alter table 表名alter column 列名修改表列属性add (列定义,计算列定义,表约束定义)drop column 列名删除列三、数据的基本操作1、数据的添加Insert into table_name (column1,column2,column3, …)Values (‘expression1’,’expression2’,’expression3’, …)2、数据的修改:update table_namesetcolumn_name=…where <search_conditions>3、数据的删除:1)使用DELETE语句删除数据:Delete talbe_nameWhere search_conditions2)使用TRUNCA TE清空表格:Truncate table table_name4、简单查询SELECT语句的基本语法格式:Select select_listInto new_table_nameFrom talbe_listWhere search_conditionsGroup by group_by_listHaving search_conditionsOrder by order_list[ASC | DESC]选择表中的若干列:1)输出表中的部分列:Select column1,column2,…From talbe_name2)输出表中的所有列:Select *From table_name3)输出计算列:(例)Select 姓名,year(getdate()) - year(出生日期)From 学生4)为结果集内的列指定别名:Select 列名(表达式)列别名FROM 数据源Select 列名(表达式)AS 类别名FROM 数据源Select 列别名=列名(表达式)FROM 数据源5、选择表中的若干记录(以实例为例)1)消除取值重复的行Select distinct 学号From 课程Go2)限制返回行数Select top 3 * 或select n percent *From 课程注册返回前三条记录或者表中前20%的记录Go3)查询满足条件的元组比较大小:Where + 条件表达式确定范围:列表达式【NOT】BETWEEN 起始值AND 终止值例:Where 出生日期between ‘1971-01-01’ and ’1980-12-31’确定集合:where [not] in (列表值1,列表值2……)字符匹配:[not] like ‘<匹配串>’【ESCAPE’<换码字符>’】涉及空值的查询:[not] column_name IS NULL多重条件查询:[not] 逻辑表达式and | or [not] 逻辑表达式6、对查询结果排序order by column1[ASC|DESC] , column[ASC|DESC] , …7、对数据进行统计1)使用集合函数Count ( [ distinct | all ] * ) 统计记录个数Count ( [ distinct | all ]<列名> )统计一列中值的个数Sum ( [ distinct | all ]<列名> )统计一列值的总和(此列必须是数值型)Avg ( [ distinct | all ]<列名> )统计一列值的平均值(此列必须是数值型)Max ( [ distinct | all ]<列名> )统计一列值的最大值Min ( [ distinct | all ]<列名> )统计一列值的最小值Distinct 是去掉制定列中的重复值,all是不取消重复值,默认状态下是all。
部分常用TSQL语句
部分常用T-SQL语句:使用T-SQL创建数据库:格式:CREATE DATABASE 数据库名ON(NAME=数据文件逻辑文件名,FILENAME=‘数据文件物理文件名’,SIZE=文件的初始长度,FILEGROWTH=增长率)[……]LOG ON(NAME=日志文件逻辑文件名,FILENAME=‘日志文件物理文件名’,SIZE=文件的初始长度,FILEGROWTH=增长率)[……]格式:USE <数据库名>功能:打开指定的数据库。
格式:sp_helpdb [数据库名]功能:查看数据库信息,若没指定数据库名,则查看所有数据库的信息。
格式:sp_databases功能:查看当前服务器上所有可以使用的数据库。
格式:sp_helpfile [@文件名]功能:查看当前数据库中指定文件的信息,若文件名缺省,则查看当前数据库上的所有文件。
包括数据文件和日志文件。
格式:sp_helpfilegroup [@文件组名]功能:查看当前数据库中指定文件组的信息,若文件组名缺省,则查看当前数据库上的所有文件组。
包括PRIMARY和USER_DEFINED文件组。
使用T-SQL语句修改数据库:格式:ALTER DATABASE 数据库名ADD FILE<文件定义>[,...N]|ADD LOG FILE<文件定义>[,...N]|REMOVE FILE 逻辑文件名|MODIFY FILE<文件定义>其中:<文件定义>:(NAME=数据文件逻辑文件名,FILENAME=‘数据文件物理文件名’,SIZE=文件的初始长度,FILEGROWTH=增长率)ADD FILE <文件定义> :添加新的数据文件ADD LOG FILE<文件定义>[,...N]:添加日志文件REMOVE FILE 逻辑文件名:删除数据库文件MODIFY FILE<文件定义>:修改数据库文件删除数据库:格式:DROP DATABASE 数据库名[,…n]使用T- SQL语句格式:CREATE TABLE 表名(列定义[,...N]|列名AS 计算表达式[,...N]|表约束[,...N])列定义::=列名数据类型[[默认表达式]| [IDENTITY[(标识列的起始值,增量)][列约束][,...N]修改列属性:列属性包括:列名、数据类型、数据长度及是否允许为空值。
TSQL命令汇总
SQL 命令汇总例题:一、对库的操作代码命令(其中fox是数据库名称)1、CREATE DA TABAES fox (新建一个名为fox的数据库)2、USE DATABAES fox (打开fox数据库)3、DROP DATABASE fox (删除fox数据库)二、对表的操作代码命令(其中fox_t、fox_t1是数据表名称)1、CREATE TABLE fox_t (新建一个名为fox_t的数据表)2、DROP TABLE fox_t (删除fox_t数据表)3、ALTER TABLE fox_tALTER COLUMN s_id int (修改fox_t数据表中的s_id列的属性为int型数据)ALTER TABLE fox_tALTER COLUMN id_ip int IDENTIEY(1,1) (修改fox_t数据表中的id_ip列的属性为int型数据并且为自增字段每次增加1)4、ALTER TABLE fox_tADD name varchar (在fox_t数据表中添加一个name字段且数据类型为varchar)5、ALTER TABLE fox_tDROP COLUMN name (删除字段name)6、ALTER TABLE fox_tADD CONSTRAINT constraint_name PRIMARY KEY s_id(添加s_id为主键约束,约束名为constraint_name)7、ALTER TABLE fox_tADD CONSTRAINT constraint_name_1 (添加id_ip作为外键)FOREIGN KEY id_ip REFERENCES fox_t1 id_ip_18、ALTER TABLE fox_tADD CONSTRAINT constraint-A_2 DEFAULT 1000FOR constraint-A9、ALTER TABLE fox_tADD CONSTRAINT constraint-B_2 CHECK sex in(‘男’, ‘女’)10、ALTER TABLE fox_tADD CONSTRAINT constraint-C-3 UNIQUE (name)练习:use abcselect * from 学生基本信息表where 总分>=60 order by 总分descuse abcselect 学号as '学生编码',姓名,总分as '总分大于60分' from 学生基本信息表where 总分>=60use abcselect top 50 percent * from 学生基本信息表use abcselect sum(部门工资) as '发放工资总额' from 工资清单use abcselect max(部门工资) as '所的工资最高的部门' from 工资清单use abcselect max(工资) as '不同工种的薪水' from 工资表group by 工种use abcselect max(工资) as '不同工种的薪水' from 工资表where 工资>2000 group by 工种having max(工资)<8000。
T-SQL语句整理
USE[master]GO--列出数据库中的所有架构select*from sys.schemas--列出数据库中的所有用户EXEC sp_helpuser--列出所有服务器级别的权限selecttype,permission_name from sys.server_permissions--列出所有数据库级别的权限selectdistincttype,permission_name from sys.database_permissions --列出所有数据库select database_id,create_date,name from sys.databases--列出所有的登录名select*from sys.sql_logins--列出所有数据类型和最大长度select name,max_length from sys.types--列出所有的视图select name from sys.views;--列出所有的登录名select*from testDB.sys.syslogins--列出所有用SQL验证方式登录的登录名select*from testDB.sys.sql_logins--列出数据库的用户名列表(issqlrole=0)select*from testDB.sys.sysusers where issqlrole=0--列出用户创建的数据库中的数据库角色(issqlrole=1)select*from TicketSysDB.sys.sysusers where issqlrole=1--列出master数据库中的数据库角色(issqlrole=1)select*frommaster.sys.sysusers where issqlrole=1--获得每个角色是的特定权限exec sp_dbfixedrolepermission--获得固定数据库角色的列表exec sp_helpdbfixedrole--获得具体给出的数据库中的数据库角色select*frommaster.sys.sysusers where issqlrole=1--查找出数据库用户名(如testUser)对应的登录名select as dbname, as loginnamefrom testDB.sys.database_principals a,testDB.sys.server_principals b where a.sid=b.sid--and ='testUser'--找出数据库用户名(如sys)对应的默认架构select name,default_schema_name from testDB.sys.database_principals--whe re name='sys'--根据数据库用户所对应的登录名select as dbname, as loginnamefrommaster.sys.database_principals a,master.sys.server_principals b where a.sid=b.sid--根据系统存储过程得出数据库用户--和该用户所对应的数据库角色和登录名use testDB IF OBJECT_ID('tempdb.dbo.#dbUser_Role')ISNOTNULLDROPTABLE#dbUser_Rolecreatetable#dbUser_Role(UserName sysname,RoleName sysname,LoginName sysname NULL,DefDBName sysname NULL,DefSchemaName sysname NULL,UserID smallint NULL,SIDsmallint NULL,primarykey(UserName,RoleName))insertinto#dbUser_Role exec sp_helpuserselect*from#dbUser_Role--为数据库用户添加数据库角色USE[testDB]GOEXEC sp_addrolemember N'db_datareader',N'sqlLogin1'GO--为数据库用户取消数据库角色USE[testDB]GOEXEC sp_droprolemember N'db_datareader',N'sqlLogin1'GO--添加登录名对数据库的用户映射--默认在数据库中创建的是与登录名同名的数据库用户--架构选择dboUSE[TicketSysDB]GOCREATE USER[sqlLogin1]FORLOGIN[sqlLogin1]GOUSE[TicketSysDB]GOALTER USER[sqlLogin1]WITHDEFAULT_SCHEMA=[dbo]GO--修改数据库用户名的名字USE[TicketSysDB]GOALTER USER[sqlLogin1]WITH NAME=[sqlLogin2]GO--修改login的密码USE[master]GOALTERLOGIN[sqlLogin1]WITHPASSWORD=N'password1'GO--为登录名添加服务器角色EXECmaster..sp_addsrvrolemember@loginame=N'sqlLogin1',@rolename=N'dbc reator'GO--为登录名取消服务器角色EXECmaster..sp_dropsrvrolemember@loginame=N'sqlLogin1',@rolename=N'db creator'GO--创建SQL Server登录名sqlLogin1--强制密码策略--强制密码过期--用户在下次登录时必须更改密码USE[master]GOCREATELOGIN[sqlLogin1]WITHPASSWORD=N'pa$$w0rd_123'MUST_CHANGE,DEFAULT _DATABASE=[master],CHECK_EXPIRATION=ON,CHECK_POLICY=ONGO--创建SQL Server登录名sqlLogin1--强制实施密码策略USE[master]GOCREATELOGIN[sqlLogin1]WITHPASSWORD=N'pa$$w0rd_123',DEFAULT_DATABASE=[ master],CHECK_EXPIRATION=OFF,CHECK_POLICY=ONGO--拒绝登录名连接服务器--登录名禁用USE[master]GODENYCONNECTSQLTO[sqlLogin1]GOALTERLOGIN[sqlLogin1]DISABLEGO--授予登录名连接服务器--登录名启用USE[master]GOGRANTCONNECTSQLTO[sqlLogin1]GOALTERLOGIN[sqlLogin1]ENABLEGO用SQL语句添加删除修改字段1.增加字段ALTER TABLE [yourTableName] ADD [newColumnName] newColumnType(length)2.删除字段ALTER TABLE [yourTableName] DROP COLUMN [ColumnName]3.修改字段类型ALTER TABLE [yourTableName] ALTER COLUMN [ColumnName] newColumnType(length)4.更改当前数据库中用户创建对象(如表、列或用户定义数据类型)的名称。
T-SQL控制流程语句
T-SQL语言基础
4.While
While语句通过逻辑表达式来设置一个条件,当条件成立时,重复执行一个语句或语句块 (重复执行的部分称为循环体),条件不成立时退出循环,继续执行后面的语句,其语 法格式如下:While <逻辑表达式> Begin <命令行或程序块> [Continue] <命令行或程序块>
Begin <命令行或程序块> End
T-SQL语言基础
【例6-10】 下面的SQL语句是一个Begin…End的例子。 Begin Declare @myvar float Set @myvar =456.256
Begin Print '变量@myvar的值为:' Print @myvar
End End 运行结果如图6-8所示。
数据库基础
T-SQL语言基础
图6-8 T-SQL中的Begin…End语句
T-SQL语言基础
3.Case
Case表达式用来简化SQL表达式,它可以用在任何允许使用表达式的地方 ,并根据条件的不同返回不同的值。Case表达式不同于一个T-SQL语句, 它不能够单独执行,而只能作为一个可以单独执行的语句的一部分来使用 。
数据库基础
T-SQL语言基础
T-SQL 语言使用的流程控制命令与常见的程序设计语言类似,主要有以下几种。 1.If…Else 其语法如下: If <条件表达式> <命令行或程序块> [Else [条件表达式] <命令行或程序块>]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
select * from Student where Email is null or Email=''
select * from Student where Email is not null and Email !=''
--6、使用常量列 注意列名和常量的区别
order by StudentResult
--7、查询学号为‘s1101003’的学生参加过得所有考试信息,并按照时间前后次序显示
select * from Result
where StudentNo=23
order by ExamDate
--8、查询学号为‘s1101003’的学生参加过得所有考试中的最高分及时间,科目
SELECT DATENAME(qq,getdate())
--日期中指定日期部分的整数形式
SELECT DATEPART(day, '01/15/2000')
select datepart(dw,GETDATE())
select * from Student
where DATEPART(MM,BornDate)=DATEPART(MM,GETDATE())
--2、*********日期函数**********
--取得当前的系统日期
select getdate()
SELECT GETDATE()
--将指定的数值添加到指定的日期部分后的日期
select dateadd(DAY,80,GETDATE())
select DATEADD(YEAR,-4,GETDATE())
select top 3 * from Student
select top 3 studentname,borndate from Student
--按一定百分比返回行数
select top 10 percent * from Student
--表中只有3行数据,查询前10%,会得到多少行记录
select * from Student where GradeId=1 and Gender=0
--4、查询课时超过60的科目信息
select * from Subject where ClassHour>60
--5、第一学期的科目信息
select * from Grade where GradeName='一学期'
select * from Student where dateadd(YYYY,20,BornDate)>GETDATE()
SELECT DATEDIFF(mm,'01/01/1999','05/01/1999')
--日期中指定日期部分的字符串形式
SELECT DATENAME(dw,'01/01/2000')
select substring('accp',2,2)
SELECT RIGHT('买卖提.吐尔松',3)
--替换一个字符串中的字符
SELECT REPLACE('莫乐可切.杨可','可','兰')
--在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串
SELECT STUFF('ABCDEFG', 2, 3, '我的音乐我的世界')
use MySchoolEX
--查询所有的数据行和列
select * from Student
select * from Subject
--查询部分行,添加where查询条件
select * from Student
where Gender=0
select * from Student
select * from Result where SubjectNo=1 and ExamDate='2010-2-15'
--使用order by进行排序查询
select * from Result order by StudentResult desc,StudentNo asc
select top 1 * from Result
where StudentNo=23
order by StudentResult desc,ExamDate
--函数的使用
--1、********字符串函数示例***********
--用来寻找一个指定的字符串在另一个字符串中的起始位置
order by ExamDate,StudentResult desc
--3、查询2010年3月22号参加‘面向对象程序设计’考试的前五名学员的成绩信息
select top 5 * from Result
where ExamDate='2010-3-22' and SubjectNo=1
StudentName,
BornDate,
from Student
select
StudentName,
BornDate,
from Student
where Gender=0
select
StudentName,
Address,
Email,
BornDate
SELECT LTRIM (rtrim(' 周智宇 '))
--清除字符右边的空格
SELECT RTRIM (' 周智宇 ')
--从字符串右边返回指定数目的字符
select 'accp'
select left('accp',2)
select right('accp',2)
select * from Subject where GradeId=1
--6、第二学期男同学的姓名和住址
select studentname,address from Student where GradeId=2 and Gender=1
--7、无电子邮件的学生姓名和年级信息
select studentname,gradeid from Student where Email is null or Email=''
top 1 StudentName,GradeId
from Student
order by BornDate desc
--6、查询2010年3月22号参加考试的最低分出现在哪个科目
select
top 1 SubjectNo
from Result
where ExamDate='2010-3-22'
order by StudentResult desc
--4、查询y2课时最多的科目名称
select
top 1
SubjectName
from Subject
where gradeid=1
order by ClassHour desc
--5、查询年龄最小的学生的姓名及所在的年级
select
from Student
where BornDate>'1991'
--查询不是北京大兴的学生的学号,姓名和地址
--在查询中使用列的别名,注意别名不能加单引号
--1、使用as关键字
select
StudentName as 姓名,
BornDate as 生日,
Email as 邮箱
from Student
--2、使用=
select
姓名=StudentName,
生日=BornDate,
邮箱=Email
from Student
--3、什么都不用
select
StudentName 姓名,
--8、出生日期在1990年之后的第二学期的学生姓名和年级信息
select studentname,gradeid from Student where BornDate>'1990' and GradeId=2
--9、参加了日期为2010年2月15日的‘oop’科目考试的成绩信息
select SubjectNo from Subject where SubjectName='oop'
select charindex('ee',accp')
select * from Student where charindex('小',StudentName)>0
SELECT CHARINDEX('ACCP','My Accp Course',1 )
--返回传递给它的字符串长度
--上机练习
--1、查询第一学期的全部学生信息
select * from Student where GradeId=1
--2、查询第二学期的全部学生的姓名和电话
select StudentName,Phone from Student where GradeId=2
--3、查询第一学期全部女同学的信息
--练习
--1、按照出生日期查询第一学期的学生信息
select * from Student