您的位置:首页 > 职场人生

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

2011-12-01 13:48 316 查看
          

 ---------------------- .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

--为列头赋值,可以用as,也可以用=,注意顺序 ,as 字段在前,= 字段在后
SELECT 编号 = ID,Name as 姓名,年龄 = Age, Salary as 工资 FROM T_Employees;

--查入多条数据,为测试使用
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('DEV001','Jim',28,5000);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('DEV002','Tom',25,6000);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('DEV003','Marry',27,2400);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('HR001','Kate',37,5400);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('HR002','John',45,5300);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('HR003','Smith',26,2700);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('IT001','Jerry',29,6700);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('IT002','Kerry',38,9800);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('IT003','Joe',42,4600);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('SALE001','Jonse',53,7400);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('SALE002','Jack',28,4700);
INSERT INTO T_Employees(ID,Name,Age,Salary)Values('SALE003','James',37,3200);

--过滤加排序(按多个字段排序,有顺序,先年龄,后工资)
SELECT * FROM T_Employees WHERE Salary > 6000 ORDER BY Age ASC,Salary ASC;

--删除一行
DELETE  FROM T_Employees WHERE ID = 'Dev001';

SELECT * FROM T_Employees;

--通配符
SELECT * FROM T_Employees WHERE ID LIKE '_EV%';
SELECT * FROM T_Employees WHERE ID LIKE 'HR%';
SELECT * FROM T_Employees WHERE ID LIKE 'IT%';
SELECT * FROM T_Employees WHERE ID LIKE 'SALE%';

--少Name字段,数据库里默认为NULL
INSERT INTO T_Employees(ID,Age,Salary) Values('DEV004',28,6000);

--@@表示常量
SELECT @@VERSION;

--日期函数
SELECT GETDATE();

--聚合函数
SELECT MAX(Salary) FROM T_Employees;
SELECT Min(Salary) FROM T_Employees;
SELECT AVG(Salary) FROM T_Employees;
SELECT Count(Salary) FROM T_Employees;
SELECT COUNT(*) FROM T_Employees;

SELECT * FROM T_Employees WHERE Name IS NOT NULL;
SELECT * FROM T_Employees WHERE Name IS NULL;

-- 错误写法SELECT * FROM T_Employees WHERE Name <> NULL;
-- 错误写法SELECT * FROM T_Employees WHERE Name = NULL;
--NULL表示不知道 不能用<> 或= 来判断 某个字段是否为空
--NULL 和 '' 不一样
SELECT NULL + '123'; -- 结果为NULL
SELECT '' + '123';   -- 结果为123

--按段查询 两种写法效果一样
SELECT * FROM T_Employees WHERE Age BETWEEN 28 AND 50;
SELECT * FROM T_Employees WHERE Age >= 28 AND Age <= 50;

--特定值查询
SELECT * FROM T_Employees WHERE Age IN(25,27,45);

--更新数据
UPDATE T_Employees SET Age = Age + 1;
UPDATE T_Employees SET Age = Age - 1;
--更新某些列(给40岁一些员工涨工资1000)
UPDATE T_Employees SET Salary += 1000 WHERE Age < 40;
--在中文前加N
UPDATE T_Employees SET Name = N'玛丽' WHERE Age = 27;
SELECT * FROM T_Employees;


  ---------------------- .Net培训WP7培训、期待与您交流!----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: