zoukankan      html  css  js  c++  java
  • SQL 命令整理

    --DDL语句(数据定义语言--Data definition language)
    --创建库脚本
    CREATE DATABASE SQLTips
    ON
    (
    NAME = SQLTips_data,--文件名
    FILENAME = 'D:\Data\SQLTips_data.mdf',--文件物理路径
    SIZE = 10,--文件大小
    FILEGROWTH = 10MB--文件增长大小
    )
    LOG ON
    (
    NAME = SQLTips_log,
    FILENAME = 'D:\Data\SQLTips_log.ldf',
    SIZE = 5,
    FILEGROWTH = 5MB
    )
    --创建表脚本
    CREATE TABLE item_master
    (
    item_number integer identity primary key,--自动增长
    [description]  varchar(35) not null
    )
    CREATE TABLE orders
    (
    order_number integer unique identity not null,
    item_number  integer not null,
    quantity smallint default 1,--默认值
    item_cost decimal(5,2),
    customer_number integer
    primary key(order_number,item_number)--主键
    foreign key(item_number) references item_master--外键
    )
    CREATE TABLE #TEMP_TABLE_SINGLE_USER--创建临时表,该表仅表创建人是可访问的,当用户注销时DBMS系统将自动删除该表
    CREATE TABLE ##TEMP_TABLE_ALL_USER--创建多个用户和会话可以访问的临时表,DBMS将在最后引用该表的用户注销时删除全局临时表
    --设置默认值及使用存储过程sp_bindefault将默认值绑定
    CREATE DEFAULT ud_value_unknown as 'Unknown'
    EXEC sp_bindefault
    @defname=ud_value_unknown,
    @objname='users.address'
    --ALTER TABLE 语句
    ALTER TABLE users ADD newcolum INTEGER --修改表添加新列
    ALTER TABLE users DROP COLUMN newcolum --修改表删除列
    ALTER TABLE users
    ALTER COLUMN email varchar(100) --修改表修改列数据类型
    ALTER TABLE users   --修改表主键,需先删除主键列
    ADD CONSTRAINT pk_users PRIMARY KEY ([user_id])
    ALTER TABLE users   --修改表删除主键
    DROP CONSTRAINT pk_users
    ALTER TABLE users   --修改表外键引用(添加新外键引用的列需是其它表的主键)
    ADD CONSTRAINT fk_users_column
    FOREIGN KEY (<列名>) REFERENCES (<表名>)
    exec sp_help users --系统帮助
    --设置主键(两种方式)
    CREATE TABLE Simple
    (
    Simple_id int primary key,
    Simple_name varchar(50)
    )
    CREATE TABLE Simple
    (
    Simple_id int,
    Simple_name varchar(50)
    constraint pk_Simple_id
      primary key(Simple_id,Simple_name)
    )
    --设置外键(两种方式,语法同上)
    CREATE TABLE Simple_II
    (
    Simple_II_id INT PRIMARY KEY,
    Simple_id INT
    CONSTRAINT fk_simple_ii FOREIGN KEY (Simple_id) REFERENCES Simple(Simple_id)
    --constraint为外键指定名称
    )
    --另外若主键表的主键为两列或以上,相应的引用外键也需指定为两列或以上
    --视图:创建视图语法基本同其它创建语法(create view <vw_name> as ...).对于视图命名最好保持一致性,如以"vw_"开头
    --删除视图(drop view <vw_name>)




    --DML(数据操纵语言--Data manipulate language)--INSERT INTO
    INSERT INTO Users(username,password,first_name,last_name,sex,email,regionid,age,address,postcode,mobile,regdate)
    VALUES(@username,@password,@first_name,@last_name,@sex,@email,@regionid,@age,@address,@postcode,@mobile,@regdate)
    --注:使用INSERT语句添加新行尽量使用事务机制避免出错
    --其中并非所有列都需填写..并且可以一次填入多组values,例
    INSERT INTO Users(username,password,first_name,last_name,sex,email,regionid,age,address,postcode,mobile,regdate)
    VALUES
    (@username,@password,@first_name,@last_name,@sex,@email,@regionid,@age,@address,@postcode,@mobile,@regdate)
    (@username1,@password1,@first_name1,@last_name1,@sex1,@email1,@regionid1,@age1,@address1,@postcode1,@mobile1,@regdate1)
    (@username2,@password2,@first_name2,@last_name2,@sex2,@email2,@regionid2,@age2,@address2,@postcode2,@mobile2,@regdate2)
    (@username3,@password3,@first_name3,@last_name3,@sex3,@email3,@regionid3,@age3,@address3,@postcode3,@mobile3,@regdate3)
    --用insert语句从一个表向另外一个表复制,我们假设users1表是结构与users完全相同的一张表
    INSERT INTO Users1 SELECT * FROM Users

    --UPDATE
    --使用UPDATE语句改变列值
    --语法如下:UPDATE <table name|view name> SET <column name> = <expression> [...,<last column name> = <last expression>] [WHERE <search condition>]
    UPDATE Users SET first_name = 'new first_name',last_name = 'new last_name' where username = 'user1'
    --在UPDATE语句中使用子查询同时改变多行中的值
    UPDATE Users SET address = '北京市区' WHERE regionid <= (SELECT regionid FROM Region WHERE RegionName = '北京市')
    --使用UPDATE语句根据另一表中的值改变表的值
    UPDATE Users SET address = '北京市区' WHERE regionid IN (SELECT regionid FROM Region WHERE RegionName = '北京市')
    --DELETE
    --使用DELETE语句从表中删除行
    --语法如下:DELETE FROM <table name> [WHERE <search condition>]
    DELETE FROM Users WHERE username = 'user1'--注:使用UPDATE更新行尽量使用事务机制避免更新错误
    --DELETE语句一次从表中删除一行,如果使用如下语句DELETE FROM Users,DBMS将一次一行进行删除,此时可以使用
    TRUNCATE TABLE Users --DBMS同时删除信息页,将同时删除多个数据行.但TRUNCATE TABLE 语句并不更新事务日志,
    --因此使用TRUNCATE TABLE 删除行,则将不能使用ROLLBACK 语句回滚删除操作,即使作为事务处理执行
    --TRUNCATE TABLE 语句也是如此
    --因insert,delete语句将改变表中的数据,使用上述语句时将其作为事务处理来执行是必要的

    --SELECT
    --语法结构:
    --SELECT [ALL|DISTINCT] <select item list> //ALL,全部;DISTINCT,去掉重复行
    --FROM <table list>    
    --[WHERE <search conditions>]   //可选条件语句
    --[GROUP BY <grouping column list>]  
    --[HAVING <having search conditions>]
    --[ORDER BY <sort specification>]  //可选排序条件
    SELECT * FROM Users WHERE username = 'user1'
    --使用SELECT从多个表中返回值
    SELECT Users.username,Users.first_name,Users.last_name,Region.Regionid,Region.RegionName
    FROM Users JOIN Region ON Users.Regionid = Region.Regionid WHERE Users.username = 'user1'
    --WHERE子句中可使用复合条件(AND,OR,NOT)
    --子查询:SELECT语句内的一条SELECT语句,子查询大多数情况下返回单值;子查询可以由IN或NOT IN 引入
    --则子查询必须返回一列的结果表,但结果可以有不止一行;不能有ORDER BY子句
    --CASE WHEN THEN
    SELECT [user_id],username,CASE sex
        WHEN 0 THEN '男'
        WHEN 1 THEN '女'
         END AS Sex
    FROM Users
    --可以使用CASE表达式更新列值
    --NULLIF,ISNULL表达式
    --NULLIF是ISNULL的反函数;ISNULL函数用非NULL值来代替NULL,NULLIF用NULL值来代替非NULL值
    NULLIF(<expression 1>,<expression 2>)
    --使用COALESCE表达式代替NULL值

  • 相关阅读:
    剑指offer23-二叉搜索树的后序遍历序列
    剑指offer24-二叉树中和为某一值的路径
    剑指offer-复杂链表的复制
    剑指offer-二叉搜索树与双向链表
    剑指offer-字符串的排序
    剑指offer-数组中出现次数超过一半的数字
    剑指offer-最小的k个数
    c++中参数加&与不加的区别
    第九届蓝桥杯(A组填空题)
    基于优先级的多道程序系统作业调度——基于优先级
  • 原文地址:https://www.cnblogs.com/sshh/p/1368911.html
Copyright © 2011-2022 走看看