您的位置:首页 > 数据库 > MySQL

day06 mysql加强

2016-03-06 00:00 169 查看

数据的备份(不用登录mysql):

导出:mysqldump –u用户名 –p密码 数据库名>生成的脚本文件路径;

demo:

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

导入(数据库必须有):mysql -u用户名 -p用户名 数据库<要导入的数据库的脚本路径

demo:

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

注意:数据在哪边,口就朝向哪边。

自增auto_increment:

注意:

(1)该字段必须是数值类型

(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: