[toc]
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中
xxxxxxxxxx2011、将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 scoretab16fields 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 "分隔符";
练习
xxxxxxxxxx1011、把sanguo表中英雄的姓名、攻击值和国家三个字段导出来,放到 sanguo.csv中2 select name,attack,country from country.sanguo3 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.user8 into outfile '/var/lib/mysql-files/user2.txt'9 fields terminated by ' '10 lines terminated by '\n';注意
xxxxxxxxxx211、导出的内容由SQL查询语句决定22、执行导出命令时路径必须指定在对应的数据库目录下
表的复制
1、表能根据实际需求复制数据
2、复制表时不会把KEY属性复制过来
语法
xxxxxxxxxx11create table 表名 select 查询命令;练习
xxxxxxxxxx511、复制sanguo表的全部记录和字段,sanguo22 create table sanguo2 select * from country.sanguo;32、复制sanguo表的前3条记录,sanguo343、复制sanguo表的 id,name,country 三个字段的前3条记录,sanguo45 create table sanguo select id,name,country from sanguo limit 3;注意
复制表的时候不会把原有表的 KEY 属性复制过来
复制表结构 create table 表名 select 查询命令 where false;
锁(自动加锁和释放锁)
全程重点,理论和锁分类及特点
目的
解决客户端并发访问的冲突问题
锁类型分类
xxxxxxxxxx21读锁(共享锁):select 加读锁之后别人不能更改表记录,但可以进行查询2写锁(互斥锁、排他锁):加写锁之后别人不能查、不能改
锁粒度分类
表级锁 :myisam 行级锁 :innodb
存储引擎
基本操作
xxxxxxxxxx411、查看所有存储引擎22、查看已有表的存储引擎33、创建表时指定存储引擎44、已有表指定存储引擎常用存储引擎特点
InnoDB特点
xxxxxxxxxx311、支持行级锁22、支持外键、事务操作33、表字段和索引同存储在一个文件中MyISAM特点
xxxxxxxxxx211、支持表级锁22、表字段和索引分开存储如何决定使用哪个存储引擎
xxxxxxxxxx211、执行查操作多的表用 MyISAM22、执行写操作多的表用 InnoDB
MySQL的用户账户管理
开启MySQL远程连接
x1添加授权用户
xxxxxxxxxx411、用root用户登录mysql2 mysql -uroot -p12345632、授权4 grant 权限列表 on 库.表 to "用户名"@"%" identified by "密码" with grant option;权限列表
all privileges 、select 、insert … …
库.表 : * . * 代表所有库的所有表
示例
xxxxxxxxxx211、添加授权用户tiger,密码123,对所有库的所有表有所有权限22、添加用户rabbit,对db2库有所有权限今日作业
1、把 /etc/passwd 文件的内容导入到数据库的表中
xxxxxxxxxx11tarena:x:1000:1000:tarena,,,:/home/tarena:/bin/bash
2、Day01的md文件中的外键及查询作业题
