一.创建登录名
1.新建登录名
2.设置账号和密码
/*数据库
mdl数据库文件
ldf日志文件
* C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA
* varchar(50)数据库的字符串
*/
}
约束
len(phone)=(11) 限制电话须11位
eamil'%@%' 邮箱必须要@
sex=‘男’ or sex '女'
如果不允许更改内容点 工具--选项
char 和nchar:长度不够自动用空格补满
varchar nvarchar:长度不够不自动用空格补满
不加n一个中文代表两个长度 加了n不管是不是中文都代表一个长度
dbcc checki dent(test,reseed,0); 表名 归零
DML 增删改
DQL 查
增:
insert into student(name,sex,age) values ('','',); 在student 中的name,sex,age添加
/int 类型不加‘’
insert into 表名(name,age) values('张三',20);
插入多行:
1.insert into 表名(name,age) select name,age from 表名1;
2.插入多行数据时 同时建表(只能执行一次,要保证没有此表)
select name,age into 表名 from 表名1
3.insert into 表名(name,age) select '张三',20 union select '李四',19;
union的作用:能把后面查询的内容添加到查询结果后面去
插入默认值:1.设计表的时候 设置某个字段的默认值
2.insert into person(name,age,sex) values('张三',20,default);
用sql语句添加20个不同的学生
update test set age= 20 where age>=50; 把test年龄>=50 改成20
改:
update 表名 set name='张三丰',age=100;//这样所有数据的name和age都改成张三丰100岁了
update 表名 set name='张三丰',age=100 where name='张三';
删:
delete from test; 删除test数据 标识数字不变
truncate table test; 删除test 数据 标识归零
delete from 表名;// 这样这个表的所有数据都被删除了
delete from 表名 where id=20;//加入条件 只删除id=20的那个学生数据
delete和truncat的区别:
delete from 表名;删除数据,标识数字不变
truncate table 表名;删除数据,标识数字归零
通常不会直接删除一个表的数据
注:有外键关系的时候!student 的 gradeId 等于 grade 的 id
查:
select name,age into test from student;在stude中查name age
union在同一个中插入
增加别名用as
select * from 表名 where 条件; 查询满足条件的
select name,sex from 表名 ; 查询表中所有name和sex
selsect top 5 from 表名; 查询前5条
selsect top 20 percent 表名; 查询表的前20%
select *from 表名 order by 条件 desc/asc; 以条件倒序/升序
函数:
selsect charindex('a','csab',1) ; 从1开始找a在csab的位置
select len(name) as姓名长度 where id=1; 查条件长度
select lower ('abB');变小写//upper 是变大写
select trim(' aB c');去右边的空格
select lrim(' aB c');去左边的空格
select right('abcd',3) 从右边往左边取但是从左边打印 'bcd' //left 相反
select substring('呵呵哈哈',2,2);从2开始向后取
select replace(aa1bb1s,'1','i')把1换i
select stuff('abbc',2,2,'哈哈')从2开始换成哈哈
select getdate(); 得到系统日期
select dateadd(mm,2,getdate());在系统日期加两个月 //dd加几天 yy 加几年
select DATEDIFF(mm,'2001-01-01','2000-01-04')后面减前面 得到日期差
select datename(dw,getdate());当前星期几
select datepart(dw,getdate());外国星期几
select rand(); 0.1-0.9
select abs 绝对值
select floor(3.14);变3
power(5,2) 25 5的二次方
select convert(int,'123')+1; 变124 select convert(nvchar(5),123); 123变’123‘
模糊查询:
select name from 表名 where studentName like '%张%' 查包含张的所有
select name from 表名 where studentName like '张_' 查所有姓张两个字
select name from 表名 where studentName like '张%' 查所有姓张
select name from 表名 where studentName like '^张%' 查非张的
select num from 表名 where studentName like '[0-9]%' 查0到9
select * from 表名 where num between 条件1 and 条件2 条件1到 条件2 之间
select * from Student where Address like '%四川%'and(BormDate between'2000-01-01'and '2000-01-31')
需求:查询在1990年到2000年之间出生的学生
select * from student where birthday between '1990-01-01' and '2000-01-01'
select name from 表名 where studentName is null 查为空的
union 把结果拼在一起
select * from 表名 where num =‘001’ union
select * from 表名 where num =‘005’ union
select * from 表名 where num =‘007’ union
需求:查询学号是001 005 010 015 的4位学生
select * from student where studentNo in ('001','005','010','015')
select * from 表名 where num =‘00’ union in '001,005,007'; in 在什么范围类 可以多个可以单个
select MAX(age )from student 查最大的
select SUM (分数) from 表名 查总分
GVG()
MIN()
COUNT(*) 查数量
分组:
group by group by后面不能加where只能加having
having不能单独存在
直接查两个表会出现笛卡儿积(重复现象)必须将两边关系写出!
并且差数据要 表名.查的 可以取别名 on后面写关系
select s.name,g.id from student s ,grade g where g.id=s,grade id;
select s.name,g.id from student s join grade g on g.id=s,id;
(inner) join on 内连接 以最少的一边为准
left join on 左外连接 以左边为准,右边为空也可以显示左边
right join on 右外连接 以右边为准,左边为空也可以显示右边
ado.net
CRUD
增删改查
四大核心对象
Connection 连接数据库
Command 对数据库执行命令
DateAdapter 和数据库进行联系
DateReader 独立保存数据
c# 的操作方法
using System.Data.SqlClient; 进行导包
1.准备连接字符串(连接那个ip的数据库,操作那个数据库,登录名,密码)
localhost 或者 127.0.01 可以得到本机的ip
点视图--服务器资源管理器
随机:
select * from Student order by floor(RAND ()*21)+30;
select * from Student order by NEWID();
准备连接字符串(连接那个ip的数据库,操作那个数据库,登录名,密码)
String conStr = "Data source=localhost;initial catalog=myschool;user id=root;pwd=root";
//本机ip 数据库名 用户名 密码
//localhost 或者 127.0.01
创建连接对象
SqlConnection con =new SqlConnection (conStr);
打开这个连接
con.Open ();·
准备sql语句
String sql = "insert into grade() values()";
创建执行sql的对象
SqlCommand com = new SqlCommand (sql ,con );
执行sql语句
int x = com.ExecuteNonQuery();
Console.WriteLine(x);
关闭连接
con .Close();
处理运行报错
try
{
//可能错误的
}
catch (Exception)
{
//抓入错的
throw;
}
finally{
//报错或不报错都要执行
}
r.Read() 读取
上面的步骤都一样,下面 用的方法是 ExecuteReader();
SqlDataReader r = com.ExecuteReader();
得到结果了 并且保存到r对象中 我们用循环 读取出数据就行了
while (r.Read()) {
Console.WriteLine("id:{0}\t班级名:{1}",r["id"],r["name"]);
写字段 写字段
只读不能改内容