课题:sql数据库操作 第三节:数据库的操作和查询 主讲 暗月信心 QQ:40497992 第一部分 1数据库建立 create database hacker 2数据库的改名操作 sp_renamedb ‘原数库名','新数据库名' 3数据库的删除操作 语句格式 drop database 数据名 4删除表的操作 drop table 表名,删除“student_info”表 第二部分 选择一个数据库 1数据库表是建立在数据库之上的,在创建之前需要选择一个数据库。语句格式:use 数据库,这里选择“hacker”数据库 2创建一个表 在查询表是建立在数据库之上的,在创建之前需要选择一个数据库,语句的格式为 create table student_info (no char(50) not null unique, name char(20) unique, sex char(1), age int, dept char(15), ) student_info创建学号 姓名 性别 年龄 专业等字段并声明字段的类型 常见的字段类型 create table <表名> <表名><数据类型>[列级完整性约束条件] Int 代表整形数据,float代表浮点精度数字; Char 固定长度的费unioncode 字符数据 Varchar 可变长度的费unioncode数据 Text 可变长度的非 Unicode数据 nchar 固定长度的Unicode数据 nvarchar 可变长度的Unicode数据 ntext 可变长度Unicode数据 image 可变长度的二进制数据 3数据库表的修改 在查询分析器中可使用sql语句对基本表进行修改 alert table <表名> [add <新列名> <数据类型> [完整性约束]] [drop <完整性约束>] [Page] [modify <列名><数据类型>] add用于向表中添加新列及新列相关的完整西约束新的列添加成功后 不带任何数据 drop 用于删除指定的完整性约束条件 modify 用于修改原来的列定义包括修改列名和数据类型 ,列数据类型修改后可能会掉失原来的数据 第三部分 数据表的查询操作 1简单的查询操作 sql中查询某字段的数据,使用select 语句。语句格式 select 字段名 from 表名。查看admin中所有的用户名 select 字段名 from 表名 2任意查询 在sql语句中可以查询任意表内字段数据,语句格式:select * from 表名 如查询admin表中的所有数据 3where带条件的基本查询 有时数据库中的信息太多,如果使用以上的查询方式会很慢,会添加服务器的负担。如过想字段某个用户或者对应的信息。可以使用带条件的查询方式。select * from 表名 where 字段='查询条件' 查询admin表中id为3的用户信息 还可以使用where子句中的逻辑运算进行查询。语句格式 Select * from admin where id<5 and id>2,查询admin表中id大于2且小于5的信息、 4 第四部分 where的模糊查询 在进行搜索型注入的时候,其实就是利用了模糊查询功能 在正常模糊查询的语句插入精心构造的sql攻击语句以达到注入的效果。语句格式:select * from 表名 where 字段 like '%查询关键%',例如,查询所有name字段中带有“月”的信息 5合并查询 如果在一个结果中集中显示了不同表的内容,那么久可以使用合并查询的方式。合并查询用于合并具有相同字段结构的两个表的内容。语句格式 select * from 表名 union select * from 表名2,例如合并查询表“admin”和表“admin_user”内容使用语句 select * from admin union select * from admin_users 另外,在使用where子句进行条件查询时,还可以使用以下通配字符。 百分号“%”可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即“%%” 下划线“_”;匹配单个任意字符,它常用来限制表达式的字符长度 方括号“[]”指定一个字符、字符串或范围,要求所匹配对象为他们中的任意一个 例如,要查询数据库中,所有“用户”包含“月”的数据,可执行 Select FROM admin where 姓名 like '%月%' 4查询结果排序 ORDER BY {cloumn_name [ASC|DESC]}[,....N] 其中asc表示升序,为默认值,DESC为降序。ORDER BY 不能按ntext、text 和image 数据类型进行排序。如执行以下语句。可按用户id从大到小配需 SELECT * FROM admin ORDER BY id desc 第五部分 数据更新操作 1 insert语句 使用insert 语句可以对表中添加新的数据记录。也就是我们常见的通过脚本漏洞来添加管理员。。语句格式 insert [into] {table_name|view_name} [(column_list)] {DEFAUKT VALUES |Values_list | sekect_statement} 在数据插入之前应该先弄清楚数据表以及个字段的结构。这里管理员的表名为admin 字段依次为id、name、pass 。现在插入一个id为10,用户为qq,密码为40497992的用户 INSERT INTO admin (id,name,pass) VALUES(10,'qq','40497992') 2update语句 update 用于更改表中现有数据 UPDATA {table_name|view_name} SET [{table_name|view_name}] {column_list|Variable_list|variable_and_column_list} [,{column_list2|variable_list2|variable_abd_column_list2}... [,{column_listN|variable_listN|variable_abd_column_listN}]] 例如我们想修改用户为暗月信心的密码为123可以使用如下语句 update admin set pass='123' where name='暗月信心' 3delete语句 delete 语句用于删除一个或者多个记录。同上可以给delete语句提供where子句,利用where子句选择要删除的记录。语句格式 DELETE [FROM] {table_name|view_name} [WHERE clause] 例如qq 账户是通过注射漏洞添加的,利用完毕后需要对其删除。使用的语句delete from admin where name='暗月信心' |