2015-10-19 sql1
SQL SERVER(一)
一.设置登陆验证
1.右键点击数据库->属性->安全性设置密码登陆
2.数据库下找到安全性->登录名->sa,右键点击sa->属性(修改密码)->状态->启用
二.创建数据库
名称一般定义为英文名词,首字母大写
可视化操作:
1.创建表,右键设置主键,下方点开标识规范双击设置自增
2.字符串:char,nchar,varchar,nvarchar
2.1 char(10):只能放五个中文,定长,如果只放一个字节,后面就是九个空格(一个中文占两个字节)
2.2 nchar(10):放十个中文,定长
2.3 varchar(10)放五个中文,变长,如果只放一个字节,就只占一个字节
2.4 nvarchar(10)放十个中文,变长
很长的文字:nvarchar(max)
2.5 datetime----日期类型
2.6 float---------小数类型
2.7bit------------bool类型
2.8int------------整型
3.下方常规中可以选择默认值和绑定,来设置默认值。例如getdate()自动获取当前时间
4.修改表时,不予保存
方法:工具->选项->designets中的表设计器和数据库设计器->取消阻止保存要求重新创建表的更改的勾选
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的所有人信息
select count(*) as 总数 from Employees--查询出Employees表中的所有记录数 ,as后表别称
min()最小值 max() from最大值 avg()平均值 sum()总和
select top 5* from Products--查询出前五条的记录信息
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并不以谁为基础,它只显示符合条件的记录,即两表同时具有的记录