第三章 高级查询
Posted unique1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三章 高级查询相关的知识,希望对你有一定的参考价值。
1.修改表
(1)修改表名
语法:alter table 旧表名 rename [to] 新表名;
eg:alter table `demo` rename `demo1`;
(2)添加字段
语法:alter table 表名 add 字段名 数据类型[属性];
eg: alter table `demo` add `password` varchar(50) not null;
(3)修改字段
语法: alter table 表名 change 原字段名 新字段名 数据类型[属性];
eg:alter table `demo1`change `name` `username` char(10) not null;
(4)删除字段
语法: alter table 表名 drop 字段名
eg: alter table `demo` drop `password`;
2.添加主键
语法:alter table 表名 add constraint 主键名 primary key 表名(主键字段);
eg:alter table `student` add constraint pk_studentNo primary key student (studentNo);
3.添加外键
语法: alter table 表名 add constraint 外键名 foreign key(外键字段) references 关联表名(关联字段);
eg:alter table `student` add constraint fk_gradeId_studentNo foreign key(gradeId) reference result(studentNo);
注意:
(1)设置自增时,必须设置主键或唯一约束
(2)设置外键时,关联表里边必须设置主键或唯一约束来才能连接
(3)添加外键,数据类型,存储类型必须一致
4.DML——插入单条数据
语法: insert into 表名(字段列表)values(值列表);
eg: insert into `student`(`loginPwd`)values(‘123456‘);
注意:
(1)字段名时可选的,如省略必须依次按照插入所有字段
(2)多个列表和多个值之间用逗号隔开
(3)值列表和字段名列表一一对应
(4)如插入的是表中部分数据,字段名列表必填
插入多条数据
语法: insert into 表名(字段列表)values(值1,值2),(值1,值2);
eg: insert into `subject`(`gradeId`,`classHour`)values(220,1),(160,1);
5.将查询结果插入新表
(1)事先创建且与插入数据字段相符
insert into 新表(字段1,字段2)
select 字段1,字段2 from 原表;
(2)无需事先创建
create table 新表
select(字段1,字段2 from 原表);
6.更新数据记录
语法:update 表名 set 字段1=值1,字段2=值2 where 条件;
eg:update student set password=‘0000‘ where studentNo=20000;
8.删除数据记录
(1)delete from 表名 where 条件; 注意:有外键不能清空
(2)truncate table 表名;
9.truncate和delete区别:
(1)truncate语句删除后将重置自增列,而delete不会
(2)两者的表结构及其字段,约束,索引保持不变
(3)truncate速度比delete速度快
10.DQL——查询
语法:
select 字段列表 from 表名
where 条件
group by分组的字段名
having 条件
order by 排序的字段 ASC或DESC
LIMIT 位置偏移量,行数;
使用LIMIT子句时,注意第一条记录的位置是0
位置偏移量是指从第几行开始 行数:显示几行
LIMIT 4; 只会显示几行
LIMIT公式: limit(n-1)*a,a
如果行数>本身,则会显示全部
11.字符串函数
(1)concat:字符串连接
eg:
SELECT CONCAT(‘My‘,‘S‘,‘QL‘); 返回:mysql
(2)insert:替换
eg:
SELECT INSERT( ‘这是SQL Server数据库‘, 3,10,‘MySQL‘); 返回:这是MySQL数据库
(3)uuper:大写
eg:
SELECT UPPER(‘MySQL‘); 返回:MYSQL
(4)lower:小写
eg:
SELECT LOWER(‘MySQL‘); 返回:mysql
(5)substring:截取
eg:
SELECT SUBSTRING( ‘JavaMySQLOracle‘,5,5); 返回:MySQL
12.聚合函数
(1)AVG():平均值
(2)Count():行数
(3)Max():最大值
(4)Min():最小值
(5)Sum():和
13.时间日期函数
(1)curdate():当前日期
eg:
SELECT CURDATE(); 返回:2016-08-08
(2)curtime():当前时间
eg:
SELECT CURTIME(); 返回:19:19:26
(3)Now():时间和日期
eg:
SELECT NOW(); 返回:2016-08-08 19:19:26
(4)Week():返回日期一年中第几周
eg:
SELECT WEEK(NOW()); 返回:26
(5)Year():返回date年份
eg:
SELECT YEAR(NOW()); 返回:2016
(6)Hour(time):返回time小时值
eg:
SELECT HOUR(NOW()); 返回:9
(7)minute():分钟值
eg:
SELECT MINUTE(NOW()); 返回:43
(8)datediff(date1,date2):返回date1和date2相隔天数
eg:
SELECT DATEDIFF(NOW(), ‘2008-8-8‘); 返回:2881
(9)adddate:计算日期参考date加n天后日期 通常用于保质期
eg:
SELECT ADDDATE(NOW(),5); 返回:2016-09-02 09:37:07
14.数学函数
(1)celt(x):返回大于或等于数值x最小整数
eg:
SELECT CEIL(2.3) 返回:3
(2)floor(x):返回大于或等于数值x最大整数
eg:
SELECT FLOOR(2.3) 返回:2
(3)rand():返回0~1间的随机数
eg:
SELECT RAND() 返回:0.5525468583708134
以上是关于第三章 高级查询的主要内容,如果未能解决你的问题,请参考以下文章