《SQL_Server数据库基础知识笔记.docx》由会员分享,可在线阅读,更多相关《SQL_Server数据库基础知识笔记.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1、 新建数据库:create database db1新建表和字段:create table tb1 (No. int,name nvarchar(10),sex nchar(1),position nvarchar(10),salary int) -后面加(),(字段名 数据类型,)删除表:drop table db12、 常用SQL语句:增删改查select name 姓名,postion 职务 from tb1 - 选择两个字段内容-设置别名。字段后面加空格加别名,查询后的结果可以显示别名-添加记录:insert into 表名values(字段1,字段2),字符串用单引号引起来ins
2、ert into tb1 values (1,刘备,男,主公,500)insert into tb1 values (2,孔明,男,军师,400)insert into tb1 values (3,赵云,男,将军,300)insert into tb1 values (4,关羽,男,将军,300)insert into tb1 values (5,张飞,男,将军,250)-删除记录:删除名字叫张飞的记录delete from tb1 where name=张飞-指定字段添加记录insert into tb1(No.,name,position) values (3,赵云,将军)-条件查询:选择
3、指定字段,where后面写条件select No.,name,position,salary from tb1 where salary=300-delete只删除记录,字段、表都在,drop可以删除表和数据库等。3、 修改记录(更新记录):-更新工资低于301的提升2%update tb1 set salary=salary*1.02 where salary2004-1-1 -查询入职时间(date)大于2004-1-1的name和date。注意时间的格式!select name from figure where name like 李%-模糊查询:查询姓李的所有人物,%代表后面可以有n
4、个字符。select name from figure where name like _明%-查询第二个字是明的员工,_代表一个字符。select name,salary from figure where salary in(3500,3600,3700)-查询工资是3500,3600,3700的人员name和salaryselect name,salary from figure where name in(刘备,张辽,陆逊)-查询name是刘备,张辽,陆逊的name和salaryselect name,salary from figure where salary is null查询s
5、alary为null(salary没填)的name和salary。排序:默认是升序,desc降序。排序写在最后!select name,salary from figure order by salary desc-按salary降序排列。先写where最后排序。select sum(salary) 总工资,avg(salary) 平均工资 from figure -查询总salary和平均salary,设置别名。select name,coun_ID,salary from figure order by coun_ID,salary desc-显示姓名,国家编号,薪水,按照国家编号升序,薪
6、水降序排列。select name ,salary from figure where salary=(select MAX(salary) from figure)-查询薪水最高的name,salary。后面是显示最大工资。min(salary):求最小salary.select name,salary from figure where salary(select avg(salary) from figure)-显示薪水大于平均薪水的人员姓名和薪水select name,salary,(select AVG(salary) from figure) 平均工资 from figure wh
7、ere salary(select avg(salary) from figure) order by salary desc -显示薪水大于平均薪水的人员姓名、薪水、平均工资(设置别名),按工资降序排列。select count(*) from figure where salary=40000-显示工资大于等于40000的记录的条数。select coun_ID,avg(salary) 平均工资,sum(salary) 总工资 from figure group by coun_ID -group by后面的字段,在select里面应该有显示。-显示coun_ID,s平均工资,总工资,按国
8、家编号分类/组显示select coun_ID,avg(salary) 职位平均工资,min(salary) 职位最低工资,max(salary) 职位最高工资,position 职位名称 from figure group by position,coun_ID-显示,每个国家、每个职位的平均工资,最低工资,最高工资,职位。select avg(salary),coun_ID from figure group by coun_ID having avg(salary)35000-显示每个国家平均工资,再筛查出大于35000的国家(显示平均工资大于35000的国家)。having意思是分完组
9、后再筛查一下,可以含有函数。一般写在group by后面。7、多表查询:笛卡尔积现象的原因:主表和从表的主、外键没有对应上。select * from empire,figure where country_name=蜀汉 and empire.coun_ID=figure.coun_ID-显示所有蜀国的人物。select * from empire,figure where empire.coun_ID=figure.coun_ID-显示,把empire/figure两个表拼接起来。select name,country_name,figure.coun_ID from empire,fig
10、ure where figure.coun_ID=empire.coun_ID-显示所有人员的姓名以及国家名,国家ID。select figure.coun_ID,country_name,name,salary from figure,empire where figure.coun_ID=2 and figure.coun_ID=empire.coun_ID-显示国家ID为2的国家ID,国家名,姓名,薪水。注意figur.coun_ID单行子查询:返回结果为单行的子查询称为单行子查询。select name from figure where coun_ID=(select coun_ID
11、 from figure where name=姜维)-显示和姜维同国家的所有人物的姓名多行子查询:返回结果为多行的子查询称为多行子查询。多行子查询如果不能一次性写对,就分两行写,先写子查询,再写主查询。select name,salary,coun_ID,position from figure where position in(select distinct position from figure where coun_ID=2)-显示和国家2有相同职位的所有人物姓名,国家编号,工资。职位-意思就是,比如国家2有大将这个职位,就把所有大将的信息显示出来。-distinct:多个记录的只
12、显示一个。in:相当于=。select name,salary,figue.coun_ID,avgsalary from figure,(select avg(salary) avgsalary,coun_ID from figure group by coun_ID) tabavgsalary where (figure.salaryavgsalary) and (figure.coun_ID=tabavgsalary.coun_ID)-显示工资大于本国家平均工资的员工姓名,薪水,国家编号及平均工资。-注意:有几个别名,avgsalary是avg(salary)函数的别名,后面的where条
13、件-句要使用,但是不能包含函数,所以用该别名。还有一个别名是tabavgsalary-意思是查询出来的平均工资表的临时表名。分页查询:top 5:意思是前五个。select top 10 name,position,num from figure where num not in(select top 20 num from figure order by num) order by num-显示编号(num)为21到30的人物姓名,职位及编号信息。8、删除表中完全相同的记录。(有一个表tb1,里面有重复记录)select distinct * into temptable from tb1-
14、查询tb1中所有不重复的记录,写入到temptable里面delete from tb1-删除tb1中所有记录,但是字段是保留的。insert into tb1 select * from temptable-查询temptabale里面的所有记录,将其插入到tb1里面。drop table temptable-完全删除表temptable。左外连接和右外连接:LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。9、约束:保证数据满足应有的条件。约束分为五种:not null:非空。unique(唯一的):不可以重复,可以为null。primary key:不可以为n
15、ull,不可以重复。foreign key:外键,必须指向主键,没有主键的时候可以指向唯一值check:自定义的。create database studentcreate table stu_info (num int,name nvarchar(5),age int check(age15 and age15 and age25) default 18)-约束学生年龄为1525,不定义的情况下默认为18。10、数据库备份:分离附加,用于异地工作。备份还原:create database testdbbackup database testdb to disk=e:/testdb.bak-备份数据库文件testdb到e盘,文件名为testdb.bakrestore database from disk=e:/testdb.bak-还原数据库。