语法是一个编程语言的基础,真的想玩的6得飞起还是要靠自己定义的函数和变量。

1.使用DECLARE语句创建int数据类型的名为@mycounter的局部变量,输入语句如下:

DECLARE @mycounter int;

2.创建3个名为@Name、@Phone和@Address的局部变量,并将每个变量都初始化为NULL,输入语句如下。

DECLARE @Name varchar(30),@Phone varchar(20),@Address char(2);

附加:

区别: 
1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。
2.CHAR的效率比VARCHAR2的效率稍高。
3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。
何时该用CHAR,何时该用varchar2?
CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。
VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。

3.使用SELECT语句为@MyCount变量赋值,最后输出@MyCount变量的值,输出语句如下。
DECLARE @MyCount INT
SELECT @MyCount = 100
SELECT @MyCount
GO

4.*通过查询语句给变量赋值,输入语句如下。
DECLARE @rows int
SET @rows=(SELECT COUNT(*) FROM Member)
SELECT @rows
GO

5.在SELECT查询语句中,使用由SET赋值的局部变量,输入语句如下。
USE test
GO
DECLARE @memberType varchar(100)

6.在SELECT查询语句中,使用由SET赋值的局部变量,输入语句如下。
USE test
GO
DECLARE @memberType varchar(100)
SET @memberType = ‘VIP’
SELECT RTRIM(FirstName)+ ' '+RTRIM(LastName) AS Name,@memberType
FROM member
GO

附:RTRIM的用法。

7.单行注释和多行注释

(1)单行注释以两个连字符“--”开始,作用范围是从注释符号开始到一行的结束;

(2)多行注释作用于某一代码块,使用(/*需要注释的内容*/)。

8.创建名称为test_db数据库,输入语句如下。

CREATE DATABASE test_db ON PRIMARY

