SQL从零到迅速精通【实用函数(1)】
语法是一个编程语言的基础,真的想玩的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)】的更多相关文章
- SQL从零到迅速精通【实用函数(3)】
1.LOWER()函数 使用LOWER函数将字符串中所有字幕字符转换为小写,输入语句如下. SELECT LOWER('BEAUTIFUL'),LOWER('Well'); 2.UPPER()函数 S ...
- SQL从零到迅速精通【实用函数(2)】
1.对查询结果进行排序 查询stu_info表中所有学生信息,并按照成绩由高到底进行排序,输入语句如下. SELECT * FROM stu_info ORDER BY s_score DESC; ...
- SQL从零到迅速精通【触发器】
essay from:http://www.cnblogs.com/hoojo/archive/2011/07/20/2111316.html 触发器就类似一个小账本,记录了你在数据库做了哪些操作,可 ...
- SQL从零到迅速精通【数据库应用】
数据库理论的研究主要集中于关系规范化理论和关系数据理论等.数据库技术与计算机技术的结合使得数据库中新的技术层出不穷.最初的数据库系统主要应用于银行管理.飞机订票等事务处理环境.后来渐渐应用于工程设计与 ...
- SQL从零到迅速精通【规则和约束】
1.[创建规则] 为stu_info表定义一个规则,指定其成绩列的值必须大于0,小于100,输入语句如下. USE test_db; GO CREATE RULE rule_score AS @sco ...
- SQL从零到迅速精通【数据更新】
1.[导入表]在两个表的格式一样的情况下,将一个表的数据导入另外一个表. person_old表中现在有两条记录.接下来将person_old表中所有的记录插入到person表中,语句如下: INSE ...
- SQL从零到迅速精通【表连接查询】
看了这些表连接,个人感觉'左外连接'.'右外连接'和'全外连接'应用好就可以了. 1.外连接 (1)LEFT JOIN(左连接):返回包括左表中的所有记录和右表中连接字段相等的记录. 在student ...
- SQL从零到迅速精通【查询利器】
1.[列选取]从fruits表中获取f_name和f_price两列,T-SQL语句如下. SELECT f_name,f_price FROM fruits; 2.[去重]查询fruits表中s_i ...
- SQL从零到迅速精通【基本语句】
1.使用T-SQL语句创建数据表authors,输入语句如下. CREATE TABLE authors { auth_id int PRIMARY KEY,--数据表主键 auth_name VAR ...
随机推荐
- python办公自动化系列之金蝶K3自动登录(一)
做办公自动化的小伙伴都知道,驱动SAP GUI我们有SAP原生提供的[脚本录制与回放]以及SAP Scripting API可参考:驱动Office Excel等,我们有微软提供的[录制宏]功能:驱动 ...
- Java8-Consumer、Supplier、Predicate和Function方法总结
这几个接口都在 java.util.function 包下的,分别是Consumer(消费型).supplier(供给型).predicate(谓词型).function(功能性): 那么,下面,我们 ...
- js中(function(){}()),(function(){})(),$(function(){});之间的区别
1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Express ...
- 一行代码为UITextField添加收键盘功能
iOS开发中收键盘是十分常用的功能,只需一行代码即可为ViewController添加工具条收键盘功能 更重要的是使用catogory,无代码污染. 代码 // UITextField+keyboar ...
- iOS 学习资料Blog 技术论坛等,不断添加中。。。。
iOS 学习资料整理 http://www.jianshu.com/p/dc81698a873c 中文 iOS/Mac 开发博客列表 https://github.com/tangqiaobo ...
- 如何在 pyqt 中实现全局事件总线
前言 在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景: 我想要点击任意一个专辑卡并通知主界面跳转到专辑界面,那么一种实现方式如上图所示:点击任意一个蓝色方框所示的专辑卡 ...
- 014 Linux 线上高频使用以及面试高频问题——如何查找大文件并安全的清除?
目录 1 案例描述? 2 命令一(目录统计排序最佳命令) 3 命令二(最实用,目录和文件一起统计排序) (1)命令详情和说明 (2)du.head.sort.awk 详细说明参考已有文章附录 (3)L ...
- Java中Arrays数组工具类的使用全解
本文几乎涵盖了所有的Arrays工具类(基于Java 11)的方法以及使用用例,一站式带你了解Arrays类的用法,希望对大家有帮助. 码字不易,三连支持一下吧 Arrays数组工具类 方法一览表 快 ...
- Scala函数高级篇
一.匿名函数 没有名字的函数就是匿名函数,格式:(x:Int)=>{函数体} x:表示输入参数类型:Int:表示输入参数类型:函数体:表示具体代码逻辑 传递匿名函数至简原则: 参数的类型可以省略 ...
- App弱网测试方式
硬件设备:网络损伤仪 网络损伤模拟仪的状况包括真实广域网中存在的:有限的带宽.时延.丢包.抖动.乱序.重复报文.竞争流量.拥塞.误码等等.这些状况对网络应用来说可能会降低应用的性能,甚至有时是致命的. ...