-
SQL Server学习内容(一)
SQL Server对大小写不敏感,每条语句末端使用分号。
1.SQL命令
-
SELECT 从数据中提取数据
-
-
DELETE 从数据库中删除数据
-
INSERT INTO 向数据库中插入新数据
-
CREATE DATABASE 创建新数据库
-
ALTER DATABASE 修改数据库
-
CREATE TABLE 创建新表
-
ALTER TABLE 变更(改变)数据库表
-
DROP TABLE 删除表
-
CREATE INDEX 创建索引(搜索键)
-
DROP INDEX 删除索引
2.语法:
-
SELECT语句 用于从数据库中抽取数据,结果存储在一个结果表中,称为结果集。
-
SELECT column_name,column_name FROM table_name;(抽取指定列) 与 SELECT * FROM table_name;(抽取所有列)
-
SELECT DISTINCT column_name,column_name FROM table_name; SELECT DISTINCT语句用于返回唯一不同的值,没有重复项。
-
SELECT column_name,column_name FROM table_name WHERE column_name operator value; (WHERE子句用于过滤记录) WHERE子句中的运算符
-
AND & OR
-
ORDER BY 用于对结果集进行排序。
ORDER BY关键字用于对结果集按照一个列或者多个列进行排序,默认按照升序对记录进行排序,如需使用降序,需要使用DESC关键字。
SELECT column_name,column_name FROM table_name
ORDER BY column_name,column_name ASC|DESC;
ASC 表示升序;DESC 表示降序;
-
INSERT INTO用于向表中插入新记录
-
不指定要插入数据的列名,只提供被插入的值 INSERT INTO table_name VALUES (values1,values2,values3,...); 此时需要列出插入行的每一列数据
-
指定列名及插入的值 INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
-
UPDATE语句,用于更新表中的记录
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
注意:如果省略WHERE语句,则将会对表中该列所有内容赋该值。
-
DELETE语句:用于删除表中数据
DELETE FROM table_name
WHERE some_column=some_value;
DELETE FROM table_name; 或 DELETE * FROM table_name; 在不删除表的情况下删除所有的行,表的结构、属性、索引保持不变。
-
SELECT TOP语句:用于规定要返回的记录的数目,更适用于拥有数千条记录的大型表
LIMIT, ROWNUM
SELECT TOP number|percent column_name(s) FROM table_name;
实例: SELECT * FROM table_name LIMIT NUMBER; 表示,从“table_name”表中选取number条记录。
-
LIKE操作符:用于在WHERE子句中搜索指定列中的指定模式
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
-
通配符:可用于替代字符串中的任何其他字符。与LIKE操作符一起使用
通配符 | 描述 |
---|---|
% | 替代0个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或[!charlist] | 不在字符列中的任何单一字符 |
%: SELECT * FROM Websites WHERE url LIKE 'https%'; SELECT * FROM Websites WHERE url LIKE '%OO%'; _: SELECT * FROM Websites WHERE name LIKE '_oogle'; SELECT * FROM Websites WHERE name LIKE 'G_o_le'; [charlist]: SELECT * FROM Websites WHERE name REGEXP '^[GFs]'; 选取name以“G”、“F”或“s”开始的所有网站 使用REGEXP或NOT REGEXP运算符(或RLIKE和NOT RLIKE)来操作正则表达式。 SELECT * FROM Websites WHERE name REGEXP '^[A-H]'; 选取 name 以 A 到 H 字母开头的网站 [^charlist]或[!charlist]: SELECT * FROM Websites WHERE name REGEXP '^[^A-H]'; 选取 name 不以 A 到 H 字母开头的网站.
-
IN操作符
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);
-
BETWEEN操作符
BETWEEN操作符选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期。
-
BETWEEN
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2;
-
NOT BETWEEN
如需要显示不在范围内的数据,使用NOT BETWEEN:
SELECT column_name(s) FROM table_name WHERE column_name NOT BETWEEN value1 and value2;
-
带有IN的BETWEEN操作符实例
SELECT column_name(s) FROM table_name WHERE (column_name BETWEEN value1 and value2) AND column_name IN ('value1', 'value2');
带有文本值的需要在文本值上加上单引号' '。
-
-
SQL别名
通过使用SQL,可以为表名称或列名称指定别名。基本上,创建别名是为了让列名称的可读性更强。
-
列的SQL别名语法
SELECT column_name1 AS alias_name,column_name2 AS alias_name FROM table_name;
可以把多个列合起来作为一个列使用别名语法
SELECT CONCAT(column_name1,','column_name2,',',column_name3) AS alias_name FROM table_name;
-
表的SQL别名语法
SELECT column_name(s) FROM table_name AS alias_name;
-
在以下情况中,使用别名用处更大:
-
在查询中涉及超过一个表
-
在查询中使用了函数
-
列名称很长或者可读性差
-
需要把两个列或者多个列结合在一起
-
-
-
SQL连接(JOIN)
SQL JOIN用于把来自两个或多个表的行结合起来,基于这些表