一窍育、例句
//有重名的人
select name from staff group by name having count(name)>1;
//重名人的-->姓名和個數
select name,count(name) from staff group by name having count(name)>1;
//重名人的所有信息
select * from staff where name in(select name from staff group by name having count(name)>1);
//顯示前三名的成績
select * from staff onder by score desc limit 3;//按成績倒序沙咏,然后分頁
//去除重名
select distinct name from student;
二丹锹、內聯接-外聯結-全連接(多表查詢)
//添加主鍵
mysql> alter table employee add primary key(money);
//為表添加一個主鍵,如果主鍵已經存在馏谨,則出現錯誤
alter table 表名 add primary key(字段名)别渔;
//添加外鍵
alter table 表名 add foreign key(字段名) references 表名(字段名);
//主外鍵多表連接的等值連接與內聯連接
//等值連接
select s*(s表的所有信息顯示),d dname(d表的name字段顯示) from student s(表的別名),dept d (表的別名)where d.did=s.did;
//內聯連接
select * from student inner join dept on dept did=student did;
select s*,d dname,d salary from student s inner join dept d on d.did=s.did;
//左外聯結? (LEFT JOIN)左邊都顯示,右滿足條件顯示惧互,不滿足條件顯示位null
select s.*,d.dname from? student s left join? dept d on d.did=s.did ;
//右外聯結? (RIGHT JOIN),右邊都顯示钠糊,左面滿足條件顯示,不滿足條件顯示位null
select s.*,d.dname from? student s right join? dept d on d.did=s.did ;
//全連接MySQL不支持 full join
//多表查詢
1select * from dept,person;也叫笛卡爾積
2mysql> select * from dept,person where dept.id=person.bid;
3開發(fā)中一般使用等值查詢
mysql> select id,bname,name,degree from person,dept where dept.id=person.bid;
注:多表查指定字段壹哺,最好用表名.字段名,如果多表中有重名字段則必須用表名.字段名
4 as 別名
mysql> select pid as 學號,name as 姓名,degree as 學歷
,dept.bname from person,dept wheredept.id=person.bid;
三抄伍、復制表
1復制全部表內容
?create table stu as?select * from student;
2復制表中指定的字段及記錄
create table stu as?select Sname,Sage from student;
3只復制表字段
create table stu as?select Sname,Sage from student where 0=1;
4復制表中字段及記錄中的部份內容
create table login as select userid,username, substring(usercardid,13,6)as pass,islogin from userinfo;
5用戶登錄
select * fromlogin where username='mike' and pass='12412X' and islogin=1;
6取身份證后6位登錄
mysql> select * from userinfo where username='劉能' and substring(usercardid,13,6)='121121';
7
select a.username發(fā)送人,b.senddate發(fā)送時間,c.username接收人,b.context信息內容from userinfo a,message b,userinfo c where a.userid=b.sendid and?b.receiveid=c.userid and (c.username='張三豐' or?c.username='所有人');
四管宵、SQL語法組成
結構化查詢語言(Structured Query Language)簡稱SQL
由3個部分組成
DML( Data Manipulation Language數據操作語言)
——查詢截珍、插入、刪除和修改數據庫中的數據箩朴;
——SELECT岗喉、INSERT、 UPDATE 炸庞、DELETE等钱床;
DCL( Data Control Language數據控制語言)
——用來控制存取許可埠居、存取權限等查牌;
——GRANT事期、REVOKE 等;
DDL( Data Definition Language數據定義語言)
——用來建立數據庫纸颜、數據庫對象和定義其列
——CREATE TABLE 兽泣、DROP TABLE、ALTER TABLE 等
1 mysql> select now();2016-09-06 16:18:21
2mysql> select current_time();?16:18:21
3 mysql> select current_date();
4mysql> select current_timestamp();2016-09-06 16:20:39
5mysql> select sysdate();2016-09-06 16:21:11
?select * froeim 表名 limit (當前頁-1)*記錄數,記錄數
五jdbc開發(fā)步驟
//數據庫開發(fā)第1步 -->添加jar
//數據庫開發(fā)第2步 -->加驅動
Class.forName("com.mysql.jdbc.Driver");
//數據庫開發(fā)第3步 -->創(chuàng)建連接
String url="jdbc:mysql://localhost:3306/gongsi?useUnicode=true&characterEncoding=utf-8";//連接數據庫地址
String user="root";//數據庫用戶名
String password="root";//數據庫用戶名
Connection? conn=DriverManager.getConnection(url, user, password);
//數據庫開發(fā)第4步 -->創(chuàng)建創(chuàng)建 Statement對象
Statement stm=conn.createStatement();
//數據庫開發(fā)第5步 -->執(zhí)行sql語句
String sql="insert into depart(b_name) values('"+bname+"')";
stm.executeUpdate(sql);
//數據庫開發(fā)第6步 (對查詢)-->執(zhí)行sql語句 -->? stm.executeQuery(sql)
//數據庫開發(fā)第7步 -->關閉數據庫連接,先關stm后關conn
stm.close();conn.close();