S1_数据库

.创建登录名


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;//这样所有数据的nameage都改成张三丰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的那个学生数据

deletetruncat的区别

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 表名 ; 查询表中所有namesex

selsect top 5 from 表名; 查询前5

selsect top 20 percent 表名; 查询表的前20%

select *from 表名 order by 条件 desc/asc; 以条件倒序/升序

 

 

 

函数

selsect charindex('a','csab',1) ; 1开始找acsab的位置

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')1i

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]%'   09

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"]);

  写字段   写字段

 


只读不能改内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值