zoukankan      html  css  js  c++  java
  • 数据库笔记(1)

    sql server
    MSSQLServer
    microsoft sql server;
    Catalog分类(又叫数据库dataBase/表空间TableSpac),卜同磊的数据应该放到不同的数据库中。
    便于对哥各个Catatlog进行个性化管理
    避免命名冲突
    安全性更高
    Table表:数都放到书架上,碗都放到橱柜中,不同类型的资料放到不同的格子中,将这种区域叫做表。不同的表根据放的数据不同进行空间的优化,找起来也方便。
     
    列column 字段field
     
    主键就是数据行的唯一标示,不会重复的列才能当主键。一个表可以没有主键,但是
    2003年5月入职,是产品开发部的,姓名马小虎
    王二下,技术
     
    主键(PrimaryKey)
    工号 姓名 部门 入职时间
     001 凤姐 员工培训部 2010年7月5日
    002 瘦瘦 公关部 2010年8月2日
    003 憨憨 开发部 2009年3月5日
     
     
    主键就是数据行的唯一标识。不会重复的列才能当主键。一个表可以没有主键,但是会非常难处理,因此没有特殊理由表都是要设定主键
     
    主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有业务意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何业务意义的字段做主键。完全给程序看的,业务人员不会看的数据。因为很难保证业务主键不会重复,(身份证号重复不会变化,(账号升位),因此推荐用逻辑主键。
     
     
    表间关联、外键(ForeignKey)
    商品名 价格 生产厂家 厂家地址 厂家电话
    太太香瓜子 5.00 太太食品厂 恰恰
    大大开心果
    苦咖啡
    随便
    sql server的两种验证方式:用户名验证和Windows验证,开发时用Windows验证就行。
    开发人员关注点在开发上,而不是配置、备份等之上,那是DBA做的事情。
    创建数据库,创建表,设置主键
    常用字段类型:bit(可选值0、1)、datetime、int、varchar/nvarchar(可能含有中文用nvarchar)
    Nvarchar(50)/Nvarchar(MAX)
    varchar/nvarchar和char(n)的区别:char(n)不足长度n的部分用空格填充
     
    Var:variable,可变性。
     
    SQL语句是和DBMD交谈专用的语句,不同DBMS都认SQL语句。
    SQL语句中字符串用单引号。
    sql语句是大小写不敏感的,不敏感指的是sql关键字,字符串值还是大小写敏感的,
    创建表、删除表不仅可以手工完成,还可以执行sql语句完成,在自动化部署、数据导入中用的很多,create table_Person(ld int NOT NULL.Name nvarchar(50).Age int NULL)、Drop table T_Person1
    简单的Insert语句。INSERT INTO T_Person(ld.Name.Age)
    VALUES(1,'Jim',20) //字符串用单引号。
    SQL主要分DDL(数据定义语言)和DML(数据操作语言)两类。
    Creat Table 、Drop Table等属于DDL ,Select ,Insert等属于DML
     
    create table T_Person3(Id int NOT NULL,Name nvarchar(50),Age int NULL)
    drop table T_Person3
     
    insert into Person1(Number,Name,Age,NickName) values(3,'狗蛋儿',30,'aaa')
     
     
    主键选择
    sqlServer中两种常用的主键数据类型:int(或者bigint)+标识列(又称自动增长字段):uniqueidentifier(又称Guid/UUID)
    用标示符实现字段自增可以避免并发等问题,不要开发人员控制自增。用标示列的字段在Insert的时候不用指定主键的值。
     
     
    将字段的"是标示列"设置为"是",一个表只能有一个标识列。
     
    Guid算法是一种可以产生唯一标示的高效算法,它使用网卡MAC、地址、纳秒级时间、芯片ID码等算出来的,这样保证每次生成的GUID永远不会重复,无论是同一个计算机上还是不同的计算机。在公元3400年以前产生的GUID与任何其他产生过的GUID都不相同。sqlserver中生成guid的函数newid(),.Net中生成Guid的方法:Guid的优点:高效率、数据导入导出方便;缺点占用空间大、不易读。
    select newid()
    业界主流倾向于使用Guid.
    microsoft visual studio 2010中怎么产生guid
    Guid id=Guid.NewGuid();
    Console.WriteLine(id);
     
    insert
    1 abc 20
    2 tom 20
    3 jim 25
     
    Id int zhujian
    Name nvarchar(50) NUll
    Age int NULL
     
    insert into Person3 values ('lily',22)
    insert into Person3(Name,Age) values('lily',33)
    insert into Person4(Id,Name,Age) values(newid(),'tom',30)
     
     
    Insert语句可以省略表名后的列名,但不推荐
    如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。
    给可以给字段默认值,如果Guid类型主键的默认值设定为newid()就会自动生成。
    很少这么干
     
     
    主键
     
    9:16
     
    Insert语句可以省略表名后的列名,但是不推荐
     
    如果插入的行中有些字段的值不确定,那么
    insert的时候不指定那些列即可。
    给可以给字段默认值,如果Guid类型主键的默认值设定为newid()就会
     
    更新一个列:UPDATE T_Person Set Age=30
    更新多个列:UPDATE T_Person Set Age=30,Name='tom'
    更新一部分数据:UPDATE T_Person Set Age=30 where Name='tom',用where语句表示只更新Name是'tom'的行,注意
    sql中等于判断用单个=,而不是==.
    Where中还可以使用复杂的逻辑判断UPDATE T_Person Set Age=30 where Name='tom' or Age<25,or相当于C#中的||(或者)
    Where中可以使用的其他逻辑运算符:or,and,not,<,>,>=,<=,!=(或<>)等
     
    update person1 set Age=30;
    update person1 set Age=40,Name='tom';
    update person1 set Age=Age+1;
     
    update person1 set NickName=N'青年人'
    where Age>=23
     
    update person1 set NickName=N'二十二岁'
    where Age=22;
    //在sql语句中等于判断就是一个等号,不是两个等号。
     
    在sql中怎么加注释。
    update person1 set NickName='二十1岁'
    where Age<>22;
    update person1 set NickName='二十1岁'
    where Age=22 or Age=23;
     
    删除表中全部数据:DELETE FROM T_Person.
    Delete只是删除数据,表还在,和Drop Table不同。
    Delete也可以带where子句来删除一部分数据:DELETE FROM
    T_Person WHERE FAge>20;
     
    delete from person1 where Age>33;
     
     
    数据检索
    执行备注中的代码创建测试数据表。‘
    简单的数据检索:select * from T_Employee
    只检索需要的列:select FNumber from T_Employee/
    select FName,FAge from T_Employee
    列别名:select FNumber AS 编号,FName AS 姓名,FAge AS
    Age111 FROM T_Employee
    使用where检索符合条件的数据:select FName from T_Employee
    where FSalary<5000.故事:新员工的数据检索噩梦。
    还可以检索不与任何表关联的数据:select 1+1;
    select newid();select getdate();
     
     
     
    sql server登陆之前需要启动的所有服务个代表什么意思?
     
    怎么没有办法在表格中插入列项,我发现少了一列,想插入列项。
     
    iT002 Smith 28 3900
    iT002 27 2800
     
     
    SELECT * FROM T_Employee;
    SELECT FName from T_Employee
    where FSalary<5000
    select FName as 姓名,FAge as 年龄,Fsalary as 月薪 from T_Employee
    select NEWID();
    select 1+2;
    select getdate();
    select @@VERSION;
    select 1+2 as lie1,GETDATE() as riqi,NEWID() as bianhao;
    select FName as 姓名,FAge as 年龄,Fsalary+1000 as 月薪 from T_Employeeanhao;
    select FName as 姓名,FAge as 年龄,Fsalary as 月薪,GETDATE() as 当前日期 from T_Employee
     
    select COUNT(*) from T_Employee;
     
    select MAX(FSalary) from T_Employee;
    select MIN(FSalary) from T_Employee;
    select AVG(FSalary) from T_Employee;
    select SUM(FAge) from T_Employee;
     
  • 相关阅读:
    V-Ray Material Library材质名称翻译
    3dMax常用快捷键
    3dMax笔记(韵湖)
    background-size拉伸背景图片
    CSS实现子元素水平垂直居中的6种方式
    JS简易实现“最小栈”
    JS种Array原型方法reverse的模拟实现
    JS数组去重的3种方式
    encodeURIComponent和encodeURI有什么区别
    CSS中的度量单位(px/em/rem/vm/vh/...)
  • 原文地址:https://www.cnblogs.com/fanhongshuo/p/3812176.html
Copyright © 2011-2022 走看看