1、-使用sql语句来查询数据,这是最简单的查询select * from hero-查询工资低于的herosselect * from hero where salary 16000-把工资低于的heros的工资提高%(update)-语法:update 表名set 字段名= ?,字段名= ?where 条件update hero set salary = salary*1.1 where salary -请删除性别为女的herodelete from hero where gender = 女-表名规范-表名以字母和_开头-长度不能超过个字符-不要使用sql server关键字和保留字-只能使
2、用A-Z,a-b,-9,$,#,_等-支持的数据类型/*字符型char:定长,最大个字符(非unicode编码)char(10) 小韩:前个字符放小韩,后面添个空格补全varchar:变长,最大字符(非unicode编码)varchar(10) sql server分配个字符,这样可以节省空间如果一个字段的长度是确定的,则使用char,因为char的速度更快只有在不知道字段长度的情况下用varchar的ntext 变长unicode数据,最大长度为的次方-1(,)个字符text 变长非unicode数据,最大长度为的次方-1(,)个字符区别:text是字节格式存储英文的,也可以存放中文但有时候
3、会显示乱码ntext是多字节格式存储unicode的,也就是存储各种字母用的可以含中文:nchar和nvarcharnchar:定长,最大个字符(unicode编码)nchar(10) nvarchar:变长,最大字符(unicode编码)nvarchar(10) unicode 编码:用两个字节表示一个字符(可以是英文字母,也可以是汉字)-对汉字支持比较OK非unicode 编码:用一个字节表示一个字母,用两个字节表示一个汉字big5码:支持繁体iso-8859-1编码:支持欧文gb2312编码:国标码 针对中国汉字gbk编码:可以支持更多汉字/*数字型bit:范围到int:范围-2的次到+
4、2的次方-1bigint:范围-2的次方到+2的次方-1float:存放小数,不推荐使用numeric:小数(更加精确,好控制)强烈建议如果要去存放小数,最好使用numeric/*日期类型datetime(表示日期,可以精确到毫秒)timestamp(时间戳)一般情况下用datetime表示日期sql server为我们提供了一个专门的函数-getdate()/*图片image:保存图片,但是很少用,一般用路径保存图片,在软件公司往往使用图片服务器和图床技术视频binary:字段可以存放,但是我们往往将视频文件保存在文件服务器上,sql server中保留文件路劲,存取效率高sql serve
5、r 建议表的设计者,最好给表定义一个主键,用来标示唯一的一条记录。主键(primary key)不能重复出现而且必须给值,换句话说,主键不允许为空create database Hongloumenguse Hongloumenggocreate table clerk cleid int primary key,-主键必须给值 cleName nvarchar(50), age int insert into clerk values(1,贾宝玉,18)insert into clerk values(2,贾政insert into clerk values(5,贾母,70) insert
6、into clerk values(6,焦大,75)-插入部分字段,则需要在表名后,指定字段列表-insert into 表名(字段列表)values(值列表)insert into clerk(cleid,cleName)values(3,林黛玉-把贾政的age修改为update clerk set age = 38 where cleName = -把号人,名字改为薛蟠,age该为update clerk set cleName = 薛蟠,age = 40 where cleid = 2-主键能修改吗?2-4-可以修该,但修该后不能重复update clerk set cleid = 4
7、where cleName = -修该空值的数据-空值不能用=匹配,而要用is-把age为null的人的名字改为薛宝钗 where age is null-删除全部数据-语法:-delete from 表名;-删除指定数据-delete from 表名where 字段名= 值 and 字段名= -删除age=75的人,而且= 70 and age 3000-查找-1-1后入职的员工select empName from emp where hireDate 1982-1-1-显示工资在到的员工情况select * from emp where salary=2000 and salary 10
8、00 or job = )and empName like j%使用order by字句-order by默认是升序-按照工资从低到高循序显示员工信息select * from emp order by salaryselect * from emp order by salary asc-按照工资从高到低循序显示员工信息select * from emp order by salary desc-按照入职的先后顺序排列select * from emp order by hireDate asc-按照部门号升序而员工工资降序排序-order by 可以根据不同的字段排序select * fr
9、om emp order by depNo,salary desc使用列的别名排序-统计每个人的年薪,并按照从高到低的循序排列select empName,(salary+isnull(null,0)*13 from empselect empName,(salary+isnull(null,0)*13 年薪from emp order by 年薪表的复杂查询在实际应用中经常需要执行复杂的数据统计,经常需要显示多张表的数据-数据分组函数:max、min、avg、sum、count显示所有员工中最高工资和最高工资select min(salary)from emp-显示最低工资和员工的名字sel
10、ect empName,salary from emp where salary =(select min(salary)from emp)-显示所有员工的平均工资和总工资select avg(salary)平均工资,sum(salary)总工资from empselect empName,salary from emp where salary (select avg(salary)from emp)-并显示平均工资,以下这种方法效率不太高select empName,salary,(select avg(salary)from emp)from emp-计算总共有多少员工select co
11、unt(*) from emp-group by和having子句-group by用于对查询的结果分组统计-having子句用于限制分组显示结果显示每个部门的平均工资和最高工资select avg(salary)平均工资,depNo 部门编号,max(salary)最高工资from emp group by depNo-并显示部门名称(多表查询)-显示每个部门的每个职位的平均工资和最低工资select avg(salary)平均工资,min(salary)最低工资,depNo,job from emp group by depNo,job order by depNo-显示平均工资高于的部门
12、编号和它的平均工资-having往往和group by结合使用,可以对分组查询后的结果进行筛选select avg(salary),depNo from emp group by depNo having avg(salary) 2000-并按从低到高排序 order by avg(salary)asc对数据分组的总结1.分组函数只能出现在选择列表、having、order by子句中2.如果在select语句中同时包含group by,having,order by那么他们的顺序是group by,having,order by3.在选择列中,如果有列、表达式和分组函数,那么这些列和表达式必
13、须有一个出现在group by子句中,否则就会出错(作业一)学校环境如下:一个系有若干个专业,每个专业一年只招一个班,每个班有若干个学生。现在要求建立关于系、学生、班级的数据库,关系模式为班CLASS(班号claNo,专业名subject,系名depName,入学年份enrollDate,人数num)学生STUDENT(学号stuNo,姓名stuName,年龄age,班号claNo)系DEPARTMENT(系号depNo,系名depName)create database Schooluse Schoolcreate table DEPARTMENT depNo int primary key
14、, depName nvarchar(30) select * from DEPARTMENTcreate table CLASS claNo int primary key, subject nvarchar(30), enrolltime datetime, num int, depNo int foreign key references DEPARTMENT(depNo)select * from CLASScreate table STUDENT stuNo int primary key, stuName nvarchar(30), age int, claNo int forei
15、gn key references CLASS(claNo)select * from STUDENT(作业二)现在有一个商店的数据库,记录顾客及购物情况,请设计几张表,每张表的字段是什么多表查询:是指基于两个和俩个以上的表或是视图的查询,在实际应用中,查询单个表可能不能满足你的需求,(如显示sales部门位置和其员工的姓名),这种情况下需要使用到(dept表和emp表)显示员工姓名、员工工资及所在部门名称【笛卡尔集】select empName,depAddress from emp,dept where dept.depName = sales and emp.depNo = dept.depNo select empName,salary,depName from emp,dept where emp.depNo = dept.depNo-并且显示部门号-如果两张表都有相同名字的字段,则需要带表名(别名)select empName,salary,depName,e.depNo from emp e,dept d where e.depNo = d.depNo-显示部门号为的部门名、员工名和工资select depNa
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1