【注意】约束表达式是一个逻辑表达式,例如我们可以用这条表达式判断姓名是否为空:
LEN(stuName)>0 或者判断电子邮件中是否包含@符号:StuEmail LIKE '% @ %'.
8.SQL语句应用:
SQL:结构化查询语言(Structured Query Language),它是高级的非过程化编程语言。
SQL分三大类:
数据定义语言(DDL,Data Description Language)——定义数据库模式的语句,包括创建语句、去除语句、修改结构语句和声明语句等,如CREATE\\ALTER\\DROP\\DECLARE等。
数据操纵语言(DML,Data Manipulation Language)——用于完成数据库增删改查操作的语言,如INSERT,DELETE,UPDATE,SELECT。
数据控制语言(DCL,Data Control Language)——用于管理数据库的语言,包含管理权限及数据更改,如GRANT,REVOKE,COMMIT,ROLLBACK。
·SQL Server数据库中使用SQL语言:
新建一个SQL查询窗口,在窗口中输入SQL语句后,点击并执行SQL语句。
按钮后,可以运行
·数据定义语言(DDL):
作用:描述数据库中要存储的现实世界实体的语言,通过它我们可以创建数据库和数据表。
作为普通的软件开发者来说我们只需掌握下面的方法来生成数据库和数据表DDL语句即可:
--创建数据库SQL语句:
用我们已建好的数据库的DDL语句拷贝到SQL文件中:
SQL文件:
同理,在我们建立的数据表上右击->编写表脚本为->Create到->新查询编辑器窗口->将窗口中的代码复制粘贴到刚才创建数据库代码的下面,组织在一起并保存为SQL文件。以后,如果人家要使用你的数据库和表进行操作,你除了可以用备份文件,还可以用你保存过的SQL文件,这样人家可以不必建数据库和表而直接在SQL语句上操作数据。
·数据操纵语言(DML)
作用:用于检索数据,主要是有四种:增加、删除、修改、查询。
插入语句:INSERT INTO <表名> [字段列表] VALUES <值列表>(注意:非数字型都用单引号表示)
删除语句:DELETE FROM <表名> [WHERE <删除条件>] (注意:如果存在主外键关系,先删外键值)
修改语句:UPDATE <表名> SET <字段名 = 更新值> [,<字段名 = 更新值>][WHERE <更新条件>]
查询语句:SELECT *[字段名,字段名] FROM 表名 [WHERE <查询条件>] (注意:最好少用*)
高级扩展:
--查询语句: --(1)别名
SELECT stuName AS 姓名, stuAge AS 年龄, stuSex AS 性别 FROM dbo.stuInfo --(2)WHERE 子句
SELECT stuName,stuAge,stuSex FROM dbo.stuInfo WHERE stuAge < 22 --(3)ORDER BY 排序
SELECT stuName,stuAge,stuSex FROM dbo.stuInfo WHERE stuAge < 22 ORDER BY stuId DESC --ASC从小到大(升序),DESC从大到小(降序) --(4)复合排序
SELECT stuName,stuAge,stuSex FROM dbo.stuInfo
ORDER BY stuId DESC,stuAge ASC --stuId 是第一排序,stuAge是第二排序
--(5)模糊查询(LIKE)[通配符:%(0个以上),-(1个),[charlist](字符冲的任何一个字),[^](排除字符)]
SELECT stuName,stuAge,stuSex FROM dbo.stuInfo WHERE stuName LIKE '%孙%' --查询包含'孙'字的姓名 SELECT stuName,stuAge,stuSex FROM dbo.stuInfo
WHERE stuName LIKE '[^刘孙]%' --查询不包括姓为“刘”或“孙”字的学生姓名 --(6)精确查询 (AND\\OR\\IN()\\ NOT IN()\\BETWEEN AND\\NOT BETWEEN AND) SELECT stuName,stuAge,stuSex FROM dbo.stuInfo
WHERE stuAge >= 22 AND stuAge<= 25 --查询年龄在22~25岁之间的学生 SELECT stuName,stuAge,stuSex FROM dbo.stuInfo
WHERE stuAge NOT BETWEEN 20 AND 22 --排除年龄在20-22岁之间的学生(即除20-22岁之外的学生)
SELECT stuName,stuAge,stuSex FROM dbo.stuInfo
WHERE stuAge IN (20, 21, 23) --查找年龄在20岁,21岁,23岁的学生。 --(7)子查询 --精确子查询
SELECT stuName,stuAge,stuSex FROM dbo.stuInfo
WHERE classGuid =(SELECT classGuid FROM dbo.classInfo WHERE className='大一')
--模糊子查询
SELECT stuName,stuAge,stuSex FROM dbo.stuInfo
WHERE classGuid IN (SELECT classGuid FROM dbo.classInfo WHERE className LIKE '%一')