1. 程式人生 > >數據導入、導出、管理表記錄、

數據導入、導出、管理表記錄、

連接 lin ima 工資 creat BE 分隔 ali for

數據導入: 把系統文件的內容存儲到數據庫服務器的表裏
load data infile “目錄名/文件名” into table 庫名.表名
FIELDS TERMINATED BY “分隔符” LINES TERMINATED

BY “\n”;


load data infile "/etc/passwd" into table userdb.user

fields terminated by ":" lines terminated by "\n";

例子:把系統用戶信息存儲到數據庫服務器的表裏
/etc/passwd
用戶名:密碼站位符號:uid:gid:描述信息:家目錄:shell

create database userdb;
create table userdb.user(
name varchar(35),
password char(1),
uid int(2),
gid int(2),
comment varchar(60),
homedir varchar(60),
shell varchar(30),
index(name)
);

mysql> show variables like "secure_file_priv";

#cp /etc/passwd /var/lib/mysql-files/

mysql > load data infile "/var/lib/mysql-files/passwd"

into table userdb.user fields terminated by ":"

lines terminated by "\n";

mysql> alter table userdb.user add id int(2) zerofill

primary key auto_increment first;


自定義數據導入時文件所在的目錄
#mkdir /mydata
#chown mysql /mydata
#setenforce 0
#cp /etc/passwd /mydata/
vim /etc/my.cnf
[mysqld]
secure_file_priv= /mydata
:wq
#systemctl restart mysqld

數據導出:把表記錄存儲到系統文件裏
mysql> show variables like "secure_file_priv";

sql查詢命令 INTO OUTFILE “目錄名/文件名“;

sql查詢命令 INTO OUTFILE “目錄名/文件名“ fields

terminated by "符號" lines terminated by "符號";

mysql>select * from userdb.user where id=18 into

outfile "/var/lib/mysql-files/user1.txt";

mysql> system cat /var/lib/mysql-files/user1.txt
++++++++++++++++++++++++++++++++++
管理表記錄(增 查 改 刪)(userdb.user)
insert into 增加表記錄

一次插入1條記錄給所有字段賦值
insert into 庫名.表名 values(值列表);

一次插入N條記錄給所有字段賦值
insert into 庫名.表名 values(值列表),(值列表),(值列表);

插入記錄時只給指定的字段賦值
insert into 庫名.表名(字段名列表)values(值列表);
insert into 庫名.表名(字段名列表)values(值列表),(值列表),(

值列表);


insert into userdb.user values

