黑马 程序员--SQL基础复习(一)

          

 ---------------------- .Net培训WP7培训、期待与您交流!----------------------



虽然在学校学过数据库课程了,还是复习一下SQL,以加深印象。

SQL :Structured Query Language 结构化查询语句

在最近十年内,写程序没有数据库支持,称不上是好程序,或者功能强大的程序。

而数据库,主要依赖于数据库管理系统,让我们很幸福的是,数据库管理系统已

由前人为我们做好了,我们只负责用就可以了,令人惭愧的是,很多人连用现成

的都用不好。

使用数据库也是需要语言的,SQL 语言专门为操纵数据库而生的。


下面是一些简单的使用:

SQL 分为DDL,DML 

DDL : 数据定义语言 CREATE DATABASE, CREATE TABLE, DROP TABLE

DML:数据操纵语言 INSERT, DELETE, UPDATE, SELECT

SQL 语句中对关键字的大小写是不敏感的,但是对数据是大小写敏感的

   但是最好把关键字都大写,这是考验你编程修养的地方。

数据库中的表需要有表示列,用int或Guid两种都可,衡量使用,int可以自动增长,

Guid方便导入导出。生成方法:Guid.newid(), .net中用Guid.NewGuid()。

字符型变量用nvarchar类型,防止有填充空格(以前写程序遇到类似的问题)

表结构如下:(T_Employees)

      ID    nvarchar(10)       not null

      Name   nvarchar(10)

      Age     tinyint

      Salary  int

View Code
 1 --为列头赋值,可以用as,也可以用=,注意顺序 ,as 字段在前,= 字段在后
2 SELECT 编号 = ID,Name as 姓名,年龄 = Age, Salary as 工资 FROM T_Employees;
3
4 --查入多条数据,为测试使用
5 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('DEV001','Jim',28,5000);
6 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('DEV002','Tom',25,6000);
7 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('DEV003','Marry',27,2400);
8 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('HR001','Kate',37,5400);
9 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('HR002','John',45,5300);
10 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('HR003','Smith',26,2700);
11 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('IT001','Jerry',29,6700);
12 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('IT002','Kerry',38,9800);
13 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('IT003','Joe',42,4600);
14 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('SALE001','Jonse',53,7400);
15 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('SALE002','Jack',28,4700);
16 INSERT INTO T_Employees(ID,Name,Age,Salary)Values('SALE003','James',37,3200);
17
18 --过滤加排序(按多个字段排序,有顺序,先年龄,后工资)
19 SELECT * FROM T_Employees WHERE Salary > 6000 ORDER BY Age ASC,Salary ASC;
20
21 --删除一行
22 DELETE FROM T_Employees WHERE ID = 'Dev001';
23
24 SELECT * FROM T_Employees;
25
26 --通配符
27 SELECT * FROM T_Employees WHERE ID LIKE '_EV%';
28 SELECT * FROM T_Employees WHERE ID LIKE 'HR%';
29 SELECT * FROM T_Employees WHERE ID LIKE 'IT%';
30 SELECT * FROM T_Employees WHERE ID LIKE 'SALE%';
31
32 --少Name字段,数据库里默认为NULL
33 INSERT INTO T_Employees(ID,Age,Salary) Values('DEV004',28,6000);
34
35 --@@表示常量
36 SELECT @@VERSION;
37
38 --日期函数
39 SELECT GETDATE();
40
41 --聚合函数
42 SELECT MAX(Salary) FROM T_Employees;
43 SELECT Min(Salary) FROM T_Employees;
44 SELECT AVG(Salary) FROM T_Employees;
45 SELECT Count(Salary) FROM T_Employees;
46 SELECT COUNT(*) FROM T_Employees;
47
48
49 SELECT * FROM T_Employees WHERE Name IS NOT NULL;
50 SELECT * FROM T_Employees WHERE Name IS NULL;
51
52 -- 错误写法SELECT * FROM T_Employees WHERE Name <> NULL;
53 -- 错误写法SELECT * FROM T_Employees WHERE Name = NULL;
54 --NULL表示不知道 不能用<> 或= 来判断 某个字段是否为空
55 --NULL 和 '' 不一样
56 SELECT NULL + '123'; -- 结果为NULL
57 SELECT '' + '123'; -- 结果为123
58
59 --按段查询 两种写法效果一样
60 SELECT * FROM T_Employees WHERE Age BETWEEN 28 AND 50;
61 SELECT * FROM T_Employees WHERE Age >= 28 AND Age <= 50;
62
63 --特定值查询
64 SELECT * FROM T_Employees WHERE Age IN(25,27,45);
65
66 --更新数据
67 UPDATE T_Employees SET Age = Age + 1;
68 UPDATE T_Employees SET Age = Age - 1;
69 --更新某些列(给40岁一些员工涨工资1000)
70 UPDATE T_Employees SET Salary += 1000 WHERE Age < 40;
71 --在中文前加N
72 UPDATE T_Employees SET Name = N'玛丽' WHERE Age = 27;
73 SELECT * FROM T_Employees;




 

  ---------------------- .Net培训WP7培训、期待与您交流!----------------------

posted on 2011-12-01 13:48  董志  阅读(295)  评论(0编辑  收藏  举报

导航