1.修改表名
ALTER TABLE demo RENAME TO `demo1`;
2.添加字段
ALTER TABLE demo1 ADD `password` VARCHAR(30) NOT NULL;
3.修改字段
ALTER TABLE demo1 CHANGE `name` `username` VARCHAR(30) NOT NULL;
4.删除字段
ALTER TABLE demo1 DROP `password`;
5.添加外键
1.外键在从表上创建
2.创建外键时表不可以有数据
3.两张表关联的列所有特性必须完全一致,列明可以不相同
4.创建外键后,两张表的增删改功能会被关联
5.删除主表数据,必须先删除从表相关的数据grade
ALTER TABLE student ADD CONSTRAINT fk_grade_student FOREIGN KEY `gradeid` REFERENCES grade(`gradeid`);
6.清空表
1.delete:自增长列已经使用过的数据会永久丢失 1-100
2.truncate:自增长的列会重新从1开始排序
DELETE FROM student;
TRUNCATE TABLE student;
SELECT * FROM student;
7.DQL:数据查询语言
1.select 查询内容 from 表名
2.where 查询条件
3.group by 分组依据
4.order by 排序依据 desc/asc
5.limit 起始行下标 返回的行数
8.聚合函数
函数名 | 作用 |
---|---|
avg | 返回某字段的平均数 |
sum | 返回某字段的和 |
count | 返回某字段的数量 |
min | 返回某字段的最小值 |
max | 返回某字段的最大值 |
9.连接查询
1.内连接:inner join
2.外连接:
左外连接:left join 以左表为主表向右表的数据进行逐次匹配
右外连接:right join 以右表为主表向左表的数据进行逐次匹配
3.查询学生的姓名、学号、成绩
SELECT s.`studentName`,s.`studentNo`,r.`studentResult` FROM student s
INNER JOIN result r ON s.`studentNo`=r.`studentNo`;
4.查询及格的学生姓名、学号、成绩
SELECT s.`studentName`,s.`studentNo`,r.`studentResult` FROM student s
INNER JOIN result r ON s.`studentNo`=r.`studentNo`
WHERE r.`studentResult`>=60;
10.日期函数
获取年月日信息
SELECT CURDATE();
获取时分秒信息
SELECT CURTIME();
获取详细的时间和日期信息
SELECT NOW();
获取某个时间是一年中的第几周
SELECT WEEK(NOW());
计算两个时间之间间隔的天数
SELECT DATEDIFF(NOW(),‘2002-7-10’);
推算日期
SELECT ADDDATE(NOW(),1000);
11.数学函数
向上取整
SELECT CEIL(34.4);
向下取整
SELECT FLOOR(35.9);
随即小数 0-1
SELECT RAND();
=:只能和单个数据进行等值比较
in:可以和多个数据进行等值比较
not in:除此以外
1.exists:判断是否存在/是否有结果
CREATE DATABASE IF NOT EXISTS testinfo;
DROP DATABASE IF EXISTS student;
2.EXISTS:只关心子查询语句是否有数据返回,如果有则执行前面的sql语句 否则不执行
SELECT * FROM student WHERE EXISTS
(SELECT studentno FROM result WHERE 1=2);
3.子查询:在增删改查语句中嵌套使用select语句
SELECT * FROM student WHERE bornDate>
(SELECT bornDate FROM student WHERE studentName = '肖梅');
4.删除比肖梅小的学生
DELETE FROM student WHERE bornDate>
(SELECT bornDate FROM student WHERE studentName = '肖梅');