(50,"bob","x",2022,2022,"this is

student","/home/bob","/bin/bash");

insert into userdb.user values

(60,"bob","x",2122,2122,"this is

student","/home/bob","/bin/bash"),

(63,"lucy","x",2322,2322,"this is

student","/home/lucy","/bin/bash");

insert into userdb.user(name,uid)values("tom",2300),

("alic",2987);


insert into userdb.user

(name,password,uid,gid,comment,homedir,shell)

values

("yaya","x",3003,3003,"teacher","/home/yaya","/bin/ba

sh");


select 查詢表記錄
單表查詢
查詢表中所有記錄所有字段的值
select * from 庫.表 ;

查詢表中所有記錄指定字段的值
select 字段名列表 from 庫.表 ;

查詢表中符合條件記錄指定字段的值
select 字段名列表 from 庫.表 where 條件;


查詢條件的表示方式?
1 數值比較 > >= < <= = !=
字段名 符號 數字
select name,uid from userdb.user where uid<10;
select * from userdb.user where id<=5;

2 字符比較 = !=
字段名 符號 “字符串”
select name from userdb.user where name="apache";
select name from userdb.user where shell="/bin/bash";

select name,shell,uid from userdb.user where

shell="/bin/bash";

select name from userdb.user where name!="root";

3 範圍內查找
in (值列表) 在...裏
not in (值列表) 不在...裏
between....and... 在...之間

select name from userdb.user where uid in (10,20,30);

select id,name from userdb.user where name in (

"mysql","rysnc","bob");

select name from userdb.user where shell not in

("/bin/bash","/sbin/nologin");

select name,shell,uid from userdb.user where shell not

in ("/bin/bash","/sbin/nologin");

select name,uid from userdb.user where uid between

10 and 20;

select id,name,uid from userdb.user where id between

30 and 40;

多個查詢條件
邏輯與 and 多個查詢條件必須同時成立
邏輯或 or 多個查詢條件某一個條件成立就可以
邏輯非 ! 取反

select name from userdb.user where name="apache"

and uid=1200 and shell="/bin/bash";

select name from userdb.user where name="apache"

or uid=2 or shell="/bin/bash";

select name,uid,shell from userdb.user where

name="apache" or uid=2 or shell="/bin/bash";

select name,uid from userdb.user
where
name="root" or name="bin" and uid=1;


select name,uid from userdb.user
where
name="root" and name="bin" or uid=1;


select name,uid from userdb.user
where
(name="root" or name="bin" ) and uid=2;


select name,uid from userdb.user
where
(name="root" or name="bin" ) and uid=1;

DISTINCT 不顯示重復的值
select distinct shell from userdb.user;
select distinct shell from userdb.user where

uid<1000;

is null 匹配空
is not null 匹配非空
insert into userdb.user(id ,name)values(66,NULL),

(67,null),(68,"null"),(69,"");

select id , name from userdb.user where name is null;
select id , name from userdb.user where name is not

null;

select id , name from userdb.user where name="null";
select id , name from userdb.user where name="";

四則運算 + - * / %
alter table userdb.user
add linuxsys tinyint(2) default 60 after name,
add linuxser tinyint(2) default 80 after linuxsys;

alter table userdb.user
add age tinyint(2) unsigned default 20 after name;

select name,linuxsys,linuxser from userdb.user;

select name,linuxsys,linuxser from userdb.user where

name="root";

select name,linuxsys,linuxser,linuxsys+linuxser as zcj

from userdb.user where name="root";

select name,linuxsys,linuxser,linuxsys+linuxser as zcj,

(linuxsys+linuxser)/2 as pjf from userdb.user where

name="root";

select name,age from userdb.user where name="root";

select name,age,2017-age as s_year from userdb.user

where name="root";

聚集函數(做數據統計的內置命令)
sum(字段名) 求和
avg(字段名) 平均值
min(字段名) 最小值
max(字段名) 最大值
count(字段名) 個數

select sum(linuxsys) ,avg(linuxsys) from userdb.user;

select sum(linuxsys) ,avg(linuxsys) from userdb.user
-> where
-> uid<=10;

select min(uid) from userdb.user where

shell="/bin/bash";

select max(uid) from userdb.user where

shell="/bin/bash";

select count(id) ,count(name) from userdb.user;

select count(name) from userdb.user where

shell="/bin/bash";

模糊匹配
like ‘表達式’
% 零個或多個字符
_ 任意單個字符

select name from userdb.user where name like ‘____‘;

select name,uid from userdb.user
where name like ‘%a%‘;

select name,uid from userdb.user
where name like ‘a%‘;

select id,name,uid from userdb.user
where name like ‘%‘;

select id,name,uid from userdb.user
where name like ‘_a_‘;

select id,name,uid from userdb.user
where name like ‘r__t‘;

select id,name,uid from userdb.user
where uid like ‘____‘;

select id,name,uid from userdb.user
where uid like ‘%_%‘;

select name,id from userdb.user where name like ‘%_%‘

and name="";

select name,uid from userdb.user where name like

‘____‘ and uid>=1000;

正則匹配
regexp ‘正則表達式‘
^ $ . * []

insert into userdb.user(id , name)values(71,"yaya3"),

(72,"9yaya"),(73,"ya7ya"),(74,"yay6a");

select name from userdb.user
where
name regexp ‘[0-9]‘;


select name from userdb.user
where
name regexp ‘^[0-9]‘;

select name from userdb.user
where
name regexp ‘[0-9]$‘;


select name from userdb.user
where
name regexp ‘.....‘;


select name from userdb.user
where
name regexp ‘^.....$‘;

select name,uid from userdb.user
where
uid regexp ‘...‘;

select name,uid from userdb.user
where
uid regexp ‘^...$‘;

insert into userdb.user(id ,name)values(80,"ro");

select id,name,uid from userdb.user
where name regexp ‘^r.*o$‘;

select id,name,uid from userdb.user
where name regexp ‘.*‘;

限制顯示查詢記錄數
limit 數字 顯示查詢結果的前幾行

limit 起始行,總行數
起始行的編號從零開始

select * from userdb.user;
select * from userdb.user limit 3;
select * from userdb.user where uid <=10 limit 5;

select * from userdb.user limit 1,3;

mysql> select * from userdb.user where uid <=10

limit 2,3;

查詢排序
order by 字段名 asc/desc

select name,uid,shell from userdb.user where shell!

="/bin/bash" and shell is not null order by uid;

select name,uid,shell from userdb.user where shell!

="/bin/bash" and shell is not null order by uid desc;

select name,uid,shell from userdb.user where shell!

="/bin/bash" and shell is not null order by uid desc

limt 3;

select name,uid,shell from userdb.user where shell!

="/bin/bash" and shell is not null order by uid limit

5;

select 姓名,工資 from yginfo where age<=30 and 部門

="ope" order by 工資 desc;


查詢分組
group by 字段名;

select shell from userdb.user where uid>=10 and

uid<=40 ;

select shell from userdb.user where uid>=10 and

uid<=40 group by shell;

select gid from userdb.user group by gid;

select shell from userdb.user group by shell;

select gid from userdb.user group by gid having gid=1;

update修改表記錄(修改記錄字段的值)
批量修改
update 庫.表 set 字段名="值",字段名=值;
update userdb.user set linuxser=100,linuxsys=80;

修改與條件匹配的記錄字段的值;
update 庫.表 set 字段名="值",字段名=值 where 條件;
update userdb.user set age=18 where name="root";

update userdb.user set shell=null where name="bin";
update userdb.user set shell="" where name="root";

delete刪除表記錄(以行為單位刪除)
刪除表的所有記錄
delete from 庫.表;

刪除表中與條件匹配的記錄
delete from 庫.表 where 條件;
delete from userdb.user where shell is null;

where嵌套查詢(把內層的查詢結果作為外層查詢的查詢條件)
select 字段名列表 from 庫.表 where 條件 (select 字段名列

表 from 庫.表);

update userdb.user set linuxsys=93 where uid>=10

and uid<=50;

select name,linuxsys from userdb.user where linuxsys

< (select avg(linuxsys) from userdb.user);

select name,linuxsys from userdb.user where linuxsys

> (select avg(linuxsys) from userdb.user);

select name from userdb.user where name in (select

user from mysql.user where user="root" and

host="localhost");
+++++++++++++++++++++++++++++++++++++++++++++
復制表
作用: 1 快速創建新表
2 備份表
create table 庫.表 sql查詢命令;

create table userdb.user2 select * from userdb.user;

create table userdb.user3 select * from userdb.user

where 1 = 2;

create table userdb.top5user select * from

userdb.user order by uid desc limit 5;

create database teadb;
create table teadb.t1 select name,uid,homedir from

userdb.user where uid<=10;
select * from teadb.t1;

多表查詢
select 字段名列表 from 表名列表;
select 字段名列表 from 表名列表 where 條件;

use teadb;
create table t2 select name,uid,homedir from userdb.user limit 3;

create table t3 select name,uid,shell from userdb.user limit 5;

3 x 5 15
select * from t2,t3; 笛卡爾集
select t2.* ,t3.name from t2,t3;

select t2.name,t3.name from t2,t3 where t2.name=t3.name;

select t2.name,t2.homedir,t3.name,t3.shell from t2,t3 where t2.name=t3.name;

連接查詢
左連接查詢:以左邊的表為主顯示查詢記錄
select 字段名列表 from 表名 left join 表名 on 條件;
右連接查詢:以右邊的表為主顯示查詢記錄
select 字段名列表 from 表名 right join 表名 on 條件;
use tead;
create table t4 select name,uid,shell from userdb.user limit 3;
create table t5 select name,uid,shell from userdb.user limit 5;
select * from t4 left join t5 on t4.uid = t5.uid;
select * from t4 right join t5 on t4.uid = t5.uid;

數據導入、導出、管理表記錄、