您的位置:新葡亰496net > 网络数据库 > 数量定义语言,SqlServer中Alter语句的运用

数量定义语言,SqlServer中Alter语句的运用

发布时间:2019-07-05 13:00编辑:网络数据库浏览(93)

    DDL(Data Definition languages)数据定义语言,这些语句主要定义了不同的数据段,数据表、列、索引等操作,主要关键字有create、drop、alter。
    一、 数据库的操作
    1.数据库的创建
    CREATE DATABASE IF NOT EXISTS chens;
    2.数据库的修改
    CREATE DATABASES BOOKS TO 新库名;
    注意:一般不更改库的名字,因为这样修改的话可能会使库中的数据变化。
    3.更改数据库的字符集
    ALTER DATABASE chens character set gbk;
    4.删除库
    DROP DATABASE IF EXISTS chens;

    DDL(Data Define Languge):数据定义语言

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义。

    Mysql数据库中对表操作sql语句总结

       --创建数据库

      create database school

      --打开数据库

      use school

      --创建表

      create table student

      (

      id int,

      name varchar(20),

      sex char(2),

      age int,

      date datetime,

      info text,

      bak varchar(500)

      )

      --查看表结构

      exec sp_help student

      --修改、添加列(字段)

      alter table student

      add tel varchar(20)

      --删除列(字段)

      alter table student

      drop column bak

      --属性修改

      --修改列名(字段名)

      exec sp_rename 'student.sex','sex2'

      --修改类型

      alter table student

      alter column age char(20)

      --删除表

      drop table student

      -------------------------------表(结构):--------------------------------------------

      ----创建表,查看表结构,修改(增加列、删除列、属性(如姓名、年龄),删除表)

      ---数据的完整性:主键约束、唯一约束、检查性约束、默认约束、外键约束

      create table biao

      (

      id int primary key,

      name varchar(20),

      sex char(2) check(sex='男' or sex='女'),

      age int,

      date datetime,

      info text,

      tel char(16) unique,

      bak varchar(500) default '我是学生'

      )

      create table grade

      (

      id int not null,

      name varchar(20),

      sex char(2),

      age int,

      date datetime,

      info text,

      bak varchar(500)

      )

      alter table grade

      add tel char(16)

      ---增加主键

      alter table grade

      add constraint aa primary key(id)

      ---添加唯一性约束

      alter table grade

      add constraint bb unique(tel)

      ---查看约束

      exec sp_helpconstraint grade

      ---添加检查性约束

      alter table grade

      add constraint sex check(sex='男' or sex='女')

      ---添加默认约束

      alter table grade

      add constraint ccc default '我是好学生' for bak

      ---删除约束

      alter table grade

      drop constraint ccc

      -----------------------------添加约束的格式------------------------------------------

      ---alter table 表名

      ---add constraint 约束名(别名(任意取)) 约束关键字

      ----作业题,7.28-----

      create table shop_jb

      (

      id int primary key,

      namel varchar(20),

      spec varchar(20),

      stock int,

      price float,

      datel datetime default '2010-7-6'

      )

      create table shop_yw

      (

      ywid int primary key,

      name2 varchar(20),

      sex char(2) check(sex='男' or sex='女'),

      age int,

      tel varchar(18) unique,

      address varchar(20)

      )

      create table shop_xs

      (

      id int not null,

      sale char(20),

      quantity char(20),

      date2 datetime default '2010-5-3',

      ywid int

      foreign key(id) references shop_jb,

      foreign key(ywid) references shop_yw

      )

      例如:

      修改表expert_info中的字段birth,允许其为空

      >alter table expert_info change birth birth varchar(20) null;

      1.增加一个字段(一列)

      alter table table_name add column column_name type default value; type指该字段的类型,value指该字段的默认值

      例如:alter table mybook add column publish_house varchar(10) default '';

      2.更改一个字段名字(也可以改变类型和默认值)

      alter table table_name change sorce_col_name dest_col_name type default value; source_col_name指原来的字段名称,dest_col_name

      指改后的字段名称

      例如:alter table Board_Info change IsMobile IsTelphone int(3) unsigned default 1;

      3.改变一个字段的默认值

      alter table table_name alter column_name set default value;

      例如:alter table book alter flag set default '0';

      4.改变一个字段的数据类型

      alter table table_name change column column_name column_name type;

      例如:alter table userinfo change column username username varchar(20);

      5.向一个表中增加一个列做为主键

      alter table table_name add column column_name type auto_increment PRIMARY KEY;

      例如:alter table book add column id int(10) auto_increment PRIMARY KEY;

      6.数据库某表的备份,在命令行中输入:

      mysqldump -u root -p database_name table_name > bak_file_name

      例如:mysqldump -u root -p f_info user_info > user_info.dat

      7.导出数据

      select_statment into outfile"dest_file";

      例如:select cooperatecode,createtime from publish limit 10 into outfile"/home/mzc/temp/tempbad.txt";

      8.导入数据

      load data infile"file_name" into table table_name;

      例如:load data infile"/home/mzc/temp/tempbad.txt" into table pad;

      9.将两个表里的数据拼接后插入到另一个表里。下面的例子说明将t1表中的com2和t2表中的com1字段的值拼接后插入到tx表对应的

      字段里。

      例如:insert into tx select t1.com1,concat(t1.com2,t2.com1) from t1,t2;

      10,删除字段

      alter table form1 drop column 列名;

      补充一个:

      PHP操作MySQL对表增加一列

      于已经建立好的数据库,在一个已经有字段的表内新加字段可用以下方法:

      mysql_query(“ALTER TABLE `表名` ADD `字段` 字段类型”) or die(mysql_error());

      例如,对表article添加字段keywords

      代码:

     代码如下

     

    <?php
    $link = mysql_connect($servername,$dbusername,$dbpassword);
    if (mysql_select_db($dbname)) {
    if ($link) {
    echo “connect succeed”;
    mysql_query(“ALTER TABLE `article` ADD `keywords` varchar(100) NOT NULL default ””) or die(mysql_error());
    echo “Add succeed”;
    } else {
    echo “connect failed”;
    }
    mysql_close($link);
    }
    ?>

    --创建数据库 create database school --打开数据库 use school --创建表 create table student ( id int, name varchar(20), sex...

    在修改Sql Server表结构时,常用到Alter语句,把一些常用的alter语句列举如下。

    二、 表的管理
    1.表的创建
    Create table 表名(
    列名 类型[长度] 约束1 约束2 ……,
    列名 类型[长度] 约束1 约束2 ……,

    列名 类型[长度] 约束1 约束2 ……,
    [表级约束]
    ) [engine=Innodb default charset=utf-8 存储引擎 和 字符集];
    创建表 book
    Create table book(
    id int,
    bName varchar(20),
    price double,
    authorId INT,
    rDate datetime
    );
    新葡亰496net 1
    新葡亰496net 2
    2.表的修改
    语法:
    Alter table 表名 add | drop | modify | change column 列名 [列类型 约束];
    ①修改列名
    Alter table book change column rDate rQi datetime;
    新葡亰496net 3
    ②修改列的类型和约束
    Alter table book modify column rQi TIMESTAMP;
    新葡亰496net 4
    ③修改添加新列
    Alter table book add column chen varchar(20);
    注意:添加新列到指定位置
    first 和 after,first 表示添加列到表的第一列,after 表示添加在某个列之后。
    语法:alter table book add column 字段名 类型 约束 [first | after 列名]
    默认添加到最后一列。
    新葡亰496net 5
    ④删除列
    Alter table book drop column chen;
    新葡亰496net 6
    ⑤修改表名
    Alter table book rename to book_chen;
    新葡亰496net 7
    新葡亰496net 8
    3.表的删除
    Drop table if exists book_chen;
    Show tables;
    新葡亰496net 9
    4.表的复制
    表1是已存在的表,表2不存在的表
    ①只复制表的结构
    Create table 表2 like 表1;
    新葡亰496net 10
    ②复制数据 内容
    Create table 表2 like select * from 表1;
    ③复制部分数据
    Create table 表2 like select * from 表1 where 条件;
    ④仅仅复制某些字段
    Create table 表2 like select 字段1 ,字段2 from 表1 where 0;

    语法:create database [if not exists]库名;

    • 查看列:desc 表名;
    • 修改表名:alter table t_book rename to bbb;
    • 添加列:alter table 表名 add column 列名 varchar(30);
    • 添加带注释的列:alter table directory add index_url varchar(256) default null comment '章节书目链接' after dir_url;
    • 删除列:alter table 表名 drop column 列名;
    • 修改列名MySQL: alter table bbb change nnnnn hh int;
    • 修改列名SQLServer:exec sp_rename't_student.name','nn','column';
    • 修改列名Oracle:lter table bbb rename column nnnnn to hh int;
    • 修改列属性:alter table t_book modify name varchar(22);

    1:向表中添加字段

    案例:创建库books

    sp_rename:SQLServer 内置的存储过程,用与修改表的定义。

    Alter table [表名] add [列名] 类型

    CREATE DATABASE IF NOT EXISTS books ;

     

    2:  删除字段

    更改库的字符集

     

    Alter table [表名]  drop column [列名]

    ALTER DATABASE books CHARACTER SET gbk;

    MySQL 查看约束,添加约束,删除约束 添加列,修改列,删除列

    3:  修改表中字段类型 (可以修改列的类型,是否为空)

    DROP DATABASE IF EXISTS books;

     

    Alter table [表名] alter column [列名] 类型

    语法:create table 表名(列名 列的类型,列名 列的类型,...列名 列的类型;

    • 查看表的字段信息:desc 表名;
    • 查看表的所有信息:show create table 表名;
    • 添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
    • 添加外键约束:alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
    • 删除主键约束:alter table 表名 drop primary key;
    • 删除外键约束:alter table 表名 drop foreign key 外键(区分大小写);

    • 修改表名:alter table t_book rename to bbb;

    • 添加列:alter table 表名 add column 列名 varchar(30);
    • 删除列:alter table 表名 drop column 列名;
    • 修改列名MySQL: alter table bbb change nnnnn hh int;
    • 修改列名SQLServer:exec sp_rename't_student.name','nn','column';
    • 修改列名Oracle:alter table bbb rename column nnnnn to hh int;
    • 修改列属性:alter table t_book modify name varchar(22);
    •  MySQL修改字段默认值

        解决

        alter table topic alter column cateId set default '2';

        语法

        alter table表名alter column字段名drop default; (若本身存在默认值,则先删除)

        alter table 表名 alter column 字段名 set default 默认值;(若本身不存在则可以直接设定)

    • 添加带默认值,带字段描述的列:ALTER TABLE jz_order ADD COLUMN delay_delivery tinyint(3) DEFAULT 0 COMMENT '是否延期收货,0:表示没有延期,1:第一次延期 2:第二次延期' AFTER c_userid;

    4:添加主键

    新葡亰496net 11

     

    Alter table [表名] add constraint [ 约束名] primary key( [列名])

    DESC book;

     

    5:添加唯一约束

    新葡亰496net 12新葡亰496net 13

     

    Alter table [表名] add constraint [ 约束名] unique([列名])

    语法:alter table 表名 add|drop|modify|change column 列名 ;

    sp_rename:SQLServer 内置的存储过程,用与修改表的定义。

    6:添加表中某列的默认值

    ①修改列名

     

    Alter table [表名] add constraint [约束名] default(默认值) for [列名]
    7:添加约束

    ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;

    INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
    eg:
    insert ignore into table(name)  select  name from table2

    新葡亰496net,Alter table [表名] add constraint [约束名] check (内容)

    ②修改列的类型或约束

     

    8:添加外键约束

    ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;

     

     Alter table [表名] add constraint [约束名]  foreign key(列名) referencese 另一表名(列名)

    ③添加新列

    MySQL 相关数据库、表、表结构等显示命令

    1、显示数据库列表。
    show databases;
    2、显示库中的数据表:
    use mysql;
    show tables;
    3、显示数据表的结构:
    describe 表名;
    4、建库:
    create database 库名;
    5、建表:
    use 库名;
    create table 表名 (字段设定列表);
    6、删库和删表:
    drop database 库名;
    drop table 表名;
    7、将表中记录清空:
    delete from 表名;

    9:删除约束

    ALTER TABLE author ADD COLUMN annual DOUBLE;

    Alter table [表名] drop constraint [约束名] 

    ④删除列

    10:重命名表

    ALTER TABLE author DROP COLUMN annual;

    exec sp_rename '[原表名]','[新表名]'

    ⑤修改表名

    11:重命名列名

    ALTER TABLE author RENAME TO book_author;

    exec sp_rename '[表名].[列名]','[表名].[新列名]'

    DROP TABLE IF EXISTS book_author;

     

    数量定义语言,SqlServer中Alter语句的运用。查看当前数据库的表:SHOW TABLES;

    由于2.3已经把author表删了,所以先根据2.1创建回该表,然后插入一些数据;

    新葡亰496net 14

    仅仅复制表的结构

    CREATE TABLE copy LIKE author;

    复制表的结构 数据

    CREATE TABLE copy2 SELECT * FROM author;

    只复制部分数据

    CREATE TABLE copy3 SELECT id,au_name FROM author WHERE nation='中国';

    仅仅复制某些字段

    CREATE TABLE copy4 SELECT id,au_name FROM author WHERE 0;

    DROP DATABASE IF EXISTS 旧库名;

    CREATE DATABASE 新库名;

    DROP TABLE IF EXISTS 旧表名;

    CREATE TABLE 表名();

    关注公众号:Java后端生活,干货文章第一时间送达!

    新葡亰496net 15

    本文由新葡亰496net发布于网络数据库,转载请注明出处:数量定义语言,SqlServer中Alter语句的运用

    关键词: