1.修改表
1.修改表名: ALTER TABLE 旧表名 RENAME[TO] 新表名;
2.添加字段:ALTER TABLE 表名 ADD 字段名 数据类型[属性];
3.修改字段:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型[属性];
4.删除字段:ALTER TABLE 表名 DROP 字段名;
2.添加主键
1.语法:ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
3.添加外键
1.语法:ALTER TABLE 表名 ADD CONNSTRAINT 外键名
FOREIGN KEY(外键字段)
REFERENCES 关联表名(关联字段);
4.插入单(多)条数据记录(和SQL Server相同,但是不能用select多列添加数据)
1.INSERT INTO 表名[(字段名列表)] VALUES(值列表1),(值列表2),(值列表3);
注意事项:1.字段名可以选择性的添加,在表名后面写入列名就可,如果省略的话默认依次插入所有字段
2.多个列表与多个值之间用逗号隔开
3.值列表和字段名列表必须一一对应
4.如果选择性的添加数据,则必须注意,not null必须添加值
5.将查询结果插入新表(INSERT INTO与SQL Server相同,另外一个不同)
1.语法:INSERT INTO 新表(字段1,字段2.....)
SELECT 字段1,字段2......
FROM 原表;
需要事先创建而且和插入字段的数据类型相符
2.语法:CREATE TABLE 新表(SELECT 字段1,字段2......
FROM 原表);
无需事先创建
6.DML ——数据修改和删除(与SQL Server相同)
1.修改语法:UPDATE 表名
SET 字段1=值1,字段2=值2,.......,字段n=值n
[WHERE 条件];
2.删除语法:(1) DELETE FROM 表名 [WHERE 条件];
(2)TRUNCATE TABLE 表名;
相同点:TRUNCATE语句和DELETE语句都会删除表内容,表结构及其字段、约束、所以保持不变
不同点:TRUNCATE语句删除之后重置自增列,速度比DELETE语句快
7.DQL语句(与SQL Server语句相同)+LIMIT语句
SELECT 字段名列表
FROM 表名或视图
[WHERE 查询条件]
[GROUP BY 分组的字段名]
[HAVING 条件]
[ORDER BY 排序](ASC正序/DESC倒叙)
[LIMIT[位置偏移量,]行数];
LIMIT:MYSQL查询中使用LIMIT字句限制结果集。 位置偏移量:开始位置 ;行数:每页显示几行
8.聚合函数
1.AVG() 返回某字段的平均值 2.COUNT() 返回某字段的行数
3.MAX() 返回某字段的最大值 4.MIN() 返回某字段的最小值
5.SUM() 返回某字段的和
9.字符串函数
1.CONCAT(str1,str1....strn) 字符串连接 SELECT CONCAT('MY','S','QL'); 返回:MYSQL
2.INSERT(str,pos,len,newstr) 字符串替换 SELECT INSERT('这是SQL Server数据库',3,10,'MYSQL');返回:这是MYSQL数 据库
3.LOWER(str) 将字符串转为小写 SELECT LOWER('MYSQL'); 返回:mysql
4.UPPER(str) 将字符串转为大写 SELECT UPPER('mysql'); 返回:MYSQL
5.SUBSTRING 字符串截取 SELECT SUBSTRING('JavaMySQLOracle',5,5); 返回:MySQL
10.日期函数
1.CURDATE() 获取当前日期 SELECT CURDATE(); 返回:2020-4-29
2.CURTIME() 获取当前时间 SELECT CURTIME(); 返回:19:19:26
3.NOW() 获取当前日期和时间 SELECT NOW(); 返回:2020-04-29 19:19:26
4.WEEK(date) 返回日期date为一年之中的第几周 SELECT WEEK(NOW()); 返回:17
5.YEAR(date) 返回日期date中的年份 SELECT YEAR(NOW()); 返回:2020
6.HOUR(time) 返回日期time中的小时 SELECT HOUR(NOW()); 返回:19
7.MINUTE(time) 返回日期time中的分钟 SELECT MINUTE(NOW()); 返回:19
8.DATEDIFF(date1,date2) 返回日期参数date1和date2之间的天数 SELECT DATEDIFF(NOW(),2000-12-15); 返回:9563
9.ADDDATE(date,n) 计算日期参数date加上n天之后的日期 SELECT ADDDATE(NOW(),5); 返回:2020-05-04
11.数学函数
1.CELT(x) 返回大于或者等于数值x的最小整数 SELECT CEIL(2.3) 返回:3
2.FLOOR(x) 返回小于或者等于数值x的最大整数 SELECT FLOOR(2.3) 返回:2
3.RNAD() 返回0~1间的一个随机数 SELECT RAND() 返回:0.55645453123123456(乘以相应数字则是相应数字之间 的随机数,可与FLOOR连用用以去除小数点)
12.子查询
1.子查询是一个嵌套在select、insert、update或delete语句或其他子查询中的查询
2.子查询在where语句中的一般用法
子查询也就是在where后面比较时加个小括号,小括号里面的代码优先执行,就像数学运算一样
语法:select。。。from 表1 where 字段1 比较运算符(子查询)
注意:将子查询和比较运算符联合使用时,必须保证子查询返回的值不能多于一个
13.子查询替换表连接
采用inner join多表连接
子查询比较灵活、方便,常作为增删改查的筛选条件,适合于操纵一个表的数据
表连接更适合于查看多表的数据
14.in子查询(in模糊查询)
当子查询结果返回不止一个的时候,使用运算比较符会出错,需要使用in子查询
常用in替代等于(=)的子查询;in后面的子查询可以返回多条记录
15.not in子查询
与in子查询相反