zoukankan      html  css  js  c++  java
  • SQL SERVER 基本操作语句


    Sql 是一种结构化的查询语言;
    Sql是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理‘关系型数据库’系统;
    Sql对大小写不敏感;
    Sql不是数据库,是行业标准,是结构化的查询语言



    Int
    Char(30)—字段中只能接受30个英文字母或15个中文
    Varchar(30)

    1)经常变化的字段用varchar;
    2)知道固定长度的用char;
    3)尽量用varchar;
    4)超过255字节的只能用varchar;

    数值:int类型(整数类型);
    所有字符串都要用单引号;


    Sql语句:
    1、 create database database_name; --创建数据库
    2、 use database_name; --引用数据库
    3、 create table table_name(列名1 数据类型,,
      列名2 数据类型,…..
      列名n 数据类型); --创建表
    4、 select * from 表名; --查看表内所有列的信息
      select 列名1,列名2 from 表名;
      select语句用于从表中选取数据。
    5、 约束:not null
      Unique 唯一约束 --没有冗余数据
      Primary key –必须包含唯一的值,主键列不能包含null值
    6、 drop table table_name; --删除表
    7、 insert into 表名 values(值1,值2…); --值与列必须要一一对应
      insert into 表名 (列1,列2…)values (值1,值2…);
    8、AS --为列名和表名别名
      Select 列名 as 新列名 from 表名;--列名别名
    9、 where --条件语句
      select 列名 from表名 where列 (运算符)=‘值’;
    10、单行注释 --
      多行注释 /*….*/
    11、修改数据结构
      1)alter table 表名 alter column 列名 数据类型; --修改数据结构(修改列的属性)
      例:alter table 表名 alter column country varchar(250);
      alter table 表名 alter column country varchar(250) null;
      2)alter table 表名 add constraint 约束名 unique(列的约束);
      Alter table 表名 drop constraint 约束名;
      3)alter table 表名 add column 列名 数据类型;
      4)alter table 表名 drop column 列名;
    12、数据的修改、更新
      Update 表名 set 列名=新值where 列名=某值;
    13、 1)between…and…
      Select 列名from表名 where 列名 between 值1 and 值2;
      Select 列名from表名 where 列名 between ‘字符串1’ and ‘字符串2’;
      2)Not between…and…
    14、 1)like --模糊查询
      仅和where搭配使用,通配符“%”仅和like连接使用
      Select 列名 from 表名 where 列名 like ‘n%’/ ’%n%’ / ’%n’
      2)Not like
    15、 and or
      1)and和or运算符用于基于一个以上条件对记录进行过滤;
      2)and 和or 可在where子语句中把两个或多个条件结合在一起;
      3)若两个条件都成立,则and运算符显示一条记录;
      4)如果两个条件只要有一个成立,则or运算符显示一条记录;
      5)and 和or在sql语句中的位置不分先后顺序,查询结果皆一致;
      6)执行规则:先计算and运算符在计算or运算符;
    16、in

      1)在一个集合里面,用()包含,查询的列放在括号里,用逗号隔开
      2)字符串类型加单引号;-- 允许在where子句中规定多个值
      3)不能跟匹配符连用;
      Select 列名 from表名where列名 in(值1,值2,….);
    17、distinct --只支持单列
      Select distinct(列名)from 表名;
    18、order by --排序 多个条件时,先满足第一列的条件
      1)用于根据指定的列对结果集进行排序
      2)默认升序对记录进行排序—asc
      3)降序—desc
      4)字母,数字都可以随意进行升降排序
      5)允许多个列的排序,但是排序优先级由左到右
    19、top --规定要返回的记录的数目
      1)top 6 –前6
      2)top 6 desc –倒数6位
      3)top 50 percent --前半部分
      4)top50 percent desc—后半部分
    20、delete --删除数据(删除表中的某行或所有行)
      --只能删除整行的数据,无法删除指定单元格数据。
      Delete from 表名 where 列名=值;
    21、identity --自增长
      例:id int identity
      Id int identity(1000,1)
    22、check约束
      --用于限制列中的值的范围
      Create table 表名 (姓名 VARCHAR (100) ,
      年龄 INT CHECK ( 年龄 >= 18 AND 年龄 <= 30 ), -- 这里不能用OR
      性别 CHAR(4) CHECK (性别 = '男' OR 性别 = '女') -- 这里不能用AND
      );
    23、default 约束 --用于向列中插入默认值
      如果不再为具有default约束的列额外进行值输入的话,则自动填入默认值;反之,则填入所输入的值;
      例:CREATE TABLE INSERT_DEFAULT_EXAM_DATE
      (
      Id INT PRIMARY KEY IDENTITY ,
      姓名 VARCHAR(100) NOT NULL ,
      考试时间 DATE DEFAULT '2018-05-20'
      );
    24、check和default约束的区别
      1)check约束强制只能对含此约束的列输入约束的值;
      2)default 约束比较自由,如果输入了值,则生效;如果(允许)不输入值,则使用设定的默认值并将其插入表中的列。
    25、null --必须使用is null和 is not null
      1)select * from 表名 where 列名 is null;(列名为空时,查看信息)
      2) select * from 表名 where 列名 is not null;(列名不为空时,查看信息)
    26、用于计算和计算的内建函数
      1)sum
      2)Avg --返回数值列的平均值/null值不包括在计算中
      Select avg(列名)from 表名;
      例:SELECT 姓名 FROM 软件测试考试分数表_重制版
      WHERE QTP得分 > (SELECT AVG(QTP得分) FROM 软件测试考试分数表_重制版);

    27、isnull --用于规定如何处理NULL值
      例:select 姓名,(测试理论得分+isnull(sql得分,0)+QTP得分+Selenium得分)as 各科考试总分 from 表名 where 列名=值;
    28、1)max()--返回一列中的最大值
      Select max(列名)from 表名;
      例:select max(QTP得分)as QTP最高得分 from 表 where 班级=‘一班’;
      2)Min()--返回一列中的最小值
      Select min(列名)from 表名;
      例:select name from 表 where SQL得分= (select min(SQL得分)from 表);
      3)Sum() --返回数值列的总数 只针对于数字类型进行求和
      Select sum(列名) from 表名;
      4)Avg()
      注:max和min也可用于文本列,以获得按字母顺序排列的最高或最低值。
    29、count --计数 返回匹配指定条件的行数
      1)Select count(*)from 表名;--返回表中的记录数
      例1:select count(*) from 表; --查询表中所有记录
      2)Select count(列名)from 表名; --返回指定列的值的数目
      例2:select count(name) as 一班的学生数from 表 where 班级=‘一班’;
      -- 对指定列进行计数
      3)select count (distinct 列名)from 表名; --返回指定列的不同值的数目
      例3: select count(distinct 班级)from 表;--显示不重复的记录
      唯一键—distinct
    30、len –长度 --返回文本字段中值的长度 length
      Select len(列名) from 表名;
      例1:select len(考点)as 考点的长度 from 表 where name =‘张三’;
    31、无关联性多表查询
      1)select * from (SELECT 姓名, QTP得分 FROM 软件测试考试分数表_重制版
      WHERE QTP得分 > (SELECT AVG(QTP得分) FROM 软件测试考试分数表_重制版)) AS 临时表1,
      (SELECT AVG(QTP得分) AS QTP考试平均分 FROM 软件测试考试分数表_重制版) AS 临时表2;
      2)SELECT 临时表1.姓名, 临时表1.QTP得分, 临时表2.QTP考试平均分 FROM
      (SELECT 姓名, QTP得分 FROM 软件测试考试分数表_重制版
      WHERE QTP得分 > (SELECT AVG(QTP得分) FROM 软件测试考试分数表_重制版)) AS 临时表1,
      (SELECT AVG(QTP得分) AS QTP考试平均分 FROM 软件测试考试分数表_重制版) AS 临时表2;
      例1:--查询学生姓名和qtp得分,并将qtp平均分显示出来
      Select * from (select name,QTP得分 from 表名 where QTP得分 >(select avg(QTP得分) as 平均分 from表)) as table1,(select avg(QTP得分)as 平均分 from表) as   table2;
    32、1)foreign Key (约束)references --可添加多个外键约束
      --一个表中的foreign key指向另一个表中的primary key。
      --外键只能连接你想连的那张表的主键(一般id为主键)
      例:CREATE TABLE 班级表
      (Class_Id INT PRIMARY KEY,
      班级 VARCHAR(10) NOT NULL
      );
      CREATE TABLE 学生表
      (Student_Id INT PRIMARY KEY,
      姓名 VARCHAR(10),
      Student_Class_Id INT FOREIGN KEY REFERENCES 班级表(Class_Id)
      );
      2)增加单个外键约束
      例1:alter table 学生表 add foreign key (student_class_id)references 班级表(class_id);
      3)增加多个约束
      例2:alter table 学生表 add constraint 约束名 foreign key(student-class_id) references 班级表(class_id);
      4)撤销约束
      例3:alter table 学生表 drop constraint 约束名;
      例4:select * from 班级表,学生表 where 班级表.class_id=学生表.student_class_id;
    33、group by
      --合计函数(例sum,max,min,len)常常需要添加group by语句
      1)单个列进行分组
      Select 列名,合计函数(列名)from 表名 where…group by 列名;
      例:select 商场专柜,sum(销售价格) as 情人节当天的香水总销售额
      From 表名 where 销售时间=‘2018-02-14’group by 商场专柜 order by 情人节当天的香水总销售额 desc;
      2)多个列进行分组
      例: select 销售时间,商场专柜,sum(销售价格)as 专柜当天的香水总销售额 from 表
      Group by 销售时间,商场专柜
      Order by 销售时间 desc,商场专柜 asc;

    34、1)group by ….having…
      例1:select 商场专柜,sum(销售价格) as 总销售额 from 表
      Group by 商场专柜 having sum(销售价格)>600 order by 总销售额 desc;
      例2:select 商场专柜,销售时间,sum(销售价格) as 销售总额 from 表
      Group by 商场专柜,销售时间 having sum(销售价格)>500 order by 销售总额 desc;
      2)where也可以在group by 中使用
      例1:Select 商场专柜,sum(销售价格) from 表 where 销售时间=‘ 2018-02-14’ group by 商场专柜 having 销售价格>500
      Order by sum(销售价格)desc;
      例2:select top 1 香水编号_外键,count(香水编号_外键)from 表 where 销售时间=‘2018-02-14’ group by香水编号_外键 order by count(香水编号_外键)desc;
      例3:select 商场专柜,销售时间,count(香水编号_外键) as 香水销量 where 销售时间 in(‘2018-02-14’,‘2018-03-14’) and len(香水编号_外键)<=4 from 表 Group by   销售时间 order by count(香水编号_外键) desc;
    35、连接
      1)内连接—(inner )join --通过主键和外键进行连接
      --表之间有匹配数据(主键和外键的匹配)就查询到,没有匹配数据就查询不到,找出两表中关联相等的行。
      select * from 表1 inner join 表2 on 表1.A=表2.A;
      例1:select 商场专柜,销售时间,所属品牌,香水名称,销售价格 from 香水信息表 inner join 商场专柜销售情况表 on 香水信息表.香水编号_外键=商场专柜销售情况表.香水  编  号_外键 order by 商场专柜 asc,销售时间 desc;
      2)左连接 --left join
      --从左表那里返回所有的行,即使在右表中没有匹配的行
      Select 列名 from 表1 left join 表2 on 表1.A =表2.A and 其他条件;
      例:select * from香水信息表 left join商场专柜销售情况表 on 香水信息表.香水编号_外键=商场专柜销售情况表.香水编号_外键 (显示香水信息表所有记录)
      3)右连接 --right join
      --右表返回所有行,即使在左表中没有匹配的行
      Select 列名 from表1 right join 表2 on 表1.A=表2.A.
      例:select * from香水信息表 right join商场专柜销售情况表 on 香水信息表.香水编号_外键=商场专柜销售情况表.香水编号_外键 (显示商场专柜销售情况表所有记录)

  • 相关阅读:
    机器学习笔记之K近邻算法
    [C++基础]在子类中向父类的构造函数传递参数的小例子,包括类中常量的初始化
    POJ2709 染料贪心
    POJ2337 欧拉路径字典序输出
    POJ2337 欧拉路径字典序输出
    POJ1042 贪心钓鱼
    POJ3228二分最大流
    POJ3228二分最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
    POJ3498最大流,枚举终点,企鹅,基础最大流
  • 原文地址:https://www.cnblogs.com/liucheng0827/p/9178771.html
Copyright © 2011-2022 走看看