美文网首页
2018-11-12 数据库基础

2018-11-12 数据库基础

作者: Andy_Lxh | 来源:发表于2018-11-12 17:24 被阅读0次

    SQL Server数据类型

    • int ---整数

    • numeric---数字

    • decimal --- 数字

    • char ---字符

    • varchar---字符

    • datetime --- 日期时间

    • int

    例如在表emp中的Empon列的定义如下:
    Empon int

    • numeric

    numeric表示数字类型,经常被定义成numeric(p,s)形式,其中:
    P表示数字的总位数
    S表示小数点后面的位数
    例如在表Emp中的Sal列中的定义如下:
    Sal numeric(5,1)

    • char

    char表示固定长度的字符类型,经常被定义成char(n)形式, n表示占用的字节数,N的最大取值是2000。例如在表Emp中的Ename列的定义如下:
    Ename char(20);
    表示Ename列中最多可存储20个字节的字符串,并且占用的空间是固定的20个字节。

    • varchar

    varchar表示变长的字符类型,定义格式是varchar(n), n表示最多可占用的字节数,最大长度是4000字节。
    例如在表Emp中的Job列的定义如下:
    Job varchar(100);
    表示Job列中最多可存储长度为100个字节的字符串。根据其中保存的数据长度,占用的空间是变化的,最大占用空间为100个字节。

    • datetime

    datetime用于定义日期时间的数据。
    例如在表Emp中的Hiredate列的定义如下:
    Hiredate datetime;
    表示Hiredate列中存放的是日期时间。

    创建表

    • Create语句
    CREATE TABLE [schema.]table_name(
        column_name datatype[DEFAULT expr][,…]
    );
    

    创建职员表的例子:

    --创建表EMP

        CREATE TABLE emp( 
                id NUMERIC(10), 
                name VARCHAR(20), 
                gender CHAR(1), 
                birth DATETIME,
                salary NUMERIC(6,2),
                job VARCHAR(30),
                deptid NUMERIC(2) 
        ); 
    
    • Default

    可以通过DEFAULT子句给列指定默认值,例如,在emp表中给gender列赋默认值‘M’,如果插入数据时没有指定性别的员工,则默认是男性。
    --创建表emp1

        CREATE TABLE emp1( 
                id NUMERIC(10), 
                name VARCHAR(20), 
                gender CHAR(1) DEFAULT 'M', 
                birth DATETIME,
                salary NUMERIC(6,2),
                job VARCHAR(30),
                deptid NUMERIC(2) 
        ); 
    
    • NOT NULL

    默认情况下,任何列都允许有空值。非空(Not Null)是一种约束条件,用于确保字段值不为空,当某个字段被设置了非空约束条件,这个字段中必须存在有效值,也就是说,当执行插入数据的操作时,必须提供这个列的数据,当执行更新操作时,不能给这个列的值设置为NULL。

    创建表emp2,设置name字段为非空,也即是表emp2中的每条记录,name列都必须有值。

        CREATE TABLE emp2( 
                id NUMERIC(10), 
                name VARCHAR(20) NOT NULL, 
                gender CHAR(1), 
                birth DATETIME,
                salary NUMERIC(6,2),
                job VARCHAR(30),
                deptid NUMERIC(2) 
        ); 
    
    • 修改表

    • 修改表名
      在建表后如果希望修改表名,可以使用RENAME语句实现,语法如下,将改变表名
    old_name为new_name:
    sp_rename old_name, new_name;
    

    举例说明,如果要将表名emp修改为employee,使用如下语法:

    sp_rename emp,employee;
    
    • 增加列
      在建表之后,要给表增加列可以使用ALTER TABLE的ADD子句实现。语法如下:
    ALTER TABLE table_name ADD
    column datatype [DEFAULT expr]
    

    注意一点,列只能增加在最后,不能插入到现有的列中。下例给表employee增加一列hiredate,并设置默认值为当前日期。

    ALTER TABLE employee ADD 
        hiredate DATE DEFAULT getdate();
    
    • 删除列

    在建表之后,使用ALTER TABLE的DROP子句删除不需要的列。语法如下:

         ALTER TABLE table_name DROP column column_name; 
    

    删除字段需要从每行中删掉该字段占据的长度和数据,并释放在数据块中占据的空间,如果表记录比较大,删除字段可能需要比较长的时间。
    下例删除表employee的列hiredate:

        ALTER TABLE employee DROP column hiredate;
    
    • 修改列

    建表之后,可以改变表中列的数据类型、长度和默认值,注意这种修改仅对以后插入的数据有效,另外如果表中已经有数据的情况下,把长度由大改小,有可能不成功,比如原来的类型是VARCHAR(100),其中已经存放了100个字节长度的数据,如果要改为VARCHAR(80),则不会修改成功。
    语法如下:

        ALTER TABLE table_name 
        ALTER column column_name datatype
    

    下例修改表emp loyee的列job,并增加默认值的设置;

    ALTER TABLE employee ALTER column job VARCHAR(40);
    

    相关文章

      网友评论

          本文标题:2018-11-12 数据库基础

          本文链接:https://www.haomeiwen.com/subject/knpcfqtx.html