高级查询
修改表名
ALTER TABLE 旧表名 RENAME [TO]  新表名;
添加字段 
ALTER TABLE 表名 ADD 字段名  数据类型  [属性];
修改字段
 ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];
删除字段
ALTER TABLE 表名 DROP 字段名;
添加主键:
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名  FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段);
插入单条数据
INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
插入多条数据
INSERT INTO 新表(字段名列表)
 VALUES(值列表1),(值列表2),……,(值列表n);
将查询结果插入新表:
CREATE TABLE 新表(SELECT 字段1,字段2
         ……FROM 原表);
INSERT INTO 新表(字段1,字段2……)
SELECT字段1,字段2……
FROM 原表;
更新数据:
UPDATE 表名
SET 字段1=值1,字段2=值2
WHERE 条件
删除数据记录:
DELETE FROM 表名 [WHERE条件];
TRUNCATE TABLE 表名;
分组查询:
SELECT  <字段名列表>
FROM  <表名或视图>
[WHERE  <查询条件>]
[GROUP BY <分组的字段名>]
[HAVING <条件>]
[ORDER BY <排序的字段名> [ASC 或 DESC]]
MySQL查询语句中使用LIMIT子句限制结果集
SELECT  <字段名列表>
FROM  <表名或视图>
[WHERE  <查询条件>]
[GROUP BY <分组的字段名>]
[ORDER BY  <排序的列名> [ASC 或 DESC]]
[LIMIT [位置偏移量, ]行数];
-- 聚合函数
-- 查询表中一共有多少条记录
SELECT COUNT(*) FROM student
-- 查看表中指定字段不为空的记录
SELECT COUNT(phone) FROM student
-- 查询年龄最大的数据
SELECT MAX(age) FROM student
-- 查询年龄最小的数据
SELECT MIN(age) FROM student
-- 求所有年龄的平均值
SELECT AVG(age) FROM student
-- 求所有年龄之和
SELECT SUM(age) FROM student
 
-- 字符串函数
-- 字符串的连接
SELECT CONCAT('My','S','ql');
-- 字符串替换 下标从1开始
SELECT INSERT('大家辛苦了!',1,3,'哈哈');
-- 字符串的截取 下标从1开始
SELECT SUBSTRING('大家辛苦了!',1,3);
-- 字符串变大 小 写
SELECT LOWER('AAA');
SELECT UPPER('aaa');
-- 常用的时间和日期函数
-- 01.获取当前的日期
SELECT CURDATE();
-- 02.获取当前的时间
SELECT CURTIME();
-- 03.获取当前的日期和时间
SELECT NOW();
-- 04.返回日期是一年中的第几周
SELECT WEEK(NOW());
-- 05.只获取年
SELECT YEAR(NOW());
-- 06.只获取小时
SELECT HOUR(NOW());
-- 07.获取两个日期差
SELECT DATEDIFF(NOW(),'2017-03-07');
-- 08.返回现在的时间加上某个时间之后的日期
SELECT ADDDATE(NOW(),24);
 
-- 数学函数
SELECT CEIL(3.1); -- 天花板函数
SELECT FLOOR(3.9);
SELECT RAND(); -- 0-1之间的随机数
 
limit :第n业  每业a条   limit (n-1)*a,a;
聚合函数:
函数名
作用
AVG()
返回某字段的平均值
COUNT()
返回某字段的行数
MAX()
返回某字段的最大值
MIN()
返回某字段的最小值
SUM()
返回某字段的和
字符串函数:
函 数 名
作    用
举    例
CONCAT(str1,
       str1...strn)
字符串连接
SELECT    CONCAT('My','S','QL');
返回:MySQL
INSERT(str,
pos,len,
newstr)
字符串替换
SELECT INSERT(
    '这是SQL Server数据库',
    3,10,'MySQL');
返回:这是MySQL数据库
LOWER(str)
将字符串转为小写
SELECT LOWER('MySQL');
返回:mysql
UPPER(str)
将字符串转为大写
SELECT UPPER('MySQL');
 返回:MYSQL
SUBSTRING
  (str,num,len)
字符串截取
SELECT SUBSTRING(
    'JavaMySQLOracle',5,5);
返回:MySQL
日期函数:
函数名
作用
举例(结果与当前时间有关)
CURDATE()
获取当前日期
SELECT CURDATE();
返回:2016-08-08
CURTIME()
获取当前时间
SELECT CURTIME();
返回:19:19:26
NOW()
获取当前日期和时间
SELECT NOW();
返回:2016-08-08 19:19:26
WEEK(date)
返回日期date为一年中的第几周
SELECT WEEK(NOW());
返回:26
YEAR(date)
返回日期date的年份
SELECT YEAR(NOW());
返回:2016
HOUR(time)
返回时间time的小时值
SELECT HOUR(NOW());
返回:9
MINUTE(time)
返回时间time的分钟值
SELECT MINUTE(NOW());
返回:43
DATEDIFF(date1,date2)
返回日期参数date1和date2之间相隔的天数
SELECT DATEDIFF(NOW(),
     '2008-8-8');
返回:2881      
ADDDATE(date,n)
计算日期参数date加上n天后的日期
SELECT ADDDATE(NOW(),5);
返回:2016-09-02  09:37:07 
 
 
子查询
子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,为了让读者更加清楚子查询的概念。
子查询的位置:
    select 中、from 后、where 中.group by 和order by 中无实用意义
子查询返回结果
子查询可以返回的数据类型一共分为四种:
    1. 单行单列:返回的是一个具体列的内容,可以理解为一个单值数据;
    2. 单行多列:返回一行数据中多个列的内容;
    3. 多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围;
    4. 多行多列:查询返回的结果是一张临时表;
在WHERE子句中使用子查询
在WHERE子句之中处理单行单列子查询、多行单列子查询、单行多列子查询。
IN子查询:
常用IN替换等于(=)的子查询
IN后面的子查询可以返回多条记录
IN/NOT IN:子查询可返回多条记录
 

 posted on 2020-06-17 09:46  中国姑娘F  阅读(58)  评论(0编辑  收藏  举报