MySQL高级-Day02笔记
外键(见Day01笔记)
1、原理
2、级联动作,以及每个级联动作特点
多表查询(见Day01笔记)
1、笛卡儿积是如何匹配的
2、多表查询:在笛卡儿积的基础上进行进一步条件筛选
连接查询(见Day01笔记)
全程重点,整体分类,具体语法实现
数据导入
掌握大体步骤
source 文件名.sql
作用
把文件系统的内容导入到数据库中 语法(方式一)
load data infile "文件名" into table 表名 fields terminated by "分隔符" lines terminated by "\n" 示例 scoretable.csv文件导入到数据库db2的表aid1903中
xxxxxxxxxx
2011、将scoretable.csv放到数据库搜索路径中
2 mysql>show variables like 'secure_file_priv';
3 /var/lib/mysql-files/
4 Linux: sudo cp /home/tarena/scoreTable.csv /var/lib/mysql-files/
52、在数据库中创建对应的表
6 create table scoretab(
7 rank int,
8 name varchar(20),
9 score float(5,2),
10 phone char(11),
11 class char(7)
12 )charset=utf8;
133、执行数据导入语句
14load data infile '/var/lib/mysql-files/scoreTable.csv'
15into table scoretab
16fields terminated by ','
17lines terminated by '\n'
184、练习
19 添加id字段,要求主键自增长,显示宽度为3,位数不够用0填充
20 alter table scoretab add id int(3) zerofill primary key auto_increment first;
语法(方式二)
source 文件名.sql
数据导出
作用
将数据库中表的记录保存到系统文件里
语法格式
select … from 表名 into outfile "文件名" fields terminated by "分隔符" lines terminated by "分隔符";
练习
xxxxxxxxxx
1011、把sanguo表中英雄的姓名、攻击值和国家三个字段导出来,放到 sanguo.csv中
2 select name,attack,country from country.sanguo
3 into outfile '/var/lib/mysql-files/sanguo.csv'
4 fields terminated by ','
5 lines terminated by '\n';
62、将mysql库下的user表中的 user、host两个字段的值导出到 user2.txt,将其存放在数据库目录下
7 select user,host from mysql.user
8 into outfile '/var/lib/mysql-files/user2.txt'
9 fields terminated by ' '
10 lines terminated by '\n';
注意
xxxxxxxxxx
211、导出的内容由SQL查询语句决定
22、执行导出命令时路径必须指定在对应的数据库目录下
表的复制
1、表能根据实际需求复制数据
2、复制表时不会把KEY属性复制过来
语法
xxxxxxxxxx
11create table 表名 select 查询命令;
练习
xxxxxxxxxx
511、复制sanguo表的全部记录和字段,sanguo2
2 create table sanguo2 select * from country.sanguo;
32、复制sanguo表的前3条记录,sanguo3
43、复制sanguo表的 id,name,country 三个字段的前3条记录,sanguo4
5 create table sanguo select id,name,country from sanguo limit 3;
注意
复制表的时候不会把原有表的 KEY 属性复制过来
复制表结构 create table 表名 select 查询命令 where false;
锁(自动加锁和释放锁)
全程重点,理论和锁分类及特点
目的
解决客户端并发访问的冲突问题
锁类型分类
xxxxxxxxxx
21读锁(共享锁):select 加读锁之后别人不能更改表记录,但可以进行查询
2写锁(互斥锁、排他锁):加写锁之后别人不能查、不能改
锁粒度分类
表级锁 :myisam 行级锁 :innodb
存储引擎
基本操作
xxxxxxxxxx
411、查看所有存储引擎
22、查看已有表的存储引擎
33、创建表时指定存储引擎
44、已有表指定存储引擎
常用存储引擎特点
InnoDB特点
xxxxxxxxxx
311、支持行级锁
22、支持外键、事务操作
33、表字段和索引同存储在一个文件中
MyISAM特点
xxxxxxxxxx
211、支持表级锁
22、表字段和索引分开存储
如何决定使用哪个存储引擎
xxxxxxxxxx
211、执行查操作多的表用 MyISAM
22、执行写操作多的表用 InnoDB
MySQL的用户账户管理
开启MySQL远程连接
x1
添加授权用户
xxxxxxxxxx
411、用root用户登录mysql
2 mysql -uroot -p123456
32、授权
4 grant 权限列表 on 库.表 to "用户名"@"%" identified by "密码" with grant option;
权限列表
all privileges 、select 、insert … …
库.表 : * . * 代表所有库的所有表
示例
xxxxxxxxxx
211、添加授权用户tiger,密码123,对所有库的所有表有所有权限
22、添加用户rabbit,对db2库有所有权限
今日作业
1、把 /etc/passwd 文件的内容导入到数据库的表中
xxxxxxxxxx
11tarena:x:1000:1000:tarena,,,:/home/tarena:/bin/bash
2、Day01的md文件中的外键及查询作业题