sql语言基础.docx
《sql语言基础.docx》由会员分享,可在线阅读,更多相关《sql语言基础.docx(6页珍藏版)》请在冰豆网上搜索。
sql语言基础
1、
1)SQL,结构化查询语言。
作用:
数据库管理员可以利用此语言来操作数据库系统。
2)T-SQL
3、
(1)数据定义语言,DDL
它可以用来创建数据库和数据库中的各种对象。
数据库中的对象包括:
表、视图、索引、存储过程、触发器...
DDL常用的命令包括:
create、alter、drop
(2)数据操纵语言,DML
它可以完成对数据库中的数据的查询、更新、删除、插入的功能
DML常用的命令包括:
select、update、delete、insert
5、创建表的语法:
createtable表名(
列名_1数据类型约束条件,
列名_1数据类型约束条件,
......
)
为表插入数据的命令
insertinto表名(列名,列名..)values(列内容,列内容)
insertintopeople(p_name,p_id)
values('张三',12345)
(1)查询表中的数据,基本查询技术
1、select*from表名“*”代表将表中的列全部显示出来
2、查询所有列:
select*from表名1,表名2,...
[where条件]
[groupby分组的列名]
[having聚合函数比较操作]
[orderby排序的列名]
如果只想查询某一列,或几列:
select列名1,列名1,列名2..from表名
3、
(2)更新数据库信息update语句:
update表名set列名1=值1,列名2=值2.....,where条件
(3)delete语句:
可以删除表中的一行或者多行语句
语法:
deletefrom表名where条件
numeric(p,n)
p代表数字类型的精度,插入数字的最大长度
n代表小数点后面的位数
修改表:
(1)为表添加列
altertable表名add列名列数据类型约束(default'地名')
(2)删除表的列
altertable表名dropcolumn列名
注意:
如果删除表中列的时候,一定要注意此列是否含有约束对象。
如果有约束对象,则应该删除约束名,再删除表中所对应的列。
提示:
删除约束的时候,约束名不要用单引号修饰
删除表中的约束:
altertable表名dropconstraint约束名
(3)修改表中列的数据类型
比如:
增加varchar的长度
altertable表名altercolumn列名列数据类型
(4)约束:
约束的作用:
它是为了更好的保护数据库中数据的完整性,存储数据的一致性和正确性的一套机制。
sqlserver2005中有6种约束:
主键约束(primaryKeyconstraint)
唯一性约束(uniqueconstraint)
检查约束(checkconstraint)
默认约束(defaultconstraint)
外部键约束(foreignKeyconstraint)
空值(NULL)
主键有什么作用:
1、一个列被定义成主键后,此列中的数据不能为null
2、被定义成主键的列,其数据必须是唯一的
定义主键的方式:
(1)、
createtable表名(
列名1数据类型1primarykey,
列名2数据类型2
)
(2)altertable表名addconstraintPK_表名primarykey列名
(3)createtable表名(
列名1数据类型1,
列名2数据类型2,
constraintPK_表名primarykey列名
)
3、外键foreignkey(介绍外键约束的定义)
外键是指用于建立实体与实体之间关系,当添加、修改、删除数据的时候,它可以保持两张表的数据一致性
外键就是针对表与表之间的关系确立而设置,让两个表能够相互联系
外键的第一个作用,当插入数据的时候,如果数据在父表中找不到,我们的外键就会阻止你进行一个插入操作
外键的第二个作用,保持两张表中关系数据的一致性
*重点内容,如何建外键
1、确立表之间的子父关系
2、外键一定是建在子表中,且该外键是父表中的主键那一列
createtable人口普查(
b_namevarchar(10),
b_sexvarchar
(2)constraintck_sexcheck(b_sex='男'orb_sex='女')
)
*为列定义别名:
selectp_nameas姓名,p_dizhias地址from表名
select‘姓名’=p_name,‘地址’=p_dizhifrom表名
*distinct关键字
此关键字是为了过滤掉列中重复的值
selectdistinct列名from表名
*orderby排序
语法:
orderby列名[desc|asc]
desc:
代表降序排列
asc:
代表升序排列
select*from表名orderby列名
如果不写排序关键字,默认的是升序
select*from表名orderby列名desc
按降序排序
*where关键字的使用
语法:
where条件1[or|and][条件2]....
上述条件1可以包括如下:
where列名1列名2
第一种:
比较操作
<>:
不等于
=:
等于
>,<,>=,<=等
例如:
select*from表名whereage>23
第二种:
逻辑操作
and:
与运算筛选出两种条件都满足的情况
or:
或运算
not:
非
逻辑操作的用法:
where条件1条件2
between....and....在...与...之间
例如:
select*from表名wherenotbetween...and...
like关键字的使用:
like是作为SQL模糊查询比较常用的一个技术。
在like关键字使用中提出两个比较特殊的符号
(1)%:
0个或者多个任意字符
(2)_:
任意一个字符
例如:
查找学生表中姓"陈"的同学
select*fromstudentwhere姓名like'陈%'
例如:
查询学生表中名字是三个字的学生信息
select*fromstudentwhere姓名like'_'
in关键字的使用:
in关键字,它是要求查询的结果在某几个值里面
例如:
查找年龄在17,33,20的人
select*from信息where年龄in('17','33','20')
聚合函数的使用:
(1)max:
求最大值
(2)min:
求最小值
(3)count:
求记录数
(4)avg:
求平均值
(5)sum:
求总和
(1)count(*):
可以计算包含null列的记录数
(2)count(列名):
计算总记录数的时候,不去计算null
groupby子句,它可以对某一列相同的值进行分组并求出相应的结果。
语法:
select列名1[列名2...]fromgroupby列名1[列名2...]
having子句的使用
having子句的作用非常重要,它是对聚合函数的值可以进行比较操作
from子查询
结构:
select*from表名1,(select*from表名2)
作用:
在from关键字后面出现的查询语句,我们可以让它单独的做一张虚表
any子查询
>any:
大于最小的
小于最大的
=any:
就是in关键字的作用
语法:
(1)select*|列名1,列名2...from表名where列名>any比较条件(是一个子查询)
(2)select*|列名1,列名2...from表名where列名(3)select*|列名1,列名2...from表名where列名=any比较条件
all子查询
语法格式:
(1)select*|列名1,列名2...from表名where列名>all比较条件(是一个子查询)
(2)select*|列名1,列名2...from表名where列名(3)select*|列名1,列名2...from表名where列名=all比较条件
>all:
大于子查询中最大的数据
小于子查询中最小的数据
=all:
没有数据