SQL语句入门(脚本、命令)

SQL 全名是结构化查询语言(Structured Query Language),是关系数据库管理系统的标准语言

SQL语句是和DBMS“交谈”专用的语句,不同DBMS都认SQL语法。

SQL语句中字符串用单引号、单等号。

select *、SeLeCT *:

SQL语句是大小写不敏感的,不敏感指的是SQL关键字,字符串值还是大小写敏感的

建库、删除数据库、创建表、删除表不仅可以手工完成,还可以执行SQL语句完成,在自动化部署、数据导入中用的很多

简单的Insert语句。

(*) SQL主要分DDL(数据定义语言,建表、建库等语句。)、DML(数据操作语言)和DCL (数据库控制语言) 。Create Table、Drop Table、Alter Table等属于DDL,Select、Insert、Update、Delete等属于DML, GRANT 授权、REVOKE 取消授权属于DCL

View Code
 1 --drop database MySchool
 2 
 3 create database MySchool
 4 
 5 on
 6 
 7 (
 8 
 9 --括号一定是圆括号
10 
11 name='MySchool_data',--数据库名称
12 
13 filename='d:\MySchool_data.mdf',--物理文件名
14 
15 size=5mb,--初始大小
16 
17 maxsize=10mb,--最大大小
18 
19 filegrowth=15% --主文件增长率
20 
21 )
22 
23 log on
24 
25 (
26 
27 name='MySchool_log',--日志文件名
28 
29 filename='d:\MySchool_log.ldf',--日志物理文件名
30 
31 maxsize=4mb,--最大大小
32 
33 size=2mb,
34 
35 filegrowth=1mb
36 
37 )
38 
39 go
40 
41 use MySchool
42 
43 go
44 
45 --drop table Class
46 
47 create table Class
48 
49 (
50 
51     cId int identity(1,1) primary key,
52 
53     cName nvarchar(50) not null,
54 
55     cDesciption text
56 
57 )
58 
59 --drop table student
60 
61 create table Student
62 
63 (--创建学生信息表
64 
65     sId int identity(1,1) primary key,--自动编号
66 
67     sClassId int not null,   --班级外键
68 
69     sName nvarchar(50) not null,
70 
71     sAge int not null,
72 
73     sNo numeric(18,0),--身份证号,十八位数字,小数为
74 
75     sSex char(2) not null,
76 
77     sEmail varchar(50)
78 
79 )
80 
81  

 

Addtime指得是添加时间

 

关键字 GO 语句

关键字 GO 语句  :go上面的语句先执行 再执行之后的语句

go语句的作用:

向 SQL Server 实用工具发出一批 Transact-SQL 语句结束的信号。

将SQL语句分段执行。

GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的命令。

SQL Server 实用工具将 GO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号。当前批语句由上一 GO 命令后输入的所有语句组成,如果是第一条 GO 命令,则由即席会话或脚本开始后输入的所有语句组成。

GO 命令和 Transact-SQL 语句不能在同一行中。但在 GO 命令行中可包含注释。

用户必须遵照使用批处理的规则。例如,在批处理中的第一条语句后执行任何存储过程必须包含 EXECUTE 关键字。局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。

 

View Code
  1 use School
  2 
  3  
  4 
  5 --一般建议执行选中的SQL语句。
  6 
  7 use itcastcn
  8 
  9  
 10 
 11 --每条SQL语句后面应该跟一个分号,(不是必须的)
 12 
 13 use School;use itcastcn;
 14 
 15  
 16 
 17  
 18 
 19 --切换到master数据库
 20 
 21  
 22 
 23 --开始创建一个新的数据库
 24 
 25 --TestDb
 26 
 27 --创建数据库使用系统模板
 28 
 29 create database TestDb;
 30 
 31  
 32 
 33 --查询当前实例中的已经存在的数据库
 34 
 35 select * from sys.databases
 36 
 37  
 38 
 39 --删除TestDb数据库
 40 
 41 DROP DATABASE TESTDB;
 42 
 43  
 44 
 45 --CTRL + R ;切换消息窗口的显示。
 46 
 47  
 48 
 49 --通过代码来创建数据库并设置文件选项。
 50 
 51 create database TestDb
 52 
 53 on primary
 54 
 55 (
 56 
 57     --在这里设置主数据文件mdf
 58 
 59     name='TestDb',--主数据文件的逻辑名称
 60 
 61     filename='c:\TestDb.mdf',--文件的具体存储路径。
 62 
 63     size=3MB,--设置文件的初始大小
 64 
 65     maxsize=100MB,--设置文件最大大小。UNLIMITED为不限制大小
 66 
 67     --filegrowth=1MB
 68 
 69     filegrowth=10%
 70 
 71 )
 72 
 73 log on
 74 
 75 (
 76 
 77     --在这里设置事务日志文件。
 78 
 79     name='TestDb_log',
 80 
 81     filename='c:\TestDb.ldf',
 82 
 83     size=1MB,
 84 
 85     maxsize=unlimited,
 86 
 87     filegrowth=1mb
 88 
 89 )
 90 
 91 Go
 92 
 93  
 94 
 95 --将当前的代码执行环境切换到TestDb数据库中
 96 
 97 use TestDb
 98 
 99 Go
