1.mysql中表的字符集设置为utf8,但是在navicat piemium中中文仍显示乱码,解决方案
navicat piemium中选中数据库服务器连接-右键-连接属性-高级-将编码集设置为‘10008-GB2312’
2.建表语句为:
create table t1(
tid int not null auto_increment ,
dept varchar(20) not null default '计算机科学',
primary key(tid)
)engine=MYISAM auto_increment=1 default charset=utf8;
插入时,如果使用
insert into ti values(null,null);会报错,因为dept不允许使用null值,如果要使用dept的默认值,则插入语句应该为
insert into t1(tid) values(null);插入结果为
tid | dept |
1 | 计算机科学 |
3.like语句中使用'_',例查询姓名为2个字的学生信息,学生表如下
查询语句应为 select * from t1 where tname like '____';一共应使用4个下划线,因为一个汉字对应2个字符
4.limit(用于分页)
limit [偏移量,]最大行数
例 select * from t1 limit 3;查询结果为
select * from t1 limit 2,2;查询结果是从第3行开始算起,一共显示2行,查询结果如下
limit分页实例--该段描述是转载
select * from t1 order by tid desc limit 10000,20;
limit 10000,20的意思是扫描满足条件的10020行,扔掉前10000行,返回最后20行,这样性能会受影响,但如果使用limit 20就只需要扫描20行,以此原理分页可做成:
select * from t1 order by tid desc;按tid降序分页,假设一共1000条数据,每页20条,当前是第10页,当前页最大tid是820,最小值是801
上一页:select * from t1 where tid>820 order by tid limit 20;
下一页:select * from t1 where tid<801 order by tid desc limit 20;
跳转到第8页: select * from t1 where tid>820 order by tid limit 20,20;
5.字段别名
select tname 学生姓名,score 学生成绩 from t1;有时会报错,建议使用select tname as '学生姓名',score as ' 学生成绩' from t1;
6.group by having where
a.使用group by时,select语句中只能出现group by 中的字段或聚合函数
b.having语句只能出现在group by之后,order by 之前
c.where子句用来筛选from子句中指定的操作所产生的行
d.group by 子句用来分组where子句的输出
e.having 子句用来从分组的结果中筛选行
例:表结构
查询每个部门sal大于等于1500的所有sal的总和
select deptno,sum(sal) from t where sal>1500 group by deptno;
查询sal总和大于5000的deptno
select deptno from t group by deptno having sum(sal)>5000;