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