100 
101  
102 
103 --创建一个TblClass表
104 
105 create table TblClass
106 
107 (
108 
109     --创建表中的列
110 
111     tClassId int identity(1,1) primary key,
112 
113     tClassName varchar(50) not null,
114 
115     tClassDesc varchar(50) null
116 
117 )
118 
119 Go
120 
121  
122 
123  
124 
125 --创建TblStudent表
126 
127 create table TblStudent
128 
129 (
130 
131     tSId int identity(1,1) primary key,
132 
133     tSName varchar(50),
134 
135     tSGender char(2) not null,
136 
137     tSAddress varchar(300),
138 
139     tSPhone varchar(100),
140 
141     tSAge int,
142 
143     tSBirthday datetime,
144 
145     tSCardId varchar(18) null,
146 
147     tSClassId int not null
148 
149 )
150 
151 Go

 

数据插入

l  向表中插入一行(该行的每一列都有数据)

  • insert into 表(列名1,列名2) values(值1,值2)
  • insert语句可以省略表名后的列名,但是不推荐。
    • Insert into 表 values(值1,值2)

l  插入数据时,只向某些列插入数据:如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。

  • Insert into 表(列1)  values(值1)

l  自动编号列不需要手动插入。【SET IDENTITY_INSERT 表名 ON 】

l  注意:主键不能有重复值。

插入数据时的单引号问题。

l  Insert into 表(列) select 列1,列2 union select 列1,列2 from 表

l  Select 列 into 新表名 from 旧表

N前缀:N’字符串’,在服务器上执行的代码中(例如在存储过程和触发器中)显示的 Unicode 字符串常量必须以大写字母 N 为前缀。即使所引用的列已定义为 Unicode 类型,也应如此。如果不使用 N 前缀,可能导致不识别某些字符

l  如果想使用字段的默认值,使用default

l  时间类型的常量要加单引号

l  SQL语法不区分大小写 但值区分大小写

l  错误“将截断字符串或二进制的数据”  是因为给的值的长度超过了字段规定的长度

l  错误“……约束……” 一般是主外键冲突

 

数据更新(数据修改)

l  更新一个列:update Student set sSex = ‘男’

l  更新多个列: update  Student set sSex ='女',sAge = 18,sBirthday='1989-8-8'

l  更新一部分数据: update  Student set sClassId= 4 where sClassId = 1,用where语句表示只更新Name是’tom’的行,注意SQL中等于判断用单个=,而不是==。

l  Where中还可以使用复杂的逻辑判断update Student set sAge=30 where sName='华佗' or sAge<25 ,or相当于C#中的||(或者)

l  所有学生的年龄加1 update Student set sAge = sAge + 1

l  update Student set sClassId=6

l  where (sAge>20 and sAge<30) or(sAge=50)

l  Where中可以使用的其他逻辑运算符:(||)or、(&&)and、(!)not、<、>、>=、<=、 <> !=(不等)等

Select * from 表名 from 列名 between 值1 and 值2

In 相当于or 查询班级ID为1、2、3     In(1,2,3)

l  Sql语句中Bit的值只能写0或1 而在表格的时候 只能写true false

l  Null代表不知道 Null+2=Null

 

 

数据删除

l  删除表中全部数据:DELETE  FROM  Student。

l  Delete只是删除数据,表还在,和 Drop Table不同。

l  Delete 也可以带where子句来删除一部分数据:DELETE FROM Student WHERE sAge > 20 

l  ==========================

l  truncate table student 的作用与delete from student一样,都是删除student表中的全部数据,区别在于:

  • 1.truncate语句非常高效。由于truncate操作采用按最小方式来记录日志,所以效率非常高。对于数百万条数据使用truncate删除只要几秒钟,而使用delete则可能耗费几小时。
  • 2.truncate语句会把表中的自动编号重置为默认值。
  • 3.truncate语句不触发delete触发器

自动增长的字段这个记录放在master数据库中delete删除一条记录的时候不会去减

清空表数据并且重置自动增长列  truncate table Test 如果我们要清空表中的数据 建议使用truncate效率高 因为truncate删除数据的时候不会在日志文件中产生记录 而delete 会在日志文件中产生记录

 

数据检索

l  执行备注中的代码创建测试数据表。

l  简单的数据检索 :SELECT * FROM Student

l  只检索需要的列 :SELECT sName FROM Student 、SELECT sName,sAge FROM Student

l  列别名:SELECT sName AS 姓名,sAge AS 年龄,sBirthday AS 出生日期 FROM Student

l  使用where检索符合条件的数据:SELECT sName FROM Student WHERE sSex=‘女’。

l  还可以检索不与任何表关联的数据:select 1+1;select select getdate();

 

 

 

 

 

 

 

 

 

 

 

posted on 2013-01-03 00:03  陈谨  阅读(197)  评论(0编辑  收藏  举报