(

NAME = test_db_data1,--数据库逻辑文件名称

FILENAME = 'C:\SQL Server 2012\test_db_data.mdf',--主数据文件存储位置

SIZE = 5120KB,--主数据文件大小

MAXSIZE = 20, --主数据文件最大增长空间为20MB

FILEGROWTH =1 --文件增长大小设置为1MB

************23333很开心,突然发现按shift可以把搜狗输出法调成英文输入状态,不用来回切换输入法来得到英文符号了************

9.在test_db数据库中创建员工表tb_emp1。

USE test_db

CREATE TABLE tb_emp1

(

id            INT PRIMARY KEY,

name      VARCHAR(25) NOT NULL,

deptId     CHAR(2) NOT NULL,

salary     SMALLMONEY NULL

);

10.删除test_db数据库中的table_emp表,输入语句如下。

USE test_db

GO

DROP TABLE dbo.table_emp  --dbo在SQL中是数据管理员的意思

11.删除test_db数据库,输入语法如下。

DROP DATABASE test_db

12.将test_db数据库的名称修改为company,输入语句如下。

ALTER DATABASE test_db

MODIFY NAME=company

13.在更改过名称的company数据库中,向tb_emp1数据表中添加名称为birth的字段列,数据类型为date,要求非空,输入语句如下。

USE company

GO  /*

如果只是执行一条语句,有没有GO都一样
如果多条语句之间用GO分隔开就不一样了
每个被GO分隔的语句都是一个单独的事务,一个语句执行失败不会影响其它语句执行。*/

ALTER TABLE tb_emp1   --选择数据库使用USE,选择表用ALTER;不仅仅是简单的选中数据库,如果想对数据库进行操作那么就要使用SELECT

ADD birth DATE NOT NULL

14.删除tb_emp1表中的birth字段列,输入语句如下:

USE company

GO

ALTER TABLE tb_emp1

DROP COLUMN birth

15.下面演示数据的插入——INSERT

(1)创建表

CREATE TABLE teacher

(

id              INT NOT NULL PRIMARY KEY,

name       VARCHAR(20) NOT NULL

birthday    DATE,

sex           VARCHAR(4),

cellphone  VARCHAR(18)

);

(2)向teacher表中插入多条新记录,T-SQL代码如下。

SELECT * FROM teacher

INSERT INTO teacher

VALUES (2,'李四','1978-11-21','女','0018624'),

(3,'王五','1976-12-05','男','0018678');

SELECT * FROM teacher

16.【数据更改】(UPDATE-SET)在teacher表中,更新id值为2的记录,将birthday字段值改成'1980-8-8',将cellphone字段值改为'0018600',输入语句如下。

SELECT * FROM teacher WHERE id =2;

UPDATE teacher

SET birthday = '1980-8-8',cellphone='0018600' WHERE id = 2;

17.【修改表中所有记录】在teacher表中,将所有老师的电话都修改为'01008611',输入语句如下。

UPDATE teacher

SET cellphone = '01008611';

18.【查询表中指定字段】查询stu_info数据表中学生的姓名和成绩,输入语句如下。

SELECT s_name,s_score FROM stu_info;

19.【在查询结果中使用表达式】不修改数据表,查询并显示所有学生的成绩降低5分后的结果,输入语句如下。

SELECT s_name,s_score,s_score-5 AS new_score FROM stu_info;

****感受:SQL是一种非常人性化的语言,几乎你对表的所有操作都可以使用SQL的复合语句操作出来。

20.【显示部分查询结果】

(1)查询stu_info中所有的记录,但只显示前3条,输入语句如下。

SELECT TOP 3 * FROM stu_info;

(2)带限定条件的查询(所有带限定条件的问题都可以采用WHERE或者WHERE NOT)查询stu_info表中所有性别为'男'的学生的信息,输入语句如下。

SELECT * FROM stu_info WHERE s_sex='男';

(3)查询stu_info表中所有性别不为'男'的学生的信息,输入如下。

SELECT * FROM stu_info WHERE NOT s_sex='男';

(4)再稍微复杂一些可以使用AND、OR、LIKE、BETWEEN AND配合WHERE进行查询操作

①查询stu_info表中性别为'男’并且成绩大于80的学生信息,输入语句如下。

SELECT * FROM stu_info WHERE s_sex='男' AND s_score > 80;

②查询stu_info表中成绩大于80,或者年龄大于18的学生信息,输入语句如下。

SELECT * FROM stu_info WHERE s_score>80 OR s_age>18;

③****使用LIKE运算符进行匹配查询***(这部分很重要,我copy了别人的解说如下FROM:http://www.w3school.com.cn/sql/sql_like.asp)

---------LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式---------

LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

SQL LIKE 操作符语法

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

原始的表 (用在例子中的):

Persons 表:

Id LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

LIKE 操作符实例

例子 1

现在,我们希望从上面的 "Persons" 表中选取居住在以 "N" 开始的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE 'N%'

提示:"%" 可用于定义通配符(模式中缺少的字母)。

结果集:

Id LastName FirstName Address City
2 Bush George Fifth Avenue New York

例子 2

接下来,我们希望从 "Persons" 表中选取居住在以 "g" 结尾的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE '%g'

结果集:

Id LastName FirstName Address City
3 Carter Thomas Changan Street Beijing

例子 3

接下来,我们希望从 "Persons" 表中选取居住在包含 "lon" 的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City LIKE '%lon%'

结果集:

Id LastName FirstName Address City
1 Adams John Oxford Street London

例子 4

通过使用 NOT 关键字,我们可以从 "Persons" 表中选取居住在不包含 "lon" 的城市里的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons
WHERE City NOT LIKE '%lon%'

结果集:

Id LastName FirstName Address City
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

④BETWEEN AND

查询stu_info表中成绩大于50小于90的学生信息,输入语句如下。

SELECT * FROM stu_info WHERE s_score BETWEEN 50 AND 90

SQL从零到迅速精通【实用函数(1)】的更多相关文章

  1. SQL从零到迅速精通【实用函数(3)】

    1.LOWER()函数 使用LOWER函数将字符串中所有字幕字符转换为小写,输入语句如下. SELECT LOWER('BEAUTIFUL'),LOWER('Well'); 2.UPPER()函数 S ...

  2. SQL从零到迅速精通【实用函数(2)】

    1.对查询结果进行排序 查询stu_info表中所有学生信息,并按照成绩由高到底进行排序,输入语句如下. SELECT * FROM stu_info ORDER BY s_score DESC;   ...

  3. SQL从零到迅速精通【触发器】

    essay from:http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html 触发器就类似一个小账本,记录了你在数据库做了哪些操作,可 ...

  4. SQL从零到迅速精通【数据库应用】

    数据库理论的研究主要集中于关系规范化理论和关系数据理论等.数据库技术与计算机技术的结合使得数据库中新的技术层出不穷.最初的数据库系统主要应用于银行管理.飞机订票等事务处理环境.后来渐渐应用于工程设计与 ...

  5. SQL从零到迅速精通【规则和约束】

    1.[创建规则] 为stu_info表定义一个规则,指定其成绩列的值必须大于0,小于100,输入语句如下. USE test_db; GO CREATE RULE rule_score AS @sco ...

  6. SQL从零到迅速精通【数据更新】

    1.[导入表]在两个表的格式一样的情况下,将一个表的数据导入另外一个表. person_old表中现在有两条记录.接下来将person_old表中所有的记录插入到person表中,语句如下: INSE ...

  7. SQL从零到迅速精通【表连接查询】

    看了这些表连接,个人感觉'左外连接'.'右外连接'和'全外连接'应用好就可以了. 1.外连接 (1)LEFT JOIN(左连接):返回包括左表中的所有记录和右表中连接字段相等的记录. 在student ...

  8. SQL从零到迅速精通【查询利器】

    1.[列选取]从fruits表中获取f_name和f_price两列,T-SQL语句如下. SELECT f_name,f_price FROM fruits; 2.[去重]查询fruits表中s_i ...

  9. SQL从零到迅速精通【基本语句】

    1.使用T-SQL语句创建数据表authors,输入语句如下. CREATE TABLE authors { auth_id int PRIMARY KEY,--数据表主键 auth_name VAR ...

随机推荐

  1. js源码-数组中的push()和unshift()方法的源码实现

    人话不多,直接上代码,在代码中解析,不足之处请谅解: push() Array.prototype._push=function(...value){//在Array原型链上添加_push方法 for ...

  2. Ext原码学习之Ext-more.js

    // JavaScript Document Ext.apply(Ext,{ userAgent:navigator.userAgent.toLowerCase(), cache:{}, isSeed ...

  3. 最全Java架构师130面试题:微服务、高并发、大数据、缓存等中间件

    一.数据结构与算法基础 · 说一下几种常见的排序算法和分别的复杂度. · 用Java写一个冒泡排序算法 · 描述一下链式存储结构. · 如何遍历一棵二叉树? · 倒排一个LinkedList. · 用 ...

  4. Note -「圆方树」学习笔记

    目录 圆方树的定义 圆方树的构造 实现 细节 圆方树的运用 「BZOJ 3331」压力 「洛谷 P4320」道路相遇 「APIO 2018」「洛谷 P4630」铁人两项 「CF 487E」Touris ...

  5. Redis小秘密

    Redis小秘密 临渊羡鱼,不如退而织网. 一.Redis基本数据类型 想必很多人都能脱口而出String.List.Hash.Sorted Set和Set五种基本数据类型. 以及五大基本数据类型简要 ...

  6. RSA公私钥生成与使用

    参考 KeyStore 简述 Keytool 简述 Certificate Chain (证书链) 简述 详解RSA加密算法

  7. rinetd基于内网TCP端口转发

    在Linux系统中大多数情况选择用iptables来实现端口转发,iptables虽然强大,但配置不便,而且新手容易出错.在此分享另一个TCP/UDP端口转发工具rinetd,rinetd体积小巧,配 ...

  8. 为什么越来越多的企业选择商业智能BI?

    ​在大数据,云计算,工业4.0,物联网等概念概念炒得飞起的年代,现在已经变成某宝天天给我推送我感兴趣的东西.由此可见数据和科技正在慢慢深刻地改变我们的生活. 随着时代的发展,各个企业的内部决策方式也是 ...

  9. 从这3个方面考虑BI工具,选型一选一个准

    BI工具在很多场合都能听到,那么BI工具有什么功能呢?能给企业带来什么?好用的BI工具长什么样?今天跟着小编走近BI工具,一探究竟! 首先要了解BI工具的定义,什么是BI工具.BI工具是指利用现代数据 ...

  10. 帆软思迈特软件Smartbi两家区别在哪里?

    简单介绍下,从前端展现市场来看,国内这几年帆软算是做的比较好的一家公司,整体市场营销,以及产品易用性也是不错.思迈特公司也是一家专门从事做数据分析平台的公司,也有接近20年的历史,早期从银行.金融证券 ...