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 transationCommit
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
相关文章推荐
- 访问阿里云mysql数据库
- 访问阿里云mysql数据库
- 在32位Win7下安装MySQL5.7.10安装配置过程
- 业内大神浅谈MYSQL联合查询
- 21分钟 MySQL 入门教程
- MySQL C API programming tutorial
- mysql驱动引起的jdbc4.MySQLSyntaxErrorException: Unknown character set: 'utf8mb4'问题解决
- 可能安卓就是连不上mysql吧
- 如何使用命令查看MYSQL的版本信息
- mysql乱码
- 安装mysql5.5 解压
- mysql阅读笔记七
- MYSQL数据库的优化
- VS2013使用EF6与mysql数据库
- VS2013 EF6连接MySql需要几步?
- VS2012+EF6+Mysql配置心路历程 - GameMan
- mysql开放远程连接
- mysql explain 执行计划解读
- Mysql limit 分页机制和优化实例
- 压缩包安装mysql