mysqlデータベース-すべてのクエリー構文
9084 ワード
,
,
mysql -uroot -p
quit exit ctrl+d
,
:select version();
:select now();
\D
\U
1.クエリー
--
-- select * from ;
select * from students;
--
-- select 1, 2,... from ;
select name,age from students;
-- as
-- select as .... from ;
select name as ' ',age as ' ' from students; -- as
select name ' ',age ' ' from students;
-- sql
select students.* from students;
select python_test_1.students.* from students;
--
-- sql
-- select . .... from ;
select students.name,students.age from students;
-- as
-- select . .... from as ;
select s.name, s.age from students as s; -- sql students;
--
-- distinct
--
select gender from students;
--
select distinct gender from students;
select distinct id,gender from students;
2.条件照会
select * from students where 1 > 0;
--
-- >
-- 18
-- <
-- 18
-- >=
-- <=
-- 18
-- = '=='
-- 18
-- != <> !
select * from students where age != 18;
-- <>
--
-- and
-- 18
select * from students where age > 18 and gender = 2;
-- or
-- 18 180( )
select * from students where age > 18 or height >= 180;
-- not
-- 18
select * from students where age != 18;
select * from students where not age = 18;
-- 18
select * from students where age <= 18 and gender = 2;
--
-- like
-- %
-- " "
select * from students where name like " %";
select * from students where name like "% %";
-- _
-- 2
select * from students where name like "__";
-- 3
select * from students where name like "___";
-- rlike
-- match findall re
-- r"[a-z]{6}"
--
select * from students where name rlike "^ .*";
select * from students where name rlike "^ .* $";
--
-- in
-- 18、34
select * from students where age = 18 or age = 34;
select * from students where age in (18, 34);
-- not in
-- 18、34
select * from students where age not in (18, 34);
-- 18、34
select * from students where age < 18 or age > 34;
-- 18 ~ 34
select * from students where not (age < 18 or age > 34);
-- between ... and ...
-- 18 34
select * from students where age between 18 and 34;
-- not between ... and ...
-- 18 34
select * from students where age not between 18 and 34;
select * from students where not age between 18 and 34;
-- null
--
# select * from students where height = null;
select * from students where height is null;
--
select * from students where height is not null;
3.並べ替え大から小へ->降順並べ替え小から大へ->昇順並べ替え
-- order by asc
-- asc ,
-- 18 34 ,
select * from students where age between 18 and 34 and gender = 1 order by age asc;
-- desc
-- desc ,
-- 18 34 ,
select * from students where age between 18 and 34 and gender = 2 order by height desc;
-- order by order by age asc, height desc
-- 18 34 , ,
select * from students where age between 18 and 34 and gender = 2 order by height desc,age asc;
-- 18 34 , , , id
select * from students where age between 18 and 34 and gender = 2 order by height desc,age asc,id desc;
-- 、
select * from students order by age asc, height desc;
, asc ,
4.集約関数-->統計のために生成
--
--
select count(*) from students;
select count(id) from students;
-- count(*)
-- count(*) , :count(id)--> --> NULL
-- ,
select count(*) from students where gender = 1;
select count(*) from students where gender = 2;
--
-- max()
--
select max(age) from students;
--
select max(height) from students where gender = 2;
--
# select max(age),name from students where gender = 2;
select name from students where age = (select max(age) from students);
# : select name, max(height) from students;
--
-- min()
--
-- sum()
--
select sum(age) from students;
--
select sum(age) / count(*) from students;
# select sum(height) / count(*) from students;
select sum(height) / count(height) from students;
--
-- avg()
--
select avg(age) from students;
--
select sum(height) / count(height) from students;
-- round(123.23 , 1) 1
-- , 2
select round(avg(age),2) from students;
-- 2
5.グループ化
-- group by
--
select gender from students;
--
select distinct gender from students;
--
select gender from students group by gender;
--
select gender,count(*) from students group by gender;
--
: select gender, group_concat(name) from students group by gender;
: select gender,name from students group by gender;
: select gender, * from students group by gender;
, ..
, , ..
--
select gender,group_concat(name,height) from students group by gender;
--
select count(*) from students where gender = 1;
--
select gender, count(*) from students group by gender having gender = 1;
-- having where
-- having
-- having
--
select gender, count(*) from students group by gender having gender != 1;
select gender, count(*) from students group by gender having not gender = 1;
# select gender, count(*) from students group by gender not having gender = 1;
-- having
-- avg(age)
select gender, avg(age) from students group by gender;
-- avg(age), , ,
select gender, avg(age),max(age), avg(height), max(height) from students group by gender;
-- 30 , 30
select gender,group_concat(name) from students group by gender having avg(age) > 30;
-- having where
having
where
having group by group by having
6.ページング
-- limit start, count
-- start , 0 ,
-- count,
select * from students limit 5;
n(n 1 ), m
limit (n - 1) * m, m;
1
select * from students limit 0,5;
2
select * from students limit 5,5;
3
select * from students limit 10,5;
-- 4 , 3 ,
select * from students limit 8,4 order by age asc;
select * from students order by age asc limit 8,4;
7.接続クエリー2つのテーブルをある条件で結合する
--
-- : students;
-- : classes
select students.name,classes.name from students,classes where students.cls_id = classes.id;
select * from students,classes;
--
--
-- A B
-- A inner join B... on A.cls_id = B.id
select students.name, classes.name from students inner join classes on students.cls_id = classes.id;
select s.name, c.name from students as s inner join classes as c on s.cls_id = c.id;
select * from students as s inner join classes as c on s.cls_id = c.id;
-- 、 ( )
select s.name, c.name from students as s inner join classes as c on s.cls_id = c.id;
-- , 1
select c.name, s.name from students as s inner join classes as c on s.cls_id = c.id;
-- ,
select c.name, s.name from students as s inner join classes as c on s.cls_id = c.id order by s.name asc;
-- : left join + right join
-- left join
--
-- ( + )
select * from students as s left join classes as c on s.cls_id = c.id;
-- right join
-- , left join
--
--
--
select c.name, s.name from students as s join classes as c on s.cls_id = c.id;
select c.name, s.name from students as s cross join classes as c on s.cls_id = c.id;
--
select * from students as s left outer join classes as c on s.cls_id = c.id;
--
-- alter table goods drop foreign key ;
--
alter table goods drop foreign key goods_ibfk_1;
--
show create table goods;