sql語句的分類:
數據庫控制語言DCL:對權限控制
數據庫定義語言DDL:對數據庫 表 列 進行操作
數據庫操作語言DML:對數據庫里的數據進行操作 增 刪 改
數據庫查詢語言DQL:對數據庫進行查詢
mysql軟件和win系統(tǒng)中文不兼容問題
修改 mysql 軟件中my.ini 文件語句為gbk

45622b31-8a16-477d-8dca-771657a7a85a.jpg
01數據庫操作
1.創(chuàng)建數據庫三種模式
1)簡單創(chuàng)建
create database 數據庫名 ;
2) 添加字符約束
create database 數據庫名 character set 字符集 ;
3)添加字符集約束,并使用字符集中校對規(guī)則
create database 數據庫名 character set 字符集 collate 字符集校對規(guī)則 ;
2.修改數據庫
alter database 數據庫名 character set 字符集 ;
3.刪除數據庫
drop database 數據庫名 ;
4.查看數據庫
1)查看所有數據庫
show databases;
2)查看某個數據庫
show create database 數據庫名
5.使用數據庫
use 數據庫名;
02表操作
1.創(chuàng)建表
create table 表名(
id int primary key auto_increment,//創(chuàng)建主鍵
name varchar(20) not null,//創(chuàng)建非空字段
sex varchar(100) unique,//唯一
);
2.修改表
1)添加字段
alter table 表名 add 字段名 數據類型 約束 ;
2)修改字段類型長度和約束
alter table 表名 modify 字段名 數據類型 約束 ;
3)刪除字段
alter table 表名 drop 字段名 ;
4)修改表明
rename table 舊表名 to 新表名 ;
5)修改表的字符集
alter table 表名 character set 字符集 ;
3.刪除表
drop table 表名 ;
4.查看表數據
show tables;
5.查看表數據
desc 表名;
03數據操作
1.添加數據
insert into 表名 (字段1,字段2,字段3) values(值,值,值);
2.修改數據
update 表名 set 字段名 值 where 條件;
3.刪除數據
delect from 表名 where 條件
4.查詢數據
1)簡單查詢
select 字段名 from 表名
select distinct 字段名 from 表名//distinct 去重
select * from 表名//*所有字段
2)條件查詢
select * from where 條件//條件可以有 > < >= <= = <>
select * from where link '%字符%'//link 模糊查詢 % 看在字符位置
select * from where 字段 in (值1,值2,值3);//in 多個條件查詢
3)表達式查詢
select 字段1,相同字段數字類型做運算 from 表名 ;
select 字段1,(相同字段數字類型做運算) as 新字段名 from where 條件//as 可以把相同字段整合成新字段
4)排序查詢
select * from 表名 where 條件 order by 字段 asc/desc;
select * from exam order by math asc, chinese desc;//讓字段內的值根據升或降的形式展示
5)聚合函數
Count() :統(tǒng)計個數
Avg() :求平均值
Sum() :求和
Max() :求最大值
Min() :求最小值
select 聚合函數(字段) from 表名
6)分組統(tǒng)計
select 關鍵字,聚合函數(關鍵字) from 表名 where 條件 group by 關鍵字 having 條件//having實在where之后的條件
7)多表查詢
#交叉連接
select * from category ,product;
#內連接
#顯示內連接 inner join (inner 可以省略)
SELECT * FROM category c INNER JOIN product p ON c.cid = p.cno;
#隱式內連接
SELECT * FROM category c,product p WHERE c.cid = p.cno;
#外連接 outer join (outer 可以省略)
#左外連接
select * from category c left join product p on c.cid = p.cno;
#右外連接
select * from category c right outer join product p on c.cid = p.cno;
#子查詢和多表查詢
子查詢:指的是一條語句的查詢條件需要依賴另一條語句的查詢結果。
in、any、all
select * from category c where c.cid in (select cno from product p where p.pname like '電%')
#多表查詢
查詢學生生日在91-01-01年之后的班級的信息。
SELECT * FROM classes c WHERE c.cid IN (SELECT s.cid FROM student s WHERE s.birthday > '1991-01-01');
查詢班級名稱,和班級總人數
select c.cname,count(*) from classes c,student s where c.cid = s.cid group by c.cname;
查詢學生的姓名和學生所選的總課程平均成績。
select s.sname,avg(sc.score) from student s,stu_cour sc where s.sid=sc.sid group by s.sname;
查詢學生的姓名和學生的選課總數,顯示選課超過3門學生姓名。
SELECT s.sname,COUNT(sc.cid) FROM student s,stu_cour sc WHERE s.sid=sc.sid GROUP BY s.sname HAVING COUNT(sc.cid) > 2;
查詢平均成績大于80分的學生的信息。
SELECT s.sname,AVG(sc.score) FROM student s,stu_cour sc WHERE s.sid=sc.sid GROUP BY s.sname HAVING AVG(sc.score) > 80;
查詢學生和平均成績,但是平均成績大于01班的任何一個學生的平均成績
select s.sname,avg(sc.score) from student s,stu_cour sc where s.sid=sc.sid group by s.sname having avg(sc.score) > any(
select avg(sc.score) from classes c,student s,stu_cour sc where c.cid = s.cid and s.sid=sc.sid and c.cname = '01班' group by s.sname