1.修改表:
1.修改表名:
rename table 原表名 to 新表名
2.增加一列:
alter table 表名 add 列名 类型
2.查询数据库:(聚合函数)
count()计数
sum()求和
max()最大值
min()最小值
avg()求平均值
(1)group by 分组的字段 having 聚合函数
select sex,avg(height) as ah 分组字段和聚合函数 from stu group by sex having ah > 70
3.分段查询
mysql有:
limit 进行分段查询
SELECT * FROM stu WHERE sanme LIKE '_i%' LIMIT 2;(数字表示查询几个)
SELECT * FROM stu WHERE sanme LIKE '_i%' LIMIT 1,2;(第一个数字表示偏移量,第二个表示查询数量)
总结出一个分页公式!
当前页数! currentpage 从1开始
每页的数量! pagesize
limit (currentpage-1)*pagesize,pagesize;
4.修饰符 约束
primmary key : 不能重复且不能为null
auto_increment:自动增长。
unique not null :不可重复且不能为空。
外部增加修饰符:alter table 表名 add primary key(列名)
constraint 外键约束的名称 数据库不可重复 foreign key(外键) references 参照表(主键)
外部增加:
alter table 表名 add constraint 外键约束的名称 数据库不可重复 foreign key(外键) references 参照表(主键)
5.子查询
一个查询语句中嵌套了另一个查询!
select * from student where sex = "nan" and height > (select height from student where name = 'wangjiao')
单行单列 =
单行多列 in
多行单列 where
多行多列 from
三大查询区别:
99查询大法 内链接只是语法不同!但是查询结果相同!
他们完全遵守主外键相同!
没有王老五!
但是开发中,肯定会指定逻辑主表!(这个表没有外键,但是也要被显示出来!)
外连接:也是连接查询!可以通过左还是右指定一个逻辑主表!
就算逻辑主表没有外键数据 也会显示!
有王老五!
小建议:建议把逻辑主表放在最左面!后面一致左外连接即可!
注意:只要有了外连接 后面的连接必须全部是外连接!
第一个:在子查询中,where后面的条件语句不可使用分号结束,会出现语法错误;
错误代码:再次使用了分号,检查了大概40分钟,一小时。
SELECT sname FROM student WHERE sid IN (SELECT student_id FROM score WHERE course_id = (SELECT cid FROM course WHERE cname = '物理';) AND num = 100)
正确代码:
SELECT sname FROM student WHERE sid IN (SELECT student_id FROM score WHERE course_id = (SELECT cid FROM course WHERE cname = '物理') AND num = 100)
第二个:在子查询中,where后面的条件语句不可使用小括号将条件的一部分内容括起来,否则会出现错误:
错误代码:
SELECT sname FROM student WHERE sid IN (SELECT student_id FROM score WHERE (course_id = (SELECT cid FROM course WHERE cname = '物理')) AND num = 100)
正确代码:
SELECT sname FROM student WHERE sid IN (SELECT student_id FROM score WHERE course_id = (SELECT cid FROM course WHERE cname = '物理') AND num = 100)
4.DQL(单表查询)
1.基本查询
select * from 表名
select 列名,列名 from 表名
2.基本条件查询
where
and or
3.模糊查询
like
_ 任意一个字符
% 任意字符
where 列名 like '__z%'
4.字段控制
去重
distinct
select distinct sal from emp;
为null判断
sql 1000+null = null;
ifnull(comm,0)
起别名
列名 as 别名 , 列名 别名
5.排序
不用where
order by一定在where后面!
order by 列名 asc/desc ,列名 asc/desc
6.聚合函数
count() 计数 null不计数
sum()
max
min
avg
7.分组
group by 分组的字段 having 聚合函数!
select sex ,avg(height) as ah 分组字段和聚合函数 from stu group by sex
having ah>170
6.数据库备份语句
备份:
mysqldump -u账号 -p密码 数据库名>d:\xxx.sql
恢复:
mysql -u账号 -p密码 数据库名<d:\xxx.sql
设置编码格式:
[mysql]
no-beep
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
重启服务!