1. 程式人生 > >初識Mysql(三)

初識Mysql(三)

-s 表達 tab ike 內連接 查詢條件 having 篩選 delet

1 數據導入

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(三)