对于数据库使用来说,设计好数据表只是一个框架而已,只要添加完的数据表才可以成为是一个完整的数据表。
1.数据操作分类
- 数据定义语言(DDL):create ,drop,alter
- 数据操作语言(DML):delete,select,insert,update
- 数据控制语言(DCL):grant,revoke,commit,rollback
- 附加语言元素:set declare open fetch close execute if else等
- 事务管理语言:begin tranction/commit rollback,ransaction
2.数据管理操作准备工作
/*1.创建数据库*/
create database db_stuManager;
/*2.使用当前创建数据库*/
use db_stuManager;
/*3.创建学员信息表*/
create table tb_student
(
sno int primary key identity(1,1),--学号,主键,标识列
sname varchar(50) not null,--姓名
ssex char(2) check( ssex = '男' or ssex = '女'),--性别
sage int not null,--年龄
saddress varchar(50) default '湖南省长沙市',--地址
stelphone varchar(30),--电话
sbirthday datetime,--生日
sclass varchar(20)--班级
)
3.使用insert语句添加数据
insert语句可以实现向表中添加新纪录的操作,该语句可以向表中插入一条新纪录或者插入一个结果集。
语法如下:
/*一次插入一条数据*/
insert into tb_表名( 字段1 , 字段2 , 字段3 , ... , 字段n ) values ( '值1' , '值2' , '值3' , ... , '值n');
/*一次插入多条数据*/
insert into tb_表名( 字段1 , 字段2 , 字段3 , ... , 字段n )
values
( '值1' , '值2' , '值3' , ... , '值n'),
( '值1' , '值2' , '值3' , ... , '值n'),
( '值1' , '值2' , '值3' , ... , '值n'),
( '值1' , '值2' , '值3' , ... , '值n'),
( '值1' , '值2' , '值3' , ... , '值n'),
( '值1' , '值2' , '值3' , ... , '值n');
【例子】利用insert语句向数据表tb_student添加数据记录。
insert into tb_student ( sname , ssex , sage , saddress , stelphone , sbirthday , sclass ) values ( '张三' , '男' , 18 , '湖南省长沙市' , '15173850223' , '2003-09-09' , '281');
insert into tb_student ( sname , ssex , sage , saddress , stelphone , sbirthday , sclass ) values
( '张叁' , '男' , 18 , '湖南省长沙市' , '15173850223' , '2003-09-09' , '281'),
( '张四' , '女' , 18 , '湖南省株洲市' , '18737436747' , '2003-09-09' , '281'),
( '张五' , '男' , 18 , '湖南省衡阳市' , '15348758433' , '2003-09-09' , '281'),
( '李四' , '女' , 18 , '湖南省湘潭市' , '15547534673' , '2003-09-09' , '281'),
( '李武' , '男' , 18 , '湖南省娄底市' , '15023647323' , '2003-09-09' , '281');
注意事项
- 如果该表上主键被设置为标识列,则插入数据时,该字段必须省略,否则报错;因为标识列不可手动维护。
- 如果向表中添加所有的字段,可以省略要插入的数据的列名。insert into tb_student values ( '翠花' , '女' , 21 , '湖南省株洲市' , '13317845678' , '2000-07-09' , '281');
- 如果想表中添加所有的字段,value后面的值不能缺省。
3.使用delete语句删除数据
语法如下:
/* 删除所有数据 */
delete from tb_表名;
/* 条件删除数据 */
delete from tb_表名 where 某属性= '某值';
--注意:from关键词可省略
-- 1.删除学号为5的学员信息
delete from tb_student where sno = 5;
-- 2.删除年龄在18到25岁之间的学员信息
delete from tb_student where sage between 18 and 25;
--或
delete from tb_student where sage >= 18 and sage <= 25;
4.使用update语句修改数据
语法如下:
/* 修改表中所有行 */
update tb_表名 set 某属性 = '修改后的新值';
/* 按指定条件进行修改数据 */
update tb_表名 set 某属性 = '修改后的新值' where 某属性 = '某值';
update tb_表名 set 某属性 = '修改后的新值' , 某属性 = '修改后的新值' , 某属性 = '修改后的新值' , 某属性 = '修改后的新值' where 某属性 = '某值';
--1.修改学员表中的所有人的年龄+1岁
update tb_student set sage=sage+1;
--2.修改学号为1的班级 改成288
update tb_student set sclass = '222' where sid = 1;
--3.修改学号为4的所有信息,多个字段用逗号隔开
update tb_student set sname = '小毛毛',ssex = '男',sage = 38 , stelphone = '13145202345',sindeitnty = '432723199909098765' , saddress = '猫猫村'
,sclass= '289' where hid = 4;
5.使用select语句查询数据
查询所有语法格式
select 字段1,字段2,字段3,...,字段n from tb_表名;
/* 如需查询所有字段使用*替代所有字段 */
select * from tb_表名;
字段别名语法格式
select 字段 as '别名' from tb_表名;
select 字段 '别名' from tb_表名;
select '别名' = 字段 from tb_表名;
条件查询
/* 运算符:>(大于) <(小于) >=(大于或等于) <=(小于或等于) =(等于) (!=、<>)不等于 */
select * from tb_表名 where 某属性 = '某值';
/* between...and 在...之间 */
select * from tb_表名 where 某属性 between 某值 and 某值;
like查询(模糊查询)
--模糊查询一般于通配符结合使用
-- _ 代表一个字符[任意的]
-- % 代表任意字符[1个以上]
select * from tb_表名 where 某属性 like '%关键词%';
order by 排序
--升序[asc],默认 降序[desc]
select * from tb_表名 order by 属性 asc;
top 关键词
select top 3 * from tb_表名;
distinct 去重复
select distinct(字段) from tb_表名;
6.经典案例
--1.查询指定的表的所有数据
select * from tb_Student;
--2.查询指定的字段:姓名和年龄
select sname,sage from tb_Student;
--3.为列名起别名[3种方式]
select sname as '姓名' from tb_Student;
select sname '姓名' from tb_Student;
select '姓名' = sname from tb_Student;
--4.查看姓名为张无忌的所有的信息
select * from tb_Student where sname = '张无忌';
--5.查询年龄大于25岁的信息
select * from tb_Student where sage >= 25;
--6.查询年龄在17-25岁之间
select * from tb_Student where sage >= 17 and sage <=25
--between...and 在...之间
select * from tb_Student where sage between 17 and 25;
--7.查询住在长沙的人的信息
--select * from tb_Student where saddress = '长沙'--错误语法
select * from tb_Student where saddress like '%长沙%';
--8.查询saddress字段以村结尾的有哪些人?
select * from tb_Student where saddress like '%村';
--9.查询第二个字是宝结尾的所有信息
select * from tb_Student where sname like '_宝';
--10.查询性别为女并且地址为长沙的人的信息
select * from tb_Student where ssex = '女' and saddress like '%村';
--11.查询所有的人的信息,按年龄排序 升序[asc],默认 降序[desc]
select * from tb_Student order by sage asc;
--12.按身高降序
select * from tb_Student order by sheight desc;
--13.查询所有男生后再按身高排序
select * from tb_Student where ssex = '男' order by sheight asc;
--14.按年龄排序后继续按身高排序
select * from tb_Student order by sage asc,sheight desc;
--15.取年龄最大的三位人
select top 3 * from tb_Student order by sage desc;
--百分制 percent
select top 50 percent * from tb_Student order by sage desc;
--16.查看性别
select distinct ssex from tb_Student;