MySQL语句(所有标点符号都是英文符号)
先打开命令窗口(win+R,输入cmd) ,想使用数据库,需要先打开数据库。
打开数据库:mysql –u root –p
如果要连接别人的数据库:mysql –h XX.XX.XX.X –P xx –u xxx –p
-h 后面接的是IP地址;-P 后面接的是端口 (注意是大写P)
-u 后面接的是账户名。
数据库的各项命令都以分号结尾而执行,所以不要忘记了输入指令后要带上分号【;】
具体操作步骤如下:
- 查看数据库 show databases;
- 选择数据库 use 数据库的名字;
- 查看数据库的表 show tables;
- 增:insert into 表名(字段1,字段2,字段3) values (值1,值2,值3);
- 删:delete from 表名 where 条件;
- 改:update 表名 set 字段1 = 值,字段2 = 值 where 条件;
- 查: (1) 查询全表:select * from 表名;
(2) 查询某字段信息:select 字段1,字段2 from 表名;
(3) 筛选使用where带条件限制:select * from 表名 where 字段1 = 值 and 字段2 = 值;
其中特殊筛选方式,例如:
使用【like】表包含:查询名字中姓“张”的学生:where name like ‘张%’
PS:带上【%】为模糊查询,不带即为精准查询。
查询名字中含有“晓”的学生:where name like ‘%文%’
PS:前后带上【%】表示任意含有关键字。
多表联查:
select * from 表1 join 表2 on 表1.字段1 = 表2.字段2 where 表1.字段1 = 值;
PS:表与字段之间的小数点不要漏了!
- 聚合函数:
(1)count
(2)max
(3)min
(4)avg
(5)sum
小技巧——取别名: select 字段 as 别名
课后练习:
新建一个学生表Student(学号id,学生姓名name)、课程表Course(课程编号id、课程名称name)、成绩表SC(学号sid、课程编号cid、成绩score),并写出以下SQL语句:
1.查询姓‘王’的学生的个数;
答:select count(*) from Student where name like '王%';
2.查询“数学”比“语文”成绩高的所有学生的学号;
答:SELECT s.id,
max(CASE WHEN c.id = 1 THEN sc.score END) chinese,
max(CASE WHEN c.id = 2 THEN sc.score END) math,
max(CASE WHEN c.id = 3 THEN sc.score END) english
FROM sc
JOIN student s ON SC.sid = S.id
JOIN Course C ON C.id= sc.cid
GROUP BY s.id
HAVING math>chinese
3.查询平均成绩大于90分的同学的学号和平均成绩;
答:select S.id, avg(sc.score) as avg_grade from Student S join SC on S.id = SC.sid join Course C on SC.cid = C.name group by s.id having avg_grade >90 ;