SQL SERVER(一)

一.设置登陆验证

  1.右键点击数据库->属性->安全性设置密码登陆

  2.数据库下找到安全性->登录名->sa,右键点击sa->属性(修改密码)->状态->启用

二.创建数据库

   名称一般定义为英文名词,首字母大写

   可视化操作:

            1.创建表,右键设置主键,下方点开标识规范双击设置自增

            2.字符串:char,nchar,varchar,nvarchar

                2.1  char(10):只能放五个中文,定长,如果只放一个字节,后面就是九个空格(一个中文占两个字节)

                2.2  nchar(10):放十个中文,定长

变长,如果只放一个字节,就只占一个字节

                2.4  nvarchar(10)放十个中文,变长

                       很长的文字:nvarchar(max)

                2.5  datetime----日期类型

                2.6  float---------小数类型

                2.7bit------------bool类型

                2.8int------------整型

            3.下方常规中可以选择默认值和绑定,来设置默认值。例如getdate()自动获取当前时间

            4.修改表时,不予保存

阻止保存要求重新创建表的更改的勾选

   sql语句:

            1.sql语句中字符串是单引号

            2.创建一个数据库,在数据库里面创建表,以及添加表里面的项

         

create database 数据库名
               go
               use Library(数据库名)
               go
               create table Users
               (
                 UID int primary key,     //列名 ,类型,主键非空
                 userName nvarchar(20) not null,
                 userPwd nvarchar(20) not null
                )

             3.select语句用法

                select * from  Products      --查询出Products表里面的所有信息

                select ProductID,ProductName

                         from Products          --查询出Products表里面所有的ProductID,ProductName

                select ProductID,ProductName

                         from Products where ProductID=1   --查询出Products表里面ProductID=1的所有ProductID和ProductName

                use pubs                         --先导入指定的数据库pubs,

                go

                select address from authors where au_id='172-32-1176'--查询出authors表里面,au_id为172-32-1176的address

                select productID,productName from products order by productID asc  --默认是asc(可以不写)从小到大排序,desc是从大到小

                select *from products where UnitPrice>20    --查询出products表里面UnitPrice>20的所有信息

                select* from Emloyees where LastName='King' and City='London'    --查询出emloyees表中lastname等于king和city等于london的所有信息

                use pubs

                go

                select*from Products where ProductID in(4,5,6)--查询出Products表中ProductID为4或5或6的所有信息

                select*from Products where UnitPrice<10 and UnitPrice<30(或 UnitPrice between 10 and 30)

                          order by UnitPrice--查询出Products表中UnitPrice<10并且UnitPrice<30的所有信息,并按照UnitPrice的大小由小到大排序

                select * from Employees

                          where FirstName like 'A%'     --查询出Employees中FirstName里面第一个字母是A的所有人信息

               select*from Employees where FirstName like '%A%'--查询出Employees中FirstName里面中间有A的所有人信息

               select*from Employees where FirstName like '%A   '--查询出Employees中FirstName里面最后一个字母是A的所有人信息

count(*) as 总数 from Employees--查询出Employees表中的所有记录数 ,as后表别称

                      min()最小值  max()   from最大值   avg()平均值   sum()总和

top 5*

select top 3 sname from student order by age desc--查询出年龄最大的三条数据的人名

               select * from Products where

                          Unitprice> (select avg(Unitprice) from Products)--查找出比平均值高的商品信息



select sp.sno,sp.sname,sp.age,sc.english,sc.math
         from(select sa.sno,sa.sname,pa.father,pa.mother 
                          from student sa inner join parent pa
                                  on sa.sno=pa.sno) sp inner join score sc on sp.sno=sc.sno



  

             4.连接

                      inner join on, left join on, right join on

                4.1 left join

                      select * from stu  left join sc on  stu.sno=sc.sno

                      结果说明: left join是以左边的表(stu)为基础的,left join是以左表为准

                                    即:左表(stu)的记录将会全部表示出来,而右表(sc)只会显示符合搜索条件的记录,sc表记录不足的地方均为NULL.

                4.2  right join

                       select * from stu  right join sc on  stu.sno=sc.sno

                       结果说明: right以右边的表(sc)为基础的,sc表不足的地方用NULL填充.

                4.3.inner join

                       select * from stu  inner join sc on  stu.sno=sc.sno

                       结果说明:inner join并不以谁为基础,它只显示符合条件的记录,即两表同时具有的记录