SQL基础+查询基础
关键字:
-
数据定义语言(DDL)
create:创建数据库和表等对象
drop:删除数据库和表等对象
alter:修改数据库和表等对象结构 -
数据操纵语言(DML)——使用最多
select:查询表中的数据
insert:插入
update:更新数据
delete:删除表中的数据 -
数据控制语言(DCL)
commit: 确认对数据库中的数据进行的变更
rollback:取消对数据库中的数据进行的变更
grant: 赋予用户操作权限
revoke: 取消用户的操作权限
PS:1.SQL关键字的不区分大小写,语句以分好结尾
2.一般地:关键字大写,表明的首字母大写,其余小写
插入到表中的数据区分大小写
书写方式
字符串(包括日期)用单引号括起来,数字无需加
创建数据库:create database xxx;(xxx为数据库名称)
表的操作:
创建表
create table xxx
(<列名1> 数据类型 <该列所需约束>,
<列名2> 数据类型 <该列所需约束>,
<列名3> 数据类型 <该列所需约束>,
...
)
约束为null或not null(该列可以有空白值or必须输入数据)
例:
create table '商品表'
(<‘商品编号’ nchar(10) not null,
‘商品名称’ nchar(10) not null,
‘商品种类’ nchar(10) not null,
‘销售单价’ nchar(255) not null,
'进货单价' nchar(255),
'登记日期' nchar(255),
...
-
列名的数据类型应指定:integer类型(用于储存整数),char类型(定长字符串),varchar类型(不定长),date类型(储存日期年月日)
其中char(xxx)表示该列可以存储的字符串的长度为xxx(最大长度),如指定char(8)并输入‘abc’,则会以‘abc ’的形式储存;varchar -
列的编号:从左至右:1,2,3,…
删除表:drop tabel 表名;
删除操作无法恢复(删除表、数据等)
变更表
alter table 表名 add (列名1,列名2,...) ---新增列
alter table 表名 drop 列名 ---删除列
sp_rename '旧表名','新表名' ----变更表名
主键约束primary key(列名)
作用:可以通过主键对应的列取出特定的一行数据(前提是这列的数据不重复)
查询基础
select语句
- 查询特定的列
select 列名 from 表名;
select 列名1,列名2 from 表名; ---列名为中文时不用加引号
select * from 表名; ---查询表中的全部列
- 为列设别名:
select 列名 as 别名 from 表名;
别名可为中文,但是需要用双引号括起来
select 商品编号 as id,
商品名称 as 'name',
销售单价 as price
from Products;
- 查询常数:
select ‘常数名’ as 常数类型
- 删除重复行:
select distinct 列名 from 表名
1.NULL 值也会作为重复项被删除
2.DISTINCT 关键字只能用在第一个列名之前
select distinct 商品种类 from Products;
- where:指定查询数据的条件
select 列名,from 表名 where 条件表达式;
例:
select distinct 商品名称,商品种类 from Products where 商品种类='衣服';
select distinct 商品名称 from Products where 商品种类='衣服';
- 注释:
单行报告:--
多行报告:/*.......*/
算术运算符and比较运算符
- 四则运算符:
+,-,*,/
- 包含NULL的运算,结果均为NULL
例:
select 商品名称,销售单价,销售单价*2 as 销售单价x2 from Products;
select (1+2)*3 as calculation;
2. 比较运算符
等于=,不等于<>
1.字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆
2.不能对NULL使用比较运算符
3.选取 NULL的记录: 使用xxx is null / xxx is not null
select 商品名, 商品价格 FROM Products where 商品价格 IS NULL;
逻辑运算符
-
NOT运算符:表示否定
查询条件商品价格<1000
等价于商品价格 NOT >=1000
-
AND运算符:逻辑与,并且
-
OR运算符:逻辑或,或者
计算顺序:AND优于OR
select 商品名称,商品种类,登记日期
from Products where 商品种类='办公用品'
AND 登记日期='2009-09-11'
or 登记日期='2009-09-20';
代码逻辑为:商品种类为办公用品且登记日期为2009-09-11,或者登记日期=‘2009-09-20’
想得到商品种类为办公用品且登记日期为’2009-09-11’或者’2009-09-20’
解决办法:加括号
select 商品名称,商品种类,登记日期
from Products where 商品种类='办公用品'
AND (登记日期='2009-09-11'
OR 登记日期='2009-09-20');
向表中插入数据
查询结果中列的顺序与select语句中的顺序相同
insert into 表名 values ('列1数据', '列2数据','列3数据',...); ---插入一行数据