语法是一个编程语言的基础,真的想玩的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. Github上点赞90k的计算机基础、操作系统、网络笔记,赶紧收藏

    最近,有粉丝发消息给我,说想要好好学习计算机,但是找不到门路啊,所以小编打算给大家推荐一些很奈斯的计算机学习的资料,希望大家赶紧收藏起来好好学习. 资料分为四份,给大家展示了部分内容,头条受限,无法全 ...

  2. Java-在数组中遍历出最值

    在操作数组时,经常需要获取数组中元素的最值. 代码 public class Example31{ public static void main(String[] args){ int[] arr= ...

  3. Springboot+Redisson自定义注解一次解决重复提交问题(含源码)

    前言   项目中经常会出现重复提交的问题,而接口幂等性也一直以来是做任何项目都要关注的疑难点,网上可以查到非常多的方案,我归纳了几点如下:   1).数据库层面,对责任字段设置唯一索引,这是最直接有效 ...

  4. Nodejs允许跨域访问

    状况:本地的前端项目(uni-app)以及后台管理(vue-mongo-node)和本地mongo数据库 前台项目端口是8082,后台数据接口是8081. 跨域解决,直接上代码: uni-app的ma ...

  5. 理解Faster R-CNN

    首先放R-CNN的原理图 显然R-CNN的整过过程大致上划分为四步: 1.输入图片 2.生成候选窗口 3.对局部窗口进行特征提取(CNN) 4.分类(Classify regions) 而R-CNN的 ...

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

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

  7. Solution -「CF 1375G」Tree Modification

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的树,每次操作选择三个结点 \(a,b,c\),满足 \((a,b),(b,c)\in E\),并令 ...

  8. STM32 HAL 库实现乒乓缓存加空闲中断的串口 DMA 收发机制,轻松跑上 2M 波特率

    前言 直接储存器访问(Direct Memory Access,DMA),允许一些设备独立地访问数据,而不需要经过 CPU 介入处理.因此在访问大量数据时,使用 DMA 可以节约可观的 CPU 处理时 ...

  9. Linux 利用date命令进行时间戳转换

    文章目录 获取当前时间的时间戳 获取已知时间的时间戳 以指定格式输出时间 获取当前时间的时间戳 不加时间的情况下,默认输出当前时间的时间戳 Linux:~ # date +%s 实验效果 为了更好的展 ...

  10. Spring源码之@Configuration注解解析

    1.前言 ​ Spring注解开发中,我们只需求要类上加上@Configuration注解,然后在类中的方法上面加上@Bean注解即可完成Spring Bean组件的注册.相较于之前的xml配置文件定 ...