1.create table——创建新表
create table Students (
Sno int constraint PK_Students_Sno primary key,
Sname nvarchar(20) not null,
age int constraint DK_Students_age default 20,
sex nvarchar(1) not null,
place nvarchar(30) not null);
sql中的数据类型:
integer(size),int(size),smallint(size),tinyint(size):仅容纳整数,在括号内规定数字的最大位数。
decimal(size,d),numeric(size,d):容纳带有小数的数字,"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。
char(size):容纳固定长度的字符串(可容纳字母、数字以及特殊字符),在括号中规定字符串的长度。
varchar(size):容纳可变长度的字符串(可容纳字母、数字以及特殊的字符),在括号中规定字符串的最大长度。
date(yyyymmdd) :容纳日期。
nvarchar(n):包含n个字符的可变长度Unicode字符数据,长度在1到4000.
constraint 用于给约束命名,这里把Students表中的Sno列添加一个名为PK_Students_Sno的主键,给age列添加一个默认值。
在数据库中约束有6种:
①主键(primary key)约束:列非空,不重复。
②check约束:对一列数据进行限制。例如:check(age>20),age列的数据都要大于20.
③unique约束:列中的数据唯一,不重复,可以有null值,但null值只能有一个。
④默认约束:列的数据默认为一个值 default
⑤外键(foreign key)约束: constraint 外键名 foreign key(列名)reference 被引用表名(列名)
添加了外键的列中的值必须在所参考列中存在。
⑥not null
2.insert into——插入数据
insert into Students(Sno,sname,sex,place)values(990027,'胡伟','男','湖南');
3.update——修改表中的数据
update 表名 set 列名=新值 where 列名 = 某值
update Students set age = 22 where Sno=990027;
4.delete——删除表中的数据
删除某一行:
delete from 表名 where 列名 = 值
删除整个表的数据,但不删除表,表的结构、属性和索引都是完整的:
delete from 表名 或 delete * from 表名 或 truncate table 表名
5.alter table——添加、修改、删除列及列的属性
添加列:
alter table 表名 add 列名 列的数据类型;
添加列的主键:
alter table 表名 add constraint 主键名 primary key(列名);
删除列:
alter table 表名 drop column 列名;
修改列的数据类型:
alter table 表名 alter column 列名 新数据类型;
6.drop——删除索引、表、数据库
删除表:
drop table 表名;
7.select——查询
select用与从表中查询数据,结果被存储在一个结果表中(结果集)
select 列名 from 表名;
查询表的所有列的数据:
select * from 表名;
8.distinct
如果某列有重复值,仅需要选取不同的值:
select distinct 列名 from 表名;
9.where
select 列名 from 表名 where 列名 运算符 值;
select Sname from Students where age >20;
可以使用的运算符:
= ,>,< , >=, >=,
<> 不等于(某些版本可以用:!=)
between....and...
like
10.关于SQL通配符:
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist] 或 [!charlist] 不在字符列中的任何单一字符
通配符必须和like运算符一起使用
11.like
用于在where子句中搜索列中的指定模式,搭配通配符。
使用%:
查询Students表中姓胡的学生的信息:
select * from Students where Sname like'胡%';
查询Students表中名字里含有“胡”字的学生的信息:
select * from Students where Sname like'%胡%';
使用_:
查询表中年龄值为第一个字符为3的学生的信息
select * from Students where age like '_3';
使用[chasrlist]:
查询表中姓胡、程的学生的信息:
select * from Students where Sname like '[胡程]%';
使用[^charlist]:
查询表中不姓胡、程的学生的信息:
select * from Students where Sname like '[^胡程]%';
12.between and
select 列名 from 表名 where 列名 between value1 and value2;
不同数据库对between and的操作是有差异的,有的会列出value1和value2之间的数据,但不包括value1和value2,有的数据库会列出value1和value2。
如果列出value1和value2范围之外的数据:
select 列名 from 表名 where 列名 not between value1 and value2;
13.in
查询年龄为23和24的学生的信息:
select * from Studens where age in(23,24);
14.and&or
and 和or可在where子语句中把两个和多个条件结合起来,and要求连接的条件都成立,or要求连接的条件成立一个就行。
15.order by
用于根据指定的列对结果集排序,默认按照升序排序,降序使用desc关键字。
SQL函数
1.AVG():返回某数值列的平均值,null值不包括在计算中。
select AVG(列名) from table;
2.count(列名):返回指定列的值的数目,不包括null。
count(*):返回表中的记录数
count(distinct 列名):返回指定列不同值的数目
3.first():返回指定字段的第一条记录。
4.last():返回指定字段的最后一条记录。
5.Max();返回某一列的最大值,可用于文本列,获取字母排序的最大值
6.Min():返回某一列的最小值,可用于文本列,获取字母排序的最小值
7.sum():求某一列的总值。
8.having:由于where关键字无法与合计函数一起使用,需用having连接合计函数。
9.group by:用于结合合计函数,根据一个或多个列对结果集进行分组。