sql 添加外键语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 添加外键语句相关的知识,希望对你有一定的参考价值。

在sql server2000,对已建好的表,我需要添加外键,如何用语句实现?注意哦,我想要通过语句实现

为数据库表添加外键方法(以SqlSever2005数据库为例):

1、新建两张表,一张为主表,一张为副表。主表里的外键就是连接到副表的主键。

2、首先在主表中添加一个外键字段,如下:


3、在主表上右击,选择关系,如下:

4、点击“添加”。

5、再点击上图中标出的位置,如下:

6、图中标出的“主键表”就选择上面的副表。如下:

7、主键表底下的就选择副表的主键,如下:

8、外键表底下的就选择刚才新建的外键字段。如下:

9、再点击“确定”。

10、点击“是”,即可完成外键的添加。

参考技术A

1、以具有 DBA 权限的用户身份连接到数据库,执行 ALTER TABLE 语句,将表定义更新为包括外键定义。创建一个名为 Skills 的表,其中包含潜在技能列表,然后创建一个与 Skills 表具有外键关系、名为 EmployeeSkills 的表。

2、也可以在创建完表后使用 ALTER TABLE 语句将外键添加到该表。在下例中,将创建与上例中类似的表,唯一不同之处是在创建表后再添加外键。

3、可以在创建外键时指定外键的属性。例如,以下语句将创建与示例 2 中相同的外键,但它将外键定义为 NOT NULL,同时定义更新或删除时的限制。

参考资料:百度百科外键

参考技术B 使用以下sql语句: alter table 需要建立外键的表 add constraint 外键名字 foreign key references 外键表(外键字段) ,本回答被提问者采纳 参考技术C alter table 需要建立外键的表 add constraint 外键名字 foreign key (需要建立外键的字段名) references 外键表(外键字段) 参考技术D alter table 表名 add constraint 约束名 约束内容

例:
alter table test add constraint CK_column check(column<100)

MYSQL添加外键

 给商品表(从表)添加一个外键

ALTER TABLE product ADD CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES category(cid  从表);






sql语句的执行顺序是:from-->WHERE-->GROUP BY -->HAVING --- >ORDER BY --> SELECT;




sql语句的编写顺序是:select  ->  FROM  -> WHERE  -> GROUP BY ->  HAVING  -> ORDER BY;

转换代码:convert(字段名 using gbk)


命令启动:services.msc   找到MySQL启动
dos窗口启动cmd  MySQL -u root{默认账户} -p   显示输入密码没有密码直接回车
创建数据库:create database 名字;
查看数据库:show databases;


创建表:CREATE TABLE s(id INT(50),NAME VARCHAR(50),sex CHAR(2),birthday DATETIME);
date(精确到年月日)datetime(精确到年月日时分秒)

删除表:drop table customer;





ALTER TABLE kehu RENAME customer; -- 修改表名


ALTER TABLE customer ADD age INT(20); -- 增加表字段


ALTER TABLE customer DROP sex; -- 删除表字段


ALTER TABLE customer CHANGE 字段名 xinming VARCHAR(50); -- 修改表字段



插入数据(录入数据):
INSERT INTO customer(id,NAME,sex,birthday)VALUE(888,‘李四‘,‘男‘,‘1997-12-9‘);


数据类型varchar(字符串) int(整数) char(字符) date datetime  就只有这几种
补充 tinyint -(整数,但是只有255位 -127 to 128(有符号)0 to 255(无符号) )一般用于年龄



    表约束:
主键(primary key):物理上存储的顺序
        非空(not null):此字段不允许填写空值

        惟一(unique):此字段的值不允许重复
        
默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准

        外键(foreign key):维护两个表之间的关联关系






        UNSIGNED
            无符号的
            声明该数据列不允许负数
        ZEROFILL
            0填充的
            不足位数的用0来填充,如 int(3),5则为 005
        AUTO_INCREMENT
            自动增长的,每添加一条数据,自动在上一个记录数上加1
            通常用于设置主键,且为整数类型
            可定义起始值和步长


    -- 查询表数据

     ·  SELECT sid,sname FROM student;
        单字段查询(执行效率高)
        SELECT * FROM student;   
        全表查询

用*是全表查询(执行效率低),


        条件查询:

    -- 需求一:查询学号为111的学 生信息


    SELECT * FROM student WHERE sid = 111
;


    -- 需求二:查询一个叫老王的同学


    SELECT * FROM student WHERE sname = ‘老王‘;



    -- 需求三:查询出姓王的同学(模糊查询)


    SELECT * FROM student WHERE sname LIKE ‘王%‘;



        distinct  (在select后面的*前面加,表示去重复)

--删除表数据

    -- 删除表数据

    DELETE FROM s WHERE sid = 222;




-- 修改表数据

    UPDATE  s SET sname = ‘七七‘ WHERE sid = 777;



--别名
 
    别名可以运用到列上,也可以运用在表上

 也可以用在函数上
    SELECT sid AS ‘学号‘,sname AS ‘姓名‘,sbirthday AS ‘出生日期‘ FROM 表名;
    改别名数据库:student AS s;



--条件查询:


    比较运算符:
等于: =

    大于: >

    大于等于: >=

    小于: <
    
小于等于: <=
    
    不等于: != 或 <>


--逻辑运算符:

    and --和
 (要符合所有条件才会筛选出来)
    or  --或者(符合其中任意一项就可以出来)
    
not --非(no)




--模糊查询:
like

    %表示任意多个任意字符
_表示一个任意字符



--范围查询:
in
    表示在一个非连续的范围内

    between ... and ...表示在一个连续的范围内




--空判断:

    注意:null与‘‘是不同的

    判空is null
判非空is not null
    (筛选出有空出或者没空出的格子)



-- order by表示排序,默认是正序排,列名的后面加上desc之后是倒叙排列


    
SELECT * FROM student ORDER BY sscore;


-- 需求将学生表里面的学生成绩倒序排列


    SELECT * FROM student ORDER BY sscore DESC;


-- 聚合函数

1,统计--count

2,平均--avg

3,最大值--max

4,最小值--mIN

5,求和--sum



--精确小数的函数    round(小数点后几位)
--double(20,2)表示小数类型,20表示20位数字长度,2表示精确到小数点后两位


--分页查询(limit)
假设每页m条数据,现在要看n页那么
select * from 表名 limit (n-1)×m,m;


--分组(group by)
统计出男生女生多少人----------select xingbie count(sid) from 表名 group by xingbie




-- 主外键的作用:
不是为了进行多表查询,没有主外键照样可以连接起来多表查询
那么主外键的作用是:主键为了保证数据的唯一性
,外键为了保证数据的完整性(主表的数据被从表引用,那么主表里面相关联的数据不能随意更改或删除)



--

连接查询:

    1,等值查询

    SELECT * FROM A,B WHERE A.CID = B.CID;

    2,内连接查询

    SELECT * FROM A INNER JOIN B ON a.cid = B.cid
 

    
外连接查询:左外连接和右外连接

    3,左外链接
    SELECT * FROM A LEFT JOIN B ON a.cid = B.cid

    
内连接查询和左外连接查询的区别:


    
-- 内连接查询出分类名称里面的商品
        -- 内连接:没有关联的数据不显示

    SELECT * FROM category c INNER JOIN product p ON c.cid = p.cno


    -- 左外连接查询出分类名称里面的商品
        --左外连接:没有关联的数据也会显示,右表没有值的数据用null表示.

    SELECT * FROM category c LEFT JOIN product p ON c.cid = p.cno






    事务的定义:(begin)-起始  (commit)-结束,提交  (rollback)- 回滚(撤销)
把一连串的操作放在一起,要么全部成功,要么全部失败。

事务的四个特性:原子性、一致性、隔离性、持久性


事务的作用:保证数据的一致性!


为什么要这样做:银行转账,有一方转出,另一方由于机械故障未收到钱,那么转出方肯定不干。









    存储过程:
就是为了可重复的执行操作数据库的 sql 语句的集合.

存储过程是一次编译,就会被缓存起来,下次使用就直接命中缓存中已经编译好的

 sql,
存储过程作用:
1,不需要重复编译

2,减少网络交互

3,减少网络访问流量


    自关联       意思就是说同一个表分成几个别,这些表都取别名,然后自己向关联,关联相同点。

- 要查询出广东省里面的市和区(使用左外连接)

SELECT * FROM areas a LEFT JOIN areas b ON a.aid = b.pid LEFT JOIN areas c  ON c.`pid` = b.`aid`
WHERE a.aname = ‘广东省‘

以上是关于sql 添加外键语句的主要内容,如果未能解决你的问题,请参考以下文章

sql 删除带外键约束的表的语句是啥

SQL语句删除和添加外键主键

ORACLE语句怎么删除外键约束,只是删约束,不是删表

数据库语句怎么加外键

外键SQL语句的编写

sql怎么设置外键