初識Mysql(三)
1.1 查看默認使用的目錄及目錄是否存在:
mysql> show variables like "secure_file_priv";
數據導入導出使用的目錄:/var/lib/mysql-files/
1.2 修改目錄
vim /etc/my.cnf #修改配置文件中導入數據存放的路徑
[mysqld]
secure_file_priv=”/myload”
mkdir /myload ;chown mysql /myload #創建目錄及修改所有者(mysql寫)
systemctl restart mysqld #重啟服務
註意selinux需要關閉
mysql> show variables like "secure_file_priv"; #此時路徑已改變
1.3 導入格式
load data infile “目錄名/文件名” into table 表名
fields terminated by “分隔符”
lines terminated by “\n”;
2 數據導出
2.1 導出格式
select 字段名(*) from 表名 into outfile “/目錄/文件” ;
fields terminated by “分隔符”lines terminated by “\n”; #可加可不加
3 管理表記錄
3.1 增 插入表記錄
一次插入1條記錄給所有字段賦值
insert into 表名 values(值列表);
一次插入多條記錄給所有字段賦值
insert into 表名 values(值列表),(值列表),(值列表);
一次插入1條記錄給指定字段賦值
insert into 表名(字段名) values(值列表);
一次插入多條記錄給指定字段賦值
insert into 表名(字段名) values(值列表),(值列表),(值列表);
3.2 查詢表記錄
3.2.1單表查詢
select 字段名 from 表名;
select 字段名 from 表名 where 條件;
3.2.2where嵌套查詢
把內層查詢結果作為外查詢的條件
同表查詢:
select 字段名 from 表1 where 條件 (select 字段名 from 表1);
select 字段名 from 表1 where 條件(select 字段名 from 表1 where條件);
不同表查詢:
select 字段名 from 表1 where 條件 (select 字段名 from 表2);
select 字段名 from 表1 where 條件 (select 字段名 from 表2 where條件);
3.2.3多表查詢:
格式1:select 字段 from 表1,表2; (笛卡爾集,多匹配少,出現重復)
格式2:select 字段 from 表1,表2 where 條件;
連接查詢:
內連接查詢:select 字段 from 表1,表2;
外連接查詢:
左連接查詢(以左表記錄為主)
select 字段 from 表1 left join 表2 on 條件;
右連接查詢(以右表記錄為主)
select 字段 from 表1 right join 表2 on 條件;
案例:新建兩張表,分別取/etc/passwd的前3和前5行
select * from t3,t4;
select * from t3,t4 where t3.name=t4.name;
select * from t3 left join t4 on t3.uid=t4.uid ;
select * from t3 right join t4 on t3.uid=t4.uid ;
select t3.* from t3 left join t4 on t3.uid=t4.uid ;
select t3.shell from t3 left join t4 on t3.uid=t4.uid ;
3.3 匹配條件的表示方式
3.3.1 數值比較
= ; <>或!= ; > ; < ; >= ; <= ; between ...and ; like ;
where 字段名 between 值1 and 值2; #在...之間
3.3.2 邏輯比較
or ; and ; ! (多個查詢條件)
in ; not in ;
where 字段名 in(值列表); #在...內
where 字段名 not in(值列表); #不在...內
is null ; is not null;
select * from userinfo where user=””;
select * from userinfo where user=”null”;
select * from userinfo where 字段 is null;
distinct
select distinct 字段 from 表名; #從字段中篩選出不同的值
3.3.3 運算操作
+ - * / %
mysql> select user,2018-s_year as age from userinfo
where user="root";
mysql> select uid,gid,uid+gid as sum from userinfo
where user="mysql";
mysql> select uid,gid,uid+gid as sum,(uid+gid)/2 as avg
from userinfo where user="mysql";
3.3.4 模糊查詢 like
where 字段名 like “通配字串”;
_ : 匹配單個字符
% : 匹配0個或多個字符
3.3.5使用正則表達式
where 字段名 regexp ‘正則表達式’;
3.4 常用函數
avg() : 集合的平均值
sum() : 對集合的各參數求值
min() : 集合中的最小值
max() : 集合的最大值
count() : 記錄的個數 #空值不計算在內
3.5 查詢結果排序/分組
order by 字段名 [asc|desc];
select查詢 order by 字段名 asc/desc;
group by 字段名 [having 條件表達式]
select查詢 group by 字段名
和select distinct查詢一樣(查找不重復的)
limit n,m #限制顯示記錄條目數
n 表示起始行 第一行的編號是0 m 表示總行數
mysql> select *from userinfo limit 1,1; #顯示第二行(1行以後的1行)
3.6 更新記錄
update 表名 set 字段=值,字段=值; #批量修改
update 表名 set 字段=值,字段=值 where 條件; #按條件修改
3.7 刪除記錄
delete from 表名;#刪除所有
delete from 表名 where 條件: #刪除符合條件的
truncate table 表名; #快速刪除所有數據
3.8 表的復制及改名
將源表xxx復制為新表yyy
create table yyy select * from xxx;
將指定的查詢結果復制為新表zzz
create table zzz select查詢;
註意:復制過來的新表的key值是無法繼承的;
將源表的結構復制到新表vvv
create table vvv select * from xxx where false;(false條件不成立)
將源表改名為mmm
alter table xxx rename to mmm;
初識Mysql(三)