SQL语法学习记录
2017-11-25 14:33
726 查看
SQL语法学习记录
SQL学习准备
--为了方便练习,在数据库中创建演示数据: create database TEST; use TEST ; ---------- go create table t_icitem (id int primary key, name varchar(255), model varchar(255), alexa varchar(255), country varchar(255) ) insert into t_icitem values ('1','oppo','16g','1','CN') ,('2','索尼','8g','13','JAP') ,('3','苹果','8g','2','USA') ,('4','小米','64g','3','CN') ,('5','华为','32g','4','CN') ,('6','魅族','32gm','15','CN') select * from t_icitem; ---------- create table icstockbillentry (id int primary key, item_id int not null, [count] int not null, date date not null ) insert into icstockbillentry values (1,1,45,'2016-05-10') ,(2,3,100,'2016-05-13') ,(3,1,230,'2016-05-14') ,(4,2,10,'2016-05-14') ,(5,5,205,'2016-05-14') ,(6,4,13,'2016-05-15') ,(7,3,220,'2016-05-15') ,(8,5,545,'2016-05-16') ,(9,3,201,'2016-05-17') select * from icstockbillentry;
SQL初级教程
- SELECT
select column_name,column_name from table_name; --从表中选取部分列 select * from table_name; --从表中选取所有列
- SELECT DISTINCT
select distinct column_name from table_name; --从列中选取不重复的值;即去重
- WHERE
select * from where column_name operator value; --取符合条件的记录
where子句中的运算符
运算符 | 描述 |
---|---|
between | 在某个范围内 |
like | 模糊查询 |
in | 多个值 |
=,<,>,<> or !=,>=,<= |
备注
逻辑运算的优先级( ) > not > and > or
模糊查询
%号表示多个字符,_表示一个字符;
M%:查询M开头的值;
%M%:查询包含M的所有值;
%M:查询M结尾的值;
%M_:查询M在倒数第二位的所有值;
- AND & OR
select * from table_name where column_name > value and (column_name = 'a' or column_name = 'b'); --and和or可以结合使用,使用括号可以组成复杂的表达式
- ORDER BY
select * from table_name order by column_name asc,column_name desc; --排列不写明asc,desc时默认为'asc'; --'asc'表示升序;'desc'表示降序。
- INSERT INTO
insert into table_name(column1,column2) values(1,a),(2,b); --没有指定列 4000 名,则需要插入所有的值
- 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; --如果省略where子句,将删除表中所有记录,但不改变表结构、属性、索引等
SQL高级教程
- SELECT TOP
select top number percent * from table_name; --number代表返回的记录数,如:2; --number后面输入percent代表返回所有行数的百分比
- AS
select T1.column_name as A,T2.column_name as B from table_name as T1,table_name as T2 在下面的情况下,使用别名很有用: --查询中涉及多个表 --查询中使用了函数 --列名很长或可读性差 --需要把多个列结合在一起
- JOIN (INNER JOIN)
select * from table_A inner join table_B on A.column = B.column; --如果条件为空,on后面输入1 = 1即可。
用于把来自俩个表或多个表的行结合起来;join等于inner jion。更多详细参考。
- SELECT INTO
select * into table_name_bak from table_name; --完全复制表,可以看作表的备份; select column_name,column_name into table_nanme_bak from table_name where column_name operator value; --复制部分列的满足部分条件的记录到新表; select T1.column,T2.column into T1 join T2 ON T1.fid = T2.fid; --复制多个表中的数据到新表;
- INSERT INTO SELECT
insert into table_A(column_name,column_name) select column_name,column_name from table_B where column_name operator value; --复制B表中指定记录插入A表的指定列
- CREATE
create database DB_name; --创建数据库 create table table_name ( column_name data_type(size) constraint default(value), column_name data_type(size) constraint default(value), .... ); --创建数据表;data_type为数据类型;constraint为约束;default为默认值;
常用数据类型
类型 | 说明 |
---|---|
varchar | 字符串 |
int | 整数 |
decimal(a,b) | 小数;a表示小数点前后所有位数的总长,b表示保留的小数位数 |
date | 日期 |
常用约束
类型 | 说明 |
---|---|
NOT NULL | 不允许为空值 |
UNIQUE | 不允许重复;每个表可以有多个UNIQUE约束 |
PRIMARY KEY | =NOT NULL & UNIQUE;每个表只能有一个PRIMARY KEY约束 |
- ALTER
alter table table_name add column_name data_type(size); --在表中添加一列; alter table table_name drop column column_name; --在表中删除一列; alter table table_name alter column data_type; --修改列的数据类型;
- DECLARE
--#声明 declare @dept varchar(255) declare @batchno varchar(255) declare @starttime date declare @endtime date --#赋值 set @dept = '' set @batchno = '' set @starttime = '2017-01-01' set @endtime = '2017-12-30' --或者 select @dept = '',@batchno = '',@starttime = '2017-01-01',@endtime = '2017-12-30' --#使用 slect * from t1,t2,t4 where t4.FName like '%'+@dept+'%'--like比较值格式:'%'+@变量+'%' and t2.FBatchNo like '%'+@batchno+'%' and t1.FDate >= @starttime and t1.FDate <= @endtime
- IF (NOT) EXISTS
1.介绍 if not exists 即如果不存在,if exists 即如果存在 2.使用 a.判断数据库不存在时 if not exists(select * from sys.databases where name = 'database_name') b.判断表不存在时 if not exists (select * from sysobjects where id = object_id('table_name') and OBJECTPROPERTY(id, 'IsUserTable') = 1) c.判断列不存在 if not exists (select * from syscolumns where id=object_id('table_name') and name='column_name') 当判断的结果不存时,我可以执行创建数据库,创建表,增加列,可以执行相应的SQL语句; 而if exists同理判断,首先判断查询结果是否存在,如果存在执行判断后面的语句,查询的数据库,表,列的方法相同;
SQL骨灰教程
- CONVERT
convert(clume_type(length),date,style) --示例: select convert(varchar(20),getdate(),100) --返回:01 24 2018 6:14PM --style值代表的格式请参考w3school
SQL语法学习记录
SQL学习准备
SQL初级教程
- SELECT
- SELECT DISTINCT
- WHERE
where子句中的运算符
备注
- AND OR
- ORDER BY
- INSERT INTO
- UPDATE
- DELETE
SQL高级教程
- SELECT TOP
- AS
- JOIN INNER JOIN
- SELECT INTO
- INSERT INTO SELECT
- CREATE
常用数据类型
常用约束
- ALTER
- DECLARE
- IF NOT EXISTS
SQL骨灰教程
- CONVERT
附单词记忆
附:单词记忆
单词 | 读音 | 释义 |
---|---|---|
distinct | 迪斯’厅科特 | 不同的 |
column | 克拉姆 | 列 |
constraint | 坑死’脆n特 | 约束 |
varchar | 哇’克儿 | 字符串 |
decimal | 戴思茂 | 小数 |
unique | 优’尼科 | 唯一 |
primary | 普瑞迈儿瑞 | 主要的;primary key主键 |
相关文章推荐
- SQL语法学习记录——JOIN
- 学习SQL应知道的动态SQL语句基本语法
- SQL语句中case语句语法学习
- linq to sql 语法 学习笔记(1)
- SQLServer语法:如何处理查找一个数据库表的n 到 m条记录?
- SparkSQL学习记录之三
- Oracle SQL脚本学习记录一
- mysql远程访问 sql删除记录 伪造浏览器post php错误处理学习 django模板改tdk
- pl/sql学习2——pl/sql记录
- QT样式表语法(The Style Sheet Syntax)学习记录
- oracle开发之<<SQL Cookbook>>学习笔记整理:第一章 检索记录
- ORACLE之PL/SQL简单基础语法学习(二)
- spark sql 学习中的几点记录
- 学习SQL应知道的动态SQL语句基本语法
- SQL学习记录
- sql学习记录【2】
- w3school学习sql语法笔记--SQL 通配符
- sql server学习记录
- Microsoft SQL Server学习(二)--数据库的语法
- sql语句学习笔记(5)-sql语法