Mysql基本知识
一、臨時(shí)表
? ? ? ? 1、查詢出來的結(jié)果是一個(gè)臨時(shí)表,可以給臨時(shí)表重命名,方便聯(lián)合查詢或者多層嵌套查詢的時(shí)候用
? ? ? ?
? ? ? ? 2、查詢結(jié)果如果沒有重命令,也可以當(dāng)做值直接用
? ? ? ?有兩個(gè)表:student 和id 表 如下: ?查詢出 ?sid與在 id表中id相同的所有 學(xué)生姓名
? ? ? ? ? ?
? ? ? ??select name from student where sid in (select id from id); ? 注意后面 不加 as a,如果加了的話,?(select id from id)就變成一個(gè)新的表,會(huì)報(bào)語法錯(cuò)誤
? ? ? ? 雖然 select id from id,在界面上顯示的是只含有id一列的表,但是 不給重命名 就是兩個(gè)id值, 可以跟 in、not in、=等結(jié)合使用
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果重命名了,就是一個(gè)表,當(dāng)表來使用
?
?
?
二、聯(lián)合查詢
? ? ? ?最重要的是消除笛卡爾積,連接概念
? ? ? ?內(nèi)連接: inner join、join? ? 查詢出兩個(gè)表符合條件的記錄
?select* from test1 inner join test2 on test1.id=test2.id ?等同于 ?? select*from test1 ,test2 where test1.id=test2.id
? ? ? ?題目:有兩個(gè)表 score成績(jī)表、course課程表,查詢出所有報(bào)名物理課程同學(xué)的學(xué)號(hào)
? ? ? ? ? ? ? ? ? 1、 select student_id,cname from score,course where course_id=cid and cname='wuli';,查詢結(jié)果:
?
? ? ? ? ? ? ? ? ?2、?select student_id,cname from score inner join course on course_id=cid and cname='wuli';,查詢結(jié)果同上
?
? ? ? ?外鏈接:left join? ? 查詢出兩個(gè)表符合條件的記錄,同時(shí)保留左表所有數(shù)據(jù)行
? ? ? ? ? ? ? ? ? ? ?right join? 查詢出兩個(gè)表符合條件的記錄,同時(shí)保留右表所有數(shù)據(jù)行?
? ? ? ? ? ? ? ? ? ? ?full join? ??全外連接是在等值連接的基礎(chǔ)上將左表和右表的未匹配數(shù)據(jù)都加上 ? ?
?
三、分組
select avg(number) avg,student_id from score group by student_id having avg>60
? ? ? ?group by 列名 :將該列下相同值分為一組
? ? ? ?having:分組后條件過濾
? ? ? ?group by 一般和分組函數(shù)一起使用,常見的分組函數(shù)有
? ? ? ? ? ? ? ? ? ? ?count:統(tǒng)計(jì)記錄條數(shù)
sum:求和
avg:平均值
max:最大值
min:最小值
? ? ? ? 如果group不跟分組函數(shù)一起使用,那么該列取值相同的記錄為一組,但是只顯示該組的第一條記錄。
?
四、顯示所有的數(shù)據(jù)庫、顯示所有的表
? ? ? show databases、show tables
五、創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表
? ? ? ?創(chuàng)建數(shù)據(jù)庫: create database oldboy;
? ? ? ?創(chuàng)建表: create table score(
id int(10) primary key not null,
name varchar(10) unique
);
六、數(shù)據(jù)的增刪改
? ? ? ?插入數(shù)據(jù):
插入指令列數(shù)據(jù):insert into 表名(列名1,列名2) values(值1,值2)
? ? ? ? ? ? ? ? ? ? ? 插入所有列數(shù)據(jù):inser into 表名 values()
? ? ? ?刪除:delete from 表名 where ................
? ? ? ?改:update 表名 set name=‘宋曉楠’ where ?...........
七:刪除庫 ?刪表
? ? ? ?drop database 庫名
? ? ? ?drop table ?表名
?八、模糊查詢
? ? ? ? like:“_”匹配任何單個(gè)字符,而“%”匹配任意數(shù)目字符(包括零個(gè)字符)
? ? ? ??
為了找出以“b”開頭的名字:
mysql> SELECT * FROM pet WHERE name LIKE "b%";
?
為了找出以“fy”結(jié)尾的名字:
mysql> SELECT * FROM pet WHERE name LIKE "%fy";
?
為了找出包含一個(gè)“w”的名字:
mysql> SELECT * FROM pet WHERE name LIKE "%w%";
?
為了找出包含正好5個(gè)字符的名字,使用“_”模式字符:
mysql> SELECT * FROM pet WHERE name LIKE "_____";
?九、修改表結(jié)構(gòu) alter
? ? ? ? ?給表增加列: alter table 表名 add column(‘column’可加可不加) 列名 列屬性
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?加一列:alter table id add ?name varchar(10);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?加多列:alter table id add address varchar(2), add name varchar(2);?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ??
?刪除表的列:alter table 表名 drop column(‘column’可加可不加)列名;?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?刪一列:alter table id drop address;
??刪多列:alter table?id?drop?address,drop name;
?十、運(yùn)算符
算數(shù)運(yùn)算符:”+” ? ”-” ? ?“*” ? ? ”/” ? ? ”%”
? ? ? ? 比較運(yùn)算符: = ? 等于
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? != 或者 <> ? ?不等于
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? < 小于
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? > 大于
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<= 小于等于
>=大于等于
between and ? 閉區(qū)間
in () ?值存在于列表中
not in () ?值不存在于列表中
is null、 is ?not null ?是否為空
LIKE ? 參考標(biāo)題八
? ? ? ? 邏輯運(yùn)算符: 與 ? and 或者&&
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 或 ? or 或者 ||
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 非 ? not 或者!
十一、排序
? asc:升序
desc:降序
? ?select student_id,avg(number) avg from score group by student_id order by avg asc;
?
十二。count()
? ? ? ? ?查詢數(shù)據(jù)庫中有多少條記錄,只返回?cái)?shù)字: select count(*) from table
? ? ? ??
轉(zhuǎn)載于:https://www.cnblogs.com/songxiaonan/p/7364320.html
總結(jié)
- 上一篇: ruby + phantomjs 自动化
- 下一篇: 希尔排序之C++实现(高级版)