精华内容
下载资源
问答
  • oracle使用sql语句增加修改删除字段示例
  • sql update 语句_SQL Update语句概述

    千次阅读 2020-07-25 13:26:59
    sql语句update In this article, we’ll walk-through the SQL update statementto modify one or more existing rows in the table. 在本文中,我们将逐步介绍SQL更新语句,以修改表中的一个或多个现有行。 ...

    sql update 语句

    In this article, we’ll walk-through the SQL update statement to modify one or more existing rows in the table. 

    在本文中,我们将逐步介绍SQL更新语句,以修改表中的一个或多个现有行。

    In order to modify data in a table, we’ll use an Update statement, a DML (data manipulation language) statement. A SQL update statement comes with a SET clause where we define the column-and-value as a pair of items. In addition, you can enforce the conditional clause. In order to limit the number of rows, we’ll need to set up a where clause. The condition is defined in the where clause that identifies what rows to modify in the table.

    为了修改表中的数据,我们将使用Update语句,DML(数据操作语言)语句。 SQL Update语句带有SET子句,其中我们将列和值定义为一对项目。 另外,您可以强制执行条件子句。 为了限制行数,我们需要设置一个where子句。 该条件在where子句中定义,该子句标识表中要修改的行。

    After reading this article, you’ll understand the following topics covering how to use a simple SQL update statement

    阅读本文之后,您将了解以下主题,涉及如何使用简单SQL更新语句

    1. on multiple columns

      在多列上
    2. with computed value

      具有计算值
    3. with the compound operator

      与复合运算符
    4. with the defaults

      使用默认值
    5. with SQL joins

      与SQL联接
    6. with the Where clause

      带有Where子句
    7. on a remote table

      在远程表上
    8. with use Top(n) clause

      使用use Top(n)子句
    9. with CTE (Common-Table-Expression) statements

      与CTE(Common-Table-Expression)语句

    运行一个简单SQL更新语句 (Running a simple SQL update statement)

    For this example, we’ll work with Person.Person , so, let’s take a look at the data first. In this case, let’s say, hypothetically, we wanted to change the data of the ModifiedDate column for all rows of the table with the current datetimestamp value.

    对于此示例,我们将使用Person.Person ,因此,让我们首先看一下数据。 假设,在这种情况下,我们想更改具有当前datetimestamp值的表的所有行的ModifiedDate列的数据。

    Let us use the keyword UPDATE, and then the name of the table Person.Person, then use the keyword SET, and after that list the column name ModifiedDate and then the value, in this case, it’s current date timestamp.

    让我们使用关键字UPDATE,然后使用表Person.Person的名称,然后使用关键字SET,然后在此之后列出列名称ModifiedDate ,然后是值(在这种情况下为当前日期时间戳)。

    USE AdventureWorks2014;  
    GO  
    UPDATE Person.Person  
    SET ModifiedDate = GETDATE();
    

    对多列使用更新SQL语句 (Using an update SQL statement with Multiple columns)

    Here, we’ve to come up with a pair of items, one being the column name, and one being the value, separated by an equal sign. The following example updates the columns Bonus with the value 8000, CommissionPct with the value .30, and SalesQuota by NULL for all rows in the Sales.SalesPerson table.

    在这里,我们要提出一对项目,一个是列名,另一个是值,以等号分隔。 下面的示例对Sales.SalesPerson表中的所有行将Bonus列的值更新为8000,将CommissionPct列的值更新为.30,将SalesQuota列更新为NULL。

    USE AdventureWorks2014;  
    GO  
    UPDATE Sales.SalesPerson
      SET 
          Bonus = 8000, 
          CommissionPct = .10, 
          SalesQuota = NULL
    

    In this example, the above SQL update statement can be re-written using FROM clause and table alias.

    在此示例中,可以使用FROM子句和表别名来重写上述SQL更新语句。

    The following example updates rows in the table Sales.SalesPerson. The table alias is created and assigned to “S” in the FROM clause. The alias is also specified as the target object in the UPDATE clause.

    以下示例更新表Sales.SalesPerson中的行。 表别名已创建,并在FROM子句中分配给“ S”。 别名也被指定为UPDATE子句中的目标对象。

    USE AdventureWorks2014;  
    GO  
    UPDATE S
      SET 
          Bonus = 8000, 
          CommissionPct = .30, 
          SalesQuota = NULL
    FROM Sales.SalesPerson S;
    
    • Note: Executing a SQL Update statement without the where cases would actually update every record in the table.注意:执行不带where情况SQL Update语句实际上会更新表中的每个记录。

    使用带有Where子句的更新SQL语句 (Using an update SQL statement with a Where clause)

    In the following example, we only want to update one row of the Sales.SalesPerson table. In order to do that, we’ll need to use the WHERE clause. The where clause works exactly the same as they did with the SELECT statements. So, let’s add the keyword WHERE, and set a filter that specifies which record to modify. In this case, its BusinessEntityID is equal to 280. Now, we have an update SQL statement with SET, FROM and Where clause keywords.

    在下面的示例中,我们只想更新Sales.SalesPerson表的一行。 为此,我们需要使用WHERE子句。 where子句的工作原理与使用SELECT语句的工作原理完全相同。 因此,让我们添加关键字WHERE,并设置一个过滤器,该过滤器指定要修改的记录。 在这种情况下,其BusinessEntityID等于280。现在,我们有了带有SET,FROM和Where子句关键字的更新SQL语句。

    SELECT *
    FROM Sales.SalesPerson S
    WHERE BusinessEntityID = 280;
     
    USE AdventureWorks2014;  
    GO  
    UPDATE S
      SET 
          Bonus = 8000, 
          CommissionPct = .30, 
          SalesQuota = NULL
    FROM Sales.SalesPerson S
    WHERE BusinessEntityID = 280;
    

    And now, we see that the columns Bonus, ComissionPct, and SalesQuota have been changed with new values.

    现在,我们看到Bonus,ComissionPct和SalesQuota列已更改为新值。

    SELECT *
    FROM Sales.SalesPerson S
    WHERE BusinessEntityID = 280;
    

    SQL Update statement

    将SQL Update语句与顶层子句一起使用 (Using an SQL Update statement with a Top Clause)

    In the following examples, we can see that the use the TOP clause to limit the number of rows that are modified in the SQL UPDATE statement.

    在以下示例中,我们可以看到使用TOP子句来限制在SQL UPDATE语句中修改的行数。

    The following example updates the multiple columns of the matching rows in the Sales.SalesPerson table

    下面的示例更新Sales.SalesPerson表中匹配行的多个列

    USE AdventureWorks2014;  
    GO  
    UPDATE TOP (5) S
      SET 
          Bonus = 90000, 
          CommissionPct = .06, 
          SalesQuota = NULL
    FROM Sales.SalesPerson S
    

    We can see that the SQL update ran over a random selection of rows.

    我们可以看到SQL更新遍历了随机选择的行。

     
    SELECT *
    FROM Sales.SalesPerson S where  CommissionPct = .06
    

    SQL Update Statement

    • Note:
      • When the TOP clause is used with any DML operation, the SQL update operation is performed on a random selection of ‘n’ number of rows
      • You can also use the SET ROWCOUNT option, if you want to update the first set of rows without enforcing random selection using TOP keyword
    • 注意:
      • 当TOP子句与任何DML操作一起使用时,SQL更新操作将对'n'行数的随机选择执行
      • 如果要更新第一组行而不使用TOP关键字强制执行随机选择,也可以使用SET ROWCOUNT选项。

    使用CTE将更新SQL语句与最高条款一起使用 (Using an update SQL statement with a Top Clause using a CTE)

    As we all know that the SQL UPDATE statement with a TOP clause doesn’t support an ORDER BY clause but it is possible to get the sorted order of the columns using a CTE (Common Table Expression).

    众所周知,带有TOP子句SQL UPDATE语句不支持ORDER BY子句,但是可以使用CTE (公用表表达式)获取列的排序顺序。

    Let us run the same SQL update statement using a CTE

    让我们使用CTE运行相同SQL更新语句

     
    WITH CTE
         AS (SELECT TOP 5 *
             FROM Sales.SalesPerson
             ORDER BY BusinessEntityID)
         UPDATE CTE
           SET 
               Bonus = 190000, 
               CommissionPct = .07, 
               SalesQuota = NULL;
    

    The output signifies the update ran over a order collection of BusinessEntityID.

    输出表示更新已遍历BusinessEntityID的订单集合。

    SELECT *
    FROM Sales.SalesPerson where  CommissionPct = .07
    

    SQL Update Statement

    将SQL Update语句与计算值一起使用 (Using an SQL Update statement with Computed values)

    The following example uses computed value in SQL Update statement. The example increases the value of the Bonus column by 100 and ComissionPct column by 0.005 values for all rows of the BusinessEntityID equal to 288.

    下面的示例在SQL Update语句中使用计算值。 对于所有等于288的BusinessEntityID,该示例将Bonus列的值增加100,并将ComissionPct列的值增加0.005。

    USE AdventureWorks2014;  
    GO  
    UPDATE Sales.SalesPerson
      SET 
          Bonus = Bonus+100, 
          CommissionPct = CommissionPct+0.005 
    WHERE BusinessEntityID = 288;
    

    将SQL Update语句与Compound运算符一起使用 (Using an SQL Update statement with Compound operators)

    The following example uses the compound operator ‘+=’ and ‘*=’ to add 100 to the Bonus column and multiply 0.002 to CommissionPct column

    下面的示例使用复合运算符'+ ='和'* ='将100加到Bonus列中,并将0.002乘以CommissionPct列

    USE AdventureWorks2014;  
    GO  
    SELECT * FROM Sales.SalesPerson WHERE BusinessEntityID = 289;
    GO
    UPDATE Sales.SalesPerson
      SET 
          Bonus += 100, 
          CommissionPct *= 0.005 
    WHERE BusinessEntityID = 289;
    GO
    SELECT * FROM Sales.SalesPerson WHERE BusinessEntityID = 289;
    

    /wp-content/uploads/2018/10/word-image-13.png

    使用带有默认值SQL Update语句 (Using an SQL Update statement with a default values)

    The following example sets the Primary column to its default value ((0)) for all rows that have a value equal to 1

    下面的示例将值等于1的所有行的Primary列设置为其默认值((0))

    USE AdventureWorks2014;  
    GO  
    UPDATE Production.ProductProductPhoto  
    SET [Primary] = DEFAULT  
    WHERE [Primary]=1
    
    • Note: You can find the default definition of the column using the following T-SQL.注意:您可以使用以下T-SQL查找列的默认定义。
    SELECT name,object_name(object_id),object_definition(default_object_id) Default_Definition
    FROM   sys.columns
    WHERE  name      ='Primary'
    AND    object_id = object_id('Production.ProductProductPhoto')
    

    /wp-content/uploads/2018/10/word-image-14.png

    将SQL Update语句与SQL连接一起使用 (Using an SQL Update statement with a SQL Joins)

    This example modifies the Rate column of the entire rows employee where they belong to the ‘Research and Development’ group.

    本示例修改了属于“研究与开发”组的整个行员工的“费率”列。

    UPDATE EPH
      SET 
          EPH.Rate*=2
    FROM HumanResources.EmployeePayHistory EPH
         INNER JOIN HumanResources.Employee EMP ON EMP.BusinessEntityID = EPH.BusinessEntityID
         INNER JOIN HumanResources.EmployeeDepartmentHistory H ON EMP.BusinessEntityID = H.BusinessEntityID
         INNER JOIN HumanResources.Department Dept ON H.DepartmentID = Dept.DepartmentID
    WHERE Dept.GroupName = 'Research and Development';
    
    • Note: If you’re writing an UPDATE statement and you want to know how many rows might affect, You just need to place SELECT  * FROM, keeping the same WHERE clause, and this will figure out how many rows that going to actually change.注意:如果您正在编写UPDATE语句,并且想知道可能影响多少行,则只需放置SELECT * FROM,并保持相同的WHERE子句,这将找出实际更改的行数。
    SELECT EMP.JobTitle, 
           EPH.Rate * 2
    FROM HumanResources.EmployeePayHistory EPH
         INNER JOIN HumanResources.Employee EMP ON EMP.BusinessEntityID = EPH.BusinessEntityID
         INNER JOIN HumanResources.EmployeeDepartmentHistory H ON EMP.BusinessEntityID = H.BusinessEntityID
         INNER JOIN HumanResources.Department Dept ON H.DepartmentID = Dept.DepartmentID
    WHERE Dept.GroupName = 'Research and Development';
    

    /wp-content/uploads/2018/10/word-image-15.png

    使用链接服务器和OPENQUERY的远程表 (Remote tables using a linked server and OPENQUERY)

    The following example uses the linked server to update a data on a remote server.

    以下示例使用链接的服务器更新远程服务器上的数据。

    UPDATE HQDBT01.AdventureWorks2014.HumanResources.Department  
    SET GroupName = N'CIS Relations'  
    WHERE DepartmentID = 4;
     
     
    SELECT GroupName FROM HQDBT01.AdventureWorks2014.HumanResources.Department WHERE DepartmentID = 4
    

    /wp-content/uploads/2018/10/word-image-16.png

    In the following example, rows on the remote table is updated using the OPENQUERY rowset function

    在以下示例中,使用OPENQUERY行集功能更新远程表上的行

    UPDATE OPENQUERY(HQDBT01, 'SELECT GroupName FROM AdventureWorks2014.HumanResources.Department WHERE DepartmentID = 4')
      SET 
          GroupName = 'Sales and Marketing';
    

    摘要 (Summary)

    Thus far, we’ve discussed some of simple methods of updating rows using a SQL Update statement in SQL Server and various permutations using conditions, clauses and in other contexts. I hope you enjoyed reading this article and for any questions, please feel to comment below…

    到目前为止,我们已经讨论了在SQL Server中使用SQL Update语句更新行的一些简单方法,以及在使用条件,子句和其他上下文的情况下进行的各种排列。 希望您喜欢阅读本文,如有任何疑问,请在下面发表评论……

    翻译自: https://www.sqlshack.com/overview-of-the-sql-update-statement/

    sql update 语句

    展开全文
  • mysql sql常用语句大全

    万次阅读 多人点赞 2019-02-20 04:18:23
    增加数据(insert)3种方式 1.1 insert into 表名 values(值1,值2,...)(很少用) 1.2 insert into 表名(字段1,字段2...) values(值1,值2,....);(较常用) 1.3 insert into 表名(字段1,字段2...) values(值1,值2...

    一 、常用操作数据库的命令

    1.show databases; 查看所有的数据库
    2.create database test; 创建一个叫test的数据库
    3.drop database test;删除一个叫test的数据库
    4.use test;选中库 ,在建表之前必须要选择数据库
    5.show tables; 在选中的数据库之中查看所有的表
    6.create table 表名 (字段1 类型, 字段2 类型);
    7.desc 表名;查看所在的表的字段
    8.drop table 表名; 删除表
    9.show create database 库名;查看创建库的详细信息
    10.show create table 表名; 查看创建表的详细信息
    

    二、修改表的命令

    1.修改字段类型 alter table 表名 modify 字段 字段类型;
    2.添加新的字段 alter table 表名 add 字段 字段类型
    3.添加字段并指定位置  alter table 表名 add 字段 字段类型   after 字段;
    4.删除表字段  alter table 表名 drop 字段名;
    5.修改指定的字段  alter table 表名 change 原字段名字  新的字段名字 字段类型

    三、对数据的操作

    1.增加数据(insert)3种方式
        1.1 insert into 表名 values(值1,值2,...)(很少用)
        1.2 insert into 表名(字段1,字段2...) values(值1,值2,....);(较常用)
        1.3 insert into 表名(字段1,字段2...) values(值1,值2,....),(值1,值2,....),(值1,值2,....);
    2.删除数据(delete) delete from 表名 where 条件 注意:where 条件必须加,否则数据会被全部删除
    3.更新数据(update)  update 表名 set字段1 = 值1, 字段2 = 值2 where 条件
    4.查询数据(select)
        4.1 查询表中的所有数据   select * from 表名
        4.2 指定数据查询    select 字段 from 表名 
        根据条件查询出来的数据  select 字段 from 表名 where 条件 (最常用的)
        where 条件后面跟的条件
         关系:>,<,>=,<=,!=  
         逻辑:or, and 
         区间:id between 4 and 6 ;闭区间,包含边界
    5.排序
    select 字段 from 表 order by 字段  排序关键词(desc | asc)
    排序关键词 desc 降序 asc 升序(默认)
        5.1 通过字段来排序
        例如 :select * from star order by money desc, age asc;   
        5.2 多字段排序
        select 字段 from 表 order by 字段1  desc |asc,...字段n desc| asc;
    6.常用的统计函数 sum,avg,count,max,min
        只分组:select * from 表 group by 字段
        例子: select count(sex) as re,sex from star group by sex having re > 3;
        分组统计: select count(sex) from star group by sex;
    7.分组 select * from 表名  limit 偏移量,数量
        说明:
            8.1.不写偏移量的话就是默认的为0
            8.2.实现分页的时候必须写偏移量
            偏移量怎么计算?:
            limit (n-1)*数量 ,数量 

    四、多表联合查询

    1.内连接
    隐式内连接 select username,name from user,goods where user,gid=gods,gid;
    显示内连接
    select username,from user inner join goods on user.gid=goods.gid;
    select * from user left join goods on user.gid=goods.gid;
    2.外链接
    左连接 包含所有的左边表中的记录以及右边表中没有和他匹配的记录
    右连接 
    select * from user where gid in(select gid from goods);
    select * from user right jOin goods on user.gid=goods.gid;
    子嵌套查询
    数据联合查询
    select * from user left join goods on user.gid=goods.gid union select * from user right join goods on user.gid=goods.gid;
    两个表同时更新
    update user u, goods g set u.gid=12,g.price=1 where u.id=2 and u.gid=g.gid;

    五、DCL 数据控制语言

    1.创建用户:create user'xiaoming'@'localhost' identified by '666666';
    2.授权用户:grant all on test.*to'xiaoming'@'localhost';
    3.刷新权限:flush privileges;
    4.取消授权:revoke all on test.* from 'xiaoming'@'localhost';
    5.删除用户: drop user'xiaoming'@'localhost';

    六、DTL 数据事务语言

    开启事务:set autocommit=0;
    操作回滚:rollback;
    提交事务:commit;

    展开全文
  • SQL CRUD语句

    千次阅读 2018-10-27 17:41:09
    SQL CRUD语句 下文以MySQL为例进行说明。 CRUD即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。 准备 首先准备在MySQL数据库中创建两张表:学生表(student)、班级表(class),...

    SQL CRUD语句

    下文以MySQL为例进行说明。
    CRUD即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。

    准备

    首先准备在MySQL数据库中创建两张表:学生表(student)、班级表(class),建表语句如下:

    create table class(
    id varchar(32) not null,
    name varchar(45) not null comment '班级名称',
     PRIMARY KEY (id)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    CREATE TABLE student (
      id varchar(32) NOT NULL,
      name varchar(45) NOT NULL comment '学生姓名',
      num int NOT NULL comment '学生学号',
    	class_id varchar(32) not null comment '班级id',
      PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    

    像表中插入一些测试数据,插入四个班级,往每个班级分别插入五名学生:

    INSERT INTO class VALUES ('1','1班'),('2','2班'),('3','3班'),('4','4班');
    
    INSERT INTO student VALUE
    (replace(UUID(),'-',''),'学生1',2013001,'1')
    ,(replace(UUID(),'-',''),'学生2',2013002,'1')
    ,(replace(UUID(),'-',''),'学生3',2013003,'1')
    ,(replace(UUID(),'-',''),'学生4',2013004,'1')
    ,(replace(UUID(),'-',''),'学生5',2013005,'1')
    ,(replace(UUID(),'-',''),'学生6',2013006,'2')
    ,(replace(UUID(),'-',''),'学生7',2013007,'2')
    ,(replace(UUID(),'-',''),'学生8',2013008,'2')
    ,(replace(UUID(),'-',''),'学生9',2013009,'2')
    ,(replace(UUID(),'-',''),'学生10',2013010,'2')
    ,(replace(UUID(),'-',''),'学生11',2013011,'3')
    ,(replace(UUID(),'-',''),'学生12',2013012,'3')
    ,(replace(UUID(),'-',''),'学生13',2013013,'3')
    ,(replace(UUID(),'-',''),'学生14',2013014,'3')
    ,(replace(UUID(),'-',''),'学生15',2013015,'3')
    ,(replace(UUID(),'-',''),'学生16',2013016,'4')
    ,(replace(UUID(),'-',''),'学生17',2013017,'4')
    ,(replace(UUID(),'-',''),'学生18',2013018,'4')
    ,(replace(UUID(),'-',''),'学生19',2013019,'4')
    ,(replace(UUID(),'-',''),'学生20',2013020,'4')
    

    其中:

    UUID()为MySQL中的函数,作用为生成一个随机字符串

    replace为MySQL中的函数,作用为替换字符串中的’-'字符

    别名

    在使用SQL的过程中,我们可以为列名称和表名称指定别名(Alias)。

    别名在执行CRUD操作时有着很大的作用。

    指定别名的语法为在原名称后添加 AS XXX(别名),其中AS可以省略。

    对于上面的两张表,我们可以为class、student分别指定别名cla,stu。

    SELECT cla.id,lca.name FROM class as cla
    SELECT stu.id,stu,name,stu.num,stu.class_id FROM student stu 
    

    增加(Create)

    增加数据只用INSERT INTO语句:

    INSERT INTO TABLE VALUE (value1,value2)
    

    上面的语句是默认给表的所有字段插入值,VALUE后面的值的顺序与表字段顺序一直,其个数也必须与表字段个数一直。

    当然,我们也可指定要插入数据的列:

    INSERT INTO TABLE (column1,column2) VALUE (value1,value2)
    

    如果要一次插入多条数据(批量插入),可以在VALUE后添加多个代码块:

    INSERT INTO TABLE VALUE (value1,value2),(value1,value2)
    

    在执行批量插入时,应注意SQL的长度限制,批量插入的脚本不能超过数据库设置的SQL最大长度。

    在执行插入语句时还可以增加子查询语句,但语法要求是,子查询返回的字段要与INSERT的插入字段一致

    INSERT INTO table SELECT * FROM table1;
    INSERT INTO table1 (column1,column2) SELECT column1,column2 FROM table2
    

    查询(Retrieve)

    查询语句使用SELECT命令即可:

    SELECT column1,column2 FROM table
    

    查询所有字段可使用*,不过一般不推荐这样操作

    SELECT * from table
    

    子查询:

    SQL子查询也叫嵌套SELECT语句,一个SELECT语句的查询结果能够作为另一个语句的输入值。子查询能够出现的地方有:

    • WHERE子句:左右外层SQL的条件

    查询1班、2班的所有学生:

    SELECT stu.name,stu.num FROM student as stu where stu.class_id in (SELECT id FROM class as cla where cla.name in ('1班','2班'));
    

    查询结果为:

    学生1	2013001
    学生2	2013002
    学生3	2013003
    学生4	2013004
    学生5	2013005
    学生6	2013006
    学生7	2013007
    学生8	2013008
    学生9	2013009
    学生10 2013010
    
    • FROM后:作为一个临时表

    从1班、2班所有学生中查询出学号在2013004到2014006之间的学生:

    SELECT name,num
    FROM (SELECT stu.name,stu.num FROM student as stu where stu.class_id in (SELECT id FROM class as cla where cla.name in ('1班','2班'))) temp_talbe
    WHERE num BETWEEN 2013004 AND 2013006
    

    查询结果为:

    学生4	2013004
    学生5	2013005
    学生6	2013006
    
    • COLUMN:COLUMN,即SELECT后面,作为一个字段值来返回,这里内层SQL只能返回一个字段

    根据学号查询学生的姓名、班级信息

    SELECT stu.name,stu.num,(SELECT cla.name FROM class as cla where cla.id = stu.class_id) as class_name FROM student as stu where stu.num = 2013004
    

    查询结果为:

    学生4	2013004	1班
    
    • JOIN子句:作为一个临时表

    从1班、2班所有学生中查询出学号在201304到201406之间的学生:

    SELECT stu.name,stu.num
    FROM student as stu 
    LEFT JOIN (SELECT id FROM class as cla where cla.name in ('1班','2班')) as cla
    ON cla.id = stu.class_id
    WHERE stu.num BETWEEN 2013004 AND 2013006 
    

    查询结果为:

    学生4	2013004
    学生5	2013005
    学生6	2013006
    

    更新(Update)

    更新表使用UPDATE语法,将已有的老数据更新为新数据。

    UPDATE table SET column1 = value1 WHERE 条件
    

    注意,如果不加WHERE条件,UPDATE语句会默认更新所有表,慎用。

    一次更新多个字段,在SET后面添加多个column:

    UPDATE table SET column1 = value1,column1 = value1 WHERE 条件
    

    联表更新

    联表更新,根据表一字段的值去设置表二字段的值。其实现方法由于数据库不同可能会有一定差异,下面以MySQL为例。

    例如:将学号在2013003到2013005之间的学生的class_id设置为二班的id。

    对于MySQL而言,联表更新主要的方式有二种:

    • UPDATE table1,table2 set column1 = xxx where …
    UPDATE student stu,class cla
    set stu.class_id = cla.id
    where stu.num BETWEEN 2013003 AND 2013005
    AND cla.name = '2班';
    
    • 使用INNER JOIN(LEFT JOIN)进行更新:
    UPDATE student stu
    INNER JOIN class cla ON cla.name = '2班'
    SET stu.class_id = cla.id
    where stu.num BETWEEN 2013003 AND 2013005
    

    执行下面SQL验证结果:

    SELECT name,num,class_id FROM student where num BETWEEN 2013003 AND 2013005
    学生3	2013003	2
    学生4	2013004	2
    学生5	2013005	2
    

    在进行UPDATE语句是也可以在其中加入子查询语句。

    删除(Delete)

    删除使用DELETE语法

    DELETE FROM table WHERE column1 = value1
    

    DELETE语法与UPDATE语法一直,如果没有WHERE条件则会删除指定表的所有数据。

    联表删除

    • 根据table2的条件删除table1的数据

    删除所有一班的学生:

    DELETE student FROM student,class WHERE class.id = student.class_id and class.name = '1班'
    
    DELETE student FROM student INNER JOIN class ON class.id = student.class_id 
    where class.name = '1班'
    

    注意,此处的student,即表名,不能使用别名。

    • 同时删除两个表的记录

    删除一班,并删除一班下面的所有学生:

    DELETE class,student FROM class LEFT JOIN student ON  class.id = student.class_id WHERE class.name = '1班'
    
    展开全文
  • 使用SQL语句增加字段

    2005-12-02 10:36:26
    使用SQL语句增加字段
  • 经典SQL语句大全

    万次阅读 多人点赞 2016-10-01 13:59:02
    SQL语句参考,包含Access、MySQL 以及 SQL Server基础创建数据库CREATE DATABASE database-name 删除数据库drop database dbname 备份sql server 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', ...

    SQL语句参考,包含Access、MySQL 以及 SQL Server


    基础

    创建数据库

    CREATE DATABASE database-name 
    

    删除数据库

    drop database dbname
    

    备份sql server

    1. 创建 备份数据的 device

       USE master
      EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
      
    2. 开始 备份

      BACKUP DATABASE pubs TO testBack 
      

    创建新表

    create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
    

    根据已有的表创建新表:

    A:create table tab_new like tab_old (使用旧表创建新表)
    B:create table tab_new as select col1,col2… from tab_old definition only
    

    删除新表

    drop table tabname 
    

    增加一个列

    Alter table tabname add column col type
    
    注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
    

    添加主键

    Alter table tabname add primary key(col)
    

    删除主键

    Alter table tabname drop primary key(col)
    

    创建索引

    create [unique] index idxname on tabname(col….)
    

    删除索引

    drop index idxname
    
    注:索引是不可更改的,想更改必须删除重新建。
    

    创建视图

    create view viewname as select statement
    

    删除视图

    drop view viewname
    

    几个简单的基本的sql语句

    选择:select * from table1 where 范围
    插入:insert into table1(field1,field2) values(value1,value2)
    删除:delete from table1 where 范围
    更新:update table1 set field1=value1 where 范围
    查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
    排序:select * from table1 order by field1,field2 [desc]
    总数:select count as totalcount from table1
    求和:select sum(field1) as sumvalue from table1
    平均:select avg(field1) as avgvalue from table1
    最大:select max(field1) as maxvalue from table1
    最小:select min(field1) as minvalue from table1
    

    几个高级查询运算词

    UNION 运算符

    UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 
    

    EXCEPT 运算符

    EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
    

    INTERSECT 运算符

    INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 
    

    注:使用运算词的几个查询结果行必须是一致的。

    使用外连接

    left (outer) join

    左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

    SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    

    right (outer) join

    右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

    full/cross (outer) join

    全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

    分组:Group by

    一张表,一旦分组 完成后,查询后只能得到组相关的信息。
    组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
    在selecte统计函数中的字段,不能和普通的字段放在一起;

    对数据库进行操作

    分离数据库: sp_detach_db;
    附加数据库:sp_attach_db 后接表明,附加需要完整的路径名

    如何修改数据库的名称

    sp_renamedb 'old_name', 'new_name'
    

    提升

    复制表(只复制结构,源表名:a 新表名:b) (Access可用)

    • select * into b from a where 1<>1(仅用于SQlServer)
    • select top 0 * into b from a

    拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

    insert into b(a, b, c) select d,e,f from b;
    

    跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

    insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
    

    子查询(表名1:a 表名2:b)

    select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
    

    显示文章、提交人和最后回复时间

    select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
    

    外连接查询(表名1:a 表名2:b)

    select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
    

    在线视图查询(表名1:a )

    select * from (SELECT a,b,c FROM a) T where t.a > 1;
    

    between的用法,between限制查询数据范围时包括了边界值,not between不包括

    select * from table1 where time between time1 and time2
    select a,b,c, from table1 where a not between 数值1 and 数值2
    

    in 的使用方法

    select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
    

    两张关联表,删除主表中已经在副表中没有的信息

    delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )
    

    四表联查问题

    select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....
    

    日程安排提前五分钟提醒

    SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
    

    一条sql 语句搞定数据库分页

    select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
    
    • 具体实现:

      • 关于数据库分页:

        declare @start int,@end int
        
        @sql nvarchar(600)
        
        set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’
        
        exec sp_executesql @sql
        

        注意:在top后不能直接跟一个变量,所以在实际应用中只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表中的不一致(逻辑索引中的数据有可能和数据表中的不一致,而查询时如果处在索引则首先查询索引)

    前10条记录

    select top 10 * form table1 where 范围
    

    选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)

    select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
    

    包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表

    (select a from tableA ) except (select a from tableB) except (select a from tableC)
    

    随机取出10条数据

    select top 10 * from tablename order by newid()
    

    随机选择记录

    select newid()
    

    删除重复记录

    1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
    
    2),select distinct * into temp from tablename
    delete from tablename
    insert into tablename select * from temp
    
    评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量的数据操作
    
    
    3),例如:在一个外部表中导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段
    
    alter table tablename
    --添加一个自增列
    add column_b int identity(1,1)
    delete from tablename where column_b not in(
    select max(column_b) from tablename group by column1,column2,...)
    alter table tablename drop column column_b
    

    列出数据库里所有的表名

    select name from sysobjects where type='U' // U代表用户
    

    列出表里的所有的列名

    select name from syscolumns where id=object_id('TableName')
    

    列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。

    select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type
    
    • 显示结果:
      type vender pcs
      电脑 A 1
      电脑 A 1
      光盘 B 2
      光盘 A 2
      手机 B 3
      手机 C 3

    初始化表table1

    TRUNCATE TABLE table1
    

    选择从10到15的记录

    select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
    

    技巧

    1=1,1=2的使用,在SQL语句组合时用的较多

    “where 1=1” 是表示选择全部 “where 1=2”全部不选,

    如:

    if @strWhere !='' 
        begin
        set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere 
        end
    else 
        begin
        set @strSQL = 'select count(*) as Total from [' + @tblName + ']' 
        end
    

    我们可以直接写成

    set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 and '+ @strWhere
    

    收缩数据库

    --重建索引
        DBCC REINDEX
        DBCC INDEXDEFRAG
    --收缩数据和日志
        DBCC SHRINKDB
        DBCC SHRINKFILE
    

    压缩数据库

    dbcc shrinkdatabase(dbname)
    

    转移数据库给新用户以已存在用户权限

    exec sp_change_users_login 'update_one','newname','oldname'
    go
    

    检查备份集

    RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
    

    修复数据库

    ALTER DATABASE [dvbbs] SET SINGLE_USER
    GO
    DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
    GO
    ALTER DATABASE [dvbbs] SET MULTI_USER
    GO
    

    日志清除

    SET NOCOUNT ON
    DECLARE @LogicalFileName sysname,
    @MaxMinutes INT,
    @NewSize INT
    
    USE tablename -- 要操作的数据库名
    SELECT  @LogicalFileName = 'tablename_log', -- 日志文件名
    @MaxMinutes = 10, -- Limit on time allowed to wrap log.
    @NewSize = 1  -- 你想设定的日志文件的大小(M)
    Setup / initialize
    DECLARE @OriginalSize int
    SELECT @OriginalSize = size 
    FROM sysfiles
    WHERE name = @LogicalFileName
    SELECT 'Original Size of ' + db_name() + ' LOG is ' + 
    CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + 
    CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
    FROM sysfiles
    WHERE name = @LogicalFileName
    CREATE TABLE DummyTrans
    (DummyColumn char (8000) not null)
    
    DECLARE @Counter    INT,
    @StartTime DATETIME,
    @TruncLog   VARCHAR(255)
    SELECT @StartTime = GETDATE(),
        @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
    DBCC SHRINKFILE (@LogicalFileName, @NewSize)
    EXEC (@TruncLog)
    -- Wrap the log if necessary.
        WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
    AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)  
    AND (@OriginalSize * 8 /1024) > @NewSize  
    BEGIN -- Outer loop.
    SELECT @Counter = 0
    WHILE   ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
    BEGIN -- update
    INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans
    SELECT @Counter = @Counter + 1
    END
    EXEC (@TruncLog)  
    END
    SELECT 'Final Size of ' + db_name() + ' LOG is ' +
    CONVERT(VARCHAR(30),size) + ' 8K pages or ' + 
    CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
    FROM sysfiles 
    WHERE name = @LogicalFileName
    DROP TABLE DummyTrans
    SET NOCOUNT OFF
    

    更改某个表

    exec sp_changeobjectowner 'tablename','dbo'
    

    存储更改全部表

    CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
    @OldOwner as NVARCHAR(128),
    @NewOwner as NVARCHAR(128)
    AS
    DECLARE @Name    as NVARCHAR(128)
    DECLARE @Owner   as NVARCHAR(128)
    DECLARE @OwnerName   as NVARCHAR(128)
    DECLARE curObject CURSOR FOR 
    select 'Name'    = name,
        'Owner'    = user_name(uid)
    from sysobjects
    where user_name(uid)=@OldOwner
    order by name
    OPEN   curObject
    FETCH NEXT FROM curObject INTO @Name, @Owner
    WHILE(@@FETCH_STATUS=0)
    BEGIN     
    if @Owner=@OldOwner 
    begin
        set @OwnerName = @OldOwner + '.' + rtrim(@Name)
        exec sp_changeobjectowner @OwnerName, @NewOwner
    end
    -- select @name,@NewOwner,@OldOwner
    FETCH NEXT FROM curObject INTO @Name, @Owner
    END
    close curObject
    deallocate curObject
    GO
    

    SQL SERVER中直接循环写入数据

    declare @i int
    set @i=1
    while @i<30
    begin
    insert into test (userid) values(@i)
    set @i=@i+1
    end
    

    案例:
    有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格:

    Name score

    Zhangshan 80

    Lishi 59

    Wangwu 50

    Songquan 69

    while((select min(score) from tb_table)<60)
    
        begin
    
            update tb_table set score =score*1.01
    
            where score<60
    
                if (select min(score) from tb_table)>60
    
                    break
    
                else
    
                    continue
    
        end
    

    数据开发-经典

    按姓氏笔画排序

    Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多
    

    数据库加密

    select encrypt('原始密码')
    select pwdencrypt('原始密码')
    select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
    select pwdencrypt('原始密码')
    select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同
    

    取回表中字段

    declare @list varchar(1000),
    @sql nvarchar(1000) 
    select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A'
    set @sql='select '+right(@list,len(@list)-1)+' from 表A' 
    exec (@sql)
    

    查看硬盘分区

    EXEC master..xp_fixeddrives
    

    比较A,B表是否相等

    if (select checksum_agg(binary_checksum(*)) from A)
        =
       (select checksum_agg(binary_checksum(*)) from B)
        print '相等'
    else
        print '不相等'
    

    杀掉所有的事件探察器进程

    DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses
    WHERE program_name IN('SQL profiler',N'SQL 事件探查器')
    EXEC sp_msforeach_worker '?'
    

    记录搜索

    • 开头到N条记录

       Select Top N * From 表
      
    • N到M条记录(要有主索引ID)

      Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID   Desc
      
    • N到结尾记录

      Select Top N * From 表 Order by ID Desc
      

    案例

    例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个SQL语句, 找出表的第31到第40个记录。

    select top 10 recid from A where recid not in(select top 30 recid from A)

    分析:如果这样写会产生某些问题,如果recid在表中存在逻辑索引。

    select top 10 recid from A where……是从索引中查找,而后面的select top 30 recid from A则在数据表中查找,这样由于索引中的顺序有可能和数据表中的不一致,这样就导致查询到的不是本来的欲得到的数据。

    解决方案

    1, 用order by select top 30 recid from A order by ricid 如果该字段不是自增长,就会出现问题
    2, 在那个子查询中也加条件:select top 30 recid from A where recid>-1

    例2:查询表中的最后以条记录,并不知道这个表共有多少数据,以及表结构。
    set @s = ‘select top 1 * from T where pid not in (select top ’ + str(@count-1) + ’ pid from T)’

    print @s exec sp_executesql @s

    获取当前数据库中的所有用户表

    select Name from sysobjects where xtype='u' and status>=0
    

    获取某一个表的所有字段

    select name from syscolumns where id=object_id('表名')
    select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名')
    

    两种方式的效果相同

    查看与某一个表相关的视图、存储过程、函数

    select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
    

    查看当前数据库中所有存储过程

    select name as 存储过程名称 from sysobjects where xtype='P'
    

    查询用户创建的所有数据库

    select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
    或者
    select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
    

    查询某一个表的字段和数据类型

    select column_name,data_type from information_schema.columns
    where table_name = '表名'
    

    不同服务器数据库之间的数据操作

    --创建链接服务器
        exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
        exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
    --查询示例
        select * from ITSV.数据库名.dbo.表名
    --导入示例
        select * into 表 from ITSV.数据库名.dbo.表名
    --以后不再使用时删除链接服务器
        exec sp_dropserver 'ITSV ', 'droplogins '
    --连接远程/局域网数据(openrowset/openquery/opendatasource)
        --1、openrowset
            --查询示例
                select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
            --生成本地表
                select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
            --把本地表导入远程表
                insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
                select *from 本地表
            --更新本地表
                update b
                set b.列A=a.列A
                from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
                on a.column1=b.column1
        --openquery用法需要创建一个连接
            --首先创建一个连接创建链接服务器
                exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
            --查询
                select *
                FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
            --把本地表导入远程表
                insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ')
                select * from 本地表
            --更新本地表
                update b
                set b.列B=a.列B
                FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a
                inner join 本地表 b on a.列A=b.列A
        --3、opendatasource/openrowset
            SELECT *
            FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta
            --把本地表导入远程表
                insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
                select * from 本地表
    

    SQL Server基本函数

    SQL Server基本函数

    字符串函数

    长度与分析用

    • datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格
    • substring(expression,start,length) 取子串,字符串的下标是从“1”,start为起始位置,length为字符串长度,实际应用中以len(expression)取得其长度
    • right(char_expr,int_expr) 返回字符串右边第int_expr个字符,还用left于之相反
    • isnull( check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类
    • Sp_addtype 自定義數據類型
      例如:EXEC sp_addtype birthday, datetime, ‘NULL’
    • set nocount {on|off}
      使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行时设置,而不是在分析时设置。
      SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。
      SET NOCOUNT 为 OFF 时,返回计数

    常识

    • 在SQL查询中:from后最多可以跟多少张表或视图:256
    • 在SQL语句中出现 Order by,查询时,先排序,后取
    • 在SQL中,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。
    展开全文
  • SQL 插入语句

    万次阅读 2018-05-05 17:07:38
    插入单条语句 insert into t_name(key1, key2) values(value1, value2); 值和名字对应即可 insert into t_name values(); 必须顺序插入t_name对应的字段 插入多条语句(完整或部分) insert into t_name() ...
  • 有时[比如在Linux服务器下, 或者借助数据库管理工具执行SQL], 需要使用sql语句直接对数据表进行新建/修改表结构, 填充/更新数据等. 好处: 可以避免繁琐操作, 遗漏, 快捷方便, 一步到位. 2.学习/操作 ...
  • SQL语句执行顺序 SQL语句执行顺序 结合上图,整理出如下伪SQL查询语句SQL语句执行顺序 从这个顺序中我们可以发现,所有的查询语句都是从FROM开始执行的。在实际执行过程中,每个步骤都会为下一个步骤...
  • SQL知识点001-SQL查询语句基本结构

    千次阅读 2021-01-19 14:14:17
    主要梳理SQL查询语句的基本结构
  • SQL基本语句

    千次阅读 2009-10-24 14:09:00
    SQL基本语句 一. SQL的四条最基本的数据操作语句为Insert,Select,Update和Delete。二.首先我们使用CREATE TABLE语句来创建一个表。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理,这是...
  • sql语句笔试

    2012-04-28 15:09:37
    sql语句 建表 增加、删除、复杂查询字段
  • sql触发器语句

    千次阅读 2017-08-01 23:35:41
    -- 触发器语句格式 create trigger tr_order -- 创建监听器,监听名 before/after -- 什么时间进行监听,在发生什么行为之前或之后 insert/update/delete -- 对什么行为进行监听...`sql语句操作命令` end cr
  • SQL新增语句

    万次阅读 2019-05-28 09:31:19
    当我们需要向数据库表中插入一条新记录时,就必须要使用到INSERT语句。 INSERT语句的基本语法是: INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...); 例如,我们向jobs表插入一条新记录,先...
  • SQL查询语句拼接

    千次阅读 2015-01-13 12:31:20
    sql语句拼接主要操作于有条件的的增加,删除,修改或查询,下面给你介绍一个条件查询的例子: 既然是拼接sql语句长度不一定,用StringBuffer修饰,而不用String String name=request.getParameter("name"); String ...
  • sql替换语句

    千次阅读 2011-08-22 14:06:23
    sql替换语句,用该命令可以整批替换某字段的内容,也可以批量在原字段内容上加上或去掉字符。 命令总解:update 表的名称 set 替换字段=REPLACE(替换字段,原来内容,新内容) 举例说明: 1)把backupfile表里url的...
  • SQL语句增加字段、修改字段、修改类型、修改默认值
  • 表有字段 家庭成员,在保证原来数据不更改情况下加入数据,该怎么写sql语句 打个比方 原来家庭成员是夫妻二人,两个数据。生了小孩,家庭成员就是三个人,三个数据。
  • SQLServer语句

    千次阅读 2019-03-11 15:21:50
    1、1=1,1=2的使用,在SQL语句组合时用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + ...
  • sql 语句 cmd 权限

    2010-02-27 19:16:40
    sql 语句 cmd 权限,sql 语句 cmd 权限,sql 语句 cmd 权限
  • sql语句增加一列

    千次阅读 2012-05-14 09:29:07
    ALTER TABLE tablename ADD columnname VARCHAR(20) NULL
  • SQL语句增加修改字段

    万次阅读 2018-08-30 09:58:00
    添加字段的SQL语句的写法: 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为...
  • Sql Server中sql语句自动换行

    万次阅读 2014-06-05 17:01:03
    怎么让sql server中的sql语句自动换行呢? 如下图: 工具--选项--所有语言
  • SQL查询语句总结

    千次阅读 2016-04-11 21:34:48
    SQL基本查询 ...一、SQL简单的查询语句 1.查看表结构 SQL>desc stu; 2.查询所有列 SQL>select * from stu; 3.查询指定列: SQL>select stuno,stuname,job from stu; SQL>select distinc stuname f
  • SQL语句快查

    千次阅读 多人点赞 2020-03-17 15:02:52
    Sql语句快查表
  • JAVA-SQL语句优化.doc

    2020-06-10 19:25:42
    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的...
  • sql语句中case_SQL中的CASE语句

    千次阅读 2020-07-27 01:00:58
    sql语句中case The case statement in SQL returns a value on a specified condition. We can use a Case statement in select queries along with Where, Order By and Group By clause. It can be used in ...
  • Sql暂停语句

    千次阅读 2016-01-29 16:21:25
    --延迟几秒 waitfor delay '00:00:05' print '下课了!' --到几点运行 waitfor time '00:00:05' print '下课了!'
  • 高效SQL语句必杀技

    万次阅读 多人点赞 2012-03-29 13:11:04
    SQL语句是造成数据库开销最大的部分。而不良SQL写法直接导致数据库系统性能下降的情形比比皆是。那么如何才能称得上高效的SQL语句呢?一是查询优化器为当前的SQL语句生成最佳的执行计划,保证数据读写使用最佳路径...
  • 有的时候,我们需要对已存在的表进行插入列的情况,当然,可以使用navicat等工具直接可视化操作,命令行的话,如下: alter table 表名add column 列名数据类型default 默认值; demo: alter table T_DB_...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 377,154
精华内容 150,861
关键字:

sql增加语句