day06 mysql增強

數據的備份(不用登陸mysql):

       導出:mysqldump u用戶名 p密碼 數據庫名>生成的腳本文件路徑;php

                demo:
java

                            mysqldump -uroot -proot test1>e:/chuanzhi/note/da1.sqlmysql

       導入(數據庫必須有):mysql -u用戶名 -p用戶名 數據庫<要導入的數據庫的腳本路徑ios

                demo: sql

         mysql -uroot -proot test1<e:/chuanzhi/note/da1.sql數據庫

   注意:數據在哪邊,口就朝向哪邊。工具

自增auto_increment:

        注意:
ui

                (1)該字段必須是數值類型
spa

                (2)該字段必須是主鍵
事務

                demo: 

                        create table users(id int primary key auto_increment,username varchar(32));

插入數據:

    (1)insert into users values(1,'zhangsan');

    (2)insert into users values('lisi');

    (3)insert into users (username)values('wangwu');

視圖工具(SQLyog)

             導入數據:

                           若是原始的數據庫和將要導入的數據庫不一致時,不會導入成功。

                    解決辦法:

                            刪除原始庫中的這一行:

                                        use 庫名;

外鍵(foreign key

    做用:保證了數據的完整性。

建立外鍵

             create table cars(id int primary key auto_increment,name varchar(32),uid   int,foreign key(uid) references users(id));

 笛卡爾積(錯誤的歷史問題)

    SELECT username,carname FROM users,cars;


查詢:

條件查詢:

    select u.username,c.name from users u,cars c where c.uid=u.id;

內鏈接查詢:

       Inner join on

                select u.username,c.name from users u inner join cars c on c.uid=u.id;(和上述條件查詢同樣的結果)

左外鏈接查詢:

       Left join on

                 select u.username,c.name from users u left join cars c on c.uid=u.id;

右外鏈接查詢:

       Right join on

                select u.username,c.name from users u right join cars c on c.uid=u.id;

區別:

         左鏈接以左邊的表爲主表,左邊爲空的數據會顯示出來。

         反過來同樣。

 多表:

            書寫格式:

                    select  字段  from  表名  鏈接方式(內左右) 表名  on  條件

             鏈接方式(內左右) 表名  on  條件

                 ........

自鏈接查詢:

       看成兩個表,取的別名不同便可

         demo:

                     select e.employee,m.employee from emply e,emply m where e.manager=m.employid;

事務:

       Start transation

       Commit

       Rollback

(commit提交以後回滾不了)

一對一: 

        例子:主表  Person   (id  name)

                  子表   身份證號   (id)

                  子表的:主鍵又是外鍵                    

多對多(中間加一個表,轉換成多個一對多):

例子(學生選課):

--  學生表

CREATE  TABLE  students(

  

   id INT PRIMARY KEY,

   username VARCHAR(32)


);

-- 課程表


CREATE TABLE course(

  id  INT PRIMARY KEY,

  cname VARCHAR(32)


);


--  中間表


CREATE  TABLE  sc(

   

    sid INT,

    cid INT ,

    PRIMARY  KEY(sid,cid),

    FOREIGN KEY (sid) REFERENCES students (id),

    FOREIGN KEY (cid) REFERENCES course (id)


)


--  插入student數據


INSERT INTO  students VALUES(1,'zhangsan');

INSERT INTO  students VALUES(2,'lisi');

INSERT INTO  students VALUES(3,'lili');


-- 插入課程


INSERT INTO  course  VALUES (1,'java');

INSERT INTO  course  VALUES (2,'php');

INSERT INTO  course  VALUES (3,'ios');


--  選課


INSERT INTO  sc VALUES (1,3);

INSERT INTO  sc VALUES (2,1);

INSERT INTO  sc VALUES (3,2);



--  某人選擇某課 


SELECT  username,cname FROM students s INNER JOIN  sc ON s.id = sc.sid

                                       INNER JOIN  course c ON  sc.cid = c.id;  

                                       

SELECT  username,cname FROM students s LEFT JOIN  sc ON s.id = sc.sid  

                                       LEFT JOIN  course c ON  sc.cid = c.id ;  


SELECT username,cname FROM  students s RIGHT JOIN  sc ON  s.id = sc.sid

                                      RIGHT JOIN   course c ON sc.cid = c.id                                  

相關文章
相關標籤/搜索