Mysql基础语法
- 在Navicat中写Mysql语句,比如说增加元素,一般运行完以后就不能再运行第二遍,否则会因为添加相同的内容而报错,所以可以通过鼠标选中某一语句然后右键运行所选中的语句。
- mysql语句在右上角的新建查询的查询中写,而不是在表格中写,通过在查询编辑器中写的语句可以对表格进行操作。
- 写操作 –> 运行 –> 刷新表格
- mysql关键字不区分大消息
建表
/*通过关键字CREATE table + 表名创建表*/
CREATE table classinfo(
id INT(11) not NULL auto_increment,
name VARCHAR(250) not NULL, /*班级信息不为空*/
PRIMARY KEY(id) /*唯一的标识*/
)
- 创建表: create table + 表名。关键字大小写都行。表名,如果从数据库中导出,会给出引号。我们自己写的时候尽量不要加。因为我们写的引号不太一样。
- 如果字段不允许为null,设置为not nullI
- 如果字段自增,仅限int类型,每次加一。由系统计算,auto_increment
- 字段要有数据类型。字符串在java里是string类型,在mysql中是varchar类型
- primary key 的目的是设置某一字段是关键字,关键字不能是null,也不重复。目的是唯一的定位一条记录
在建表句的每一行结束要有一个逗号,但是最后一行没有。
在建表以前,一般都会加一条删除语句。目的是当我数据库中有这个表时,不至于sql语句执行失效。删除表的语法是:drop table if exits + 表名
插入数据
1.插入一行数据
insert into classinfo values(1,'Lanyunfu',1);
语法:insert into + 插入表名 + values(…)
注意语句后面要加分号
2.插入某个数据
insert into classinfo (name)values("Lanyunfu");
如果想要插入某个数据,就在values的前面加入一个括号(), 括号里面写上插入值的标识。
更新数据
- 更新所有的列表某个数据
update student set classid = 3; /*所有学生班级都改为3*/
update 表名 set 更新变量名字 = ···
- 增加限定条件where
update student set classid = 3 where stuname = "LanYunfu";
- 更新多个字段
update student set stuname = "CongEnjie", classid = 2 where stuname = "Wangle";
- 更新多个字段时,多个字段之间用“ , ”分隔开。
查询数据
- 查询所有学生的信息
select * from student;
- 查询部分字段
select stuname, classid from student;
- 查询有限定条件的信息
select stuname,classid from student where classid = 1;
- 再加一个条件:姓名为helin的记录:
select stuname, classid from student where class id = 1 and stuname = 'helin';
- 查询姓名中包含li这两个字母的学生姓名和班级id号信息:
select stuname, classid from student where stuname like '%li%';
多表查询
- 多表查询,如果不加条件,会出现笛卡尔积现象:
select * from student, calssinfo;
- 查询学生信息,显示班级名称,一般条件写两个表相关联的信息
select * from student, classinfo where student.classid = classinfo.id
由于student表的classid和classinfo表的id相对应同,所以为了避免出现笛卡儿积的现象,我们把查询的条件设为
student.id = classinfo.id
。一个表的字段不允许重复,而两个表的字段却可能重复,因此如何明确使用哪个字段,通过表名.字段名来引用。- 在上一句的基础上,只显示学生姓名和班级名称。
select student.stuname, classinfo.name from student, classinfo where student.classid = classinfo.id;
- 显示的信息和你在mysql语句中写的信息的顺序相同
简化sql语句
9.给表起别名,简化sql语句
select s.stuname, c.name from student as s,classinfo as c where s.classid = c.id;
给表格 student 和 classinfo 起别名,在前面后面可以通过这个别名来代替这个表格,
student as s, classinfo as c
,这样更有利于你阅读结果,其中的as在语句中可以省略。- 给查询字段起名字(省略了as)
selct s.stuname '学生姓名', c.name '学生名称' from student s, classinfo c where s.classid = c.id;
排序与平均函数
平均
- 如果想要一类数据的平均值,需要首先对所有的数据集进行分群,例如想要计算每个班级的平均成绩,那就以班级分群,想要计算每个人的平均成绩,那就以人名来进行分群。此时可以调用分群函数 group by,计算平均成绩利用mysql自带的 avg() 函数。
- 计算每个班,每门课程的平均分
select g.coursename, avg(g.grade) as '成绩',c.name from student s, grade g, classinfo c where s.id = g.stuid and c.id = s.classid group by g.coursename, c.name;
排序
- 根据班级名称排序, 关键字order by
select g.coursename "课程名称", avg(g.grade) "成绩",c.name from student s, grade g, classinfo c where s.id = g.stuid and c.id = s.classid group by g.coursename, c.name order by c.name