数据库相关
创建数据库
create database 数据库名称;
删除数据库
drop database 数据库名称;
查看数据库
show database 数据库名称;
创建数据库并查看
show create database 数据库名称;
切换使用的数据库
use 数据库名称;
数据库----表相关
新建表
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
删除表
IF EXISTS为可选 , 判断是否存在该数据表,如删除不存在的数据表会抛出错误
DROP TABLE IF EXISTS teachers; -- 删除表(如果存在再删除)
修改表
1.修改表名
ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teachers;
2.添加表的字段
ALTER TABLE 表名 ADD字段名 列属性[属性]
ALTER TABLE teachers ADD age INT(11);
3.修改表中的列数据
ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
ALTER TABLE teachers MODIFY age VARCHAR(11);-- 修改约束
4.修改表中的字段
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
ALTER TABLE teachers CHANGE age age1 INT(1);-- 字段重命名
5.删除表中的字段
ALTER TABLE 表名 DROP 字段名
ALTER TABLE teachers DROP age1;
数据库-----表数据相关
添加 insert
insert into 表名 ('字段1','字段2')values('值1','值2');
INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('zsr','200024','男'),('gcc','000421','女');
修改 update
update 表名 set '字段1'='值1' where 条件= ?;
UPDATE `student` SET `name`='zsr204' WHERE id=1;
删除 delete
delete from 表名 where 条件= ?;
DELETE FROM `student` WHERE id=1;
查询 select
1.普通查询
-- 查询全部学生
SELECT * FROM student;-- 查询指定的字段
SELECT `LoginPwd`,`StudentName` FROM student;-- 别名 AS(可以给字段起别名,也可以给表起别名)
SELECT `StudentNo` AS 学号,`StudentName` AS 学生姓名 FROM student AS 学生表;-- 函数 CONCAT(str1,str2,...)
SELECT CONCAT('姓名',`StudentName`) AS 新名字 FROM student;-- 查询系统版本(函数)
SELECT VERSION();-- 用来计算(计算表达式)
SELECT 100*53-90 AS 计算结果;-- 查询自增步长(变量)
SELECT @@auto_increment_increment;-- 查询有哪写同学参加了考试,重复数据要去重
SELECT DISTINCT `StudentNo` FROM result;
2.条件查询
select 查询列表 from 表名 where 筛选条件;
between and 使用:
SELECT `StudentNo`,`StudentResult` FROM result WHERE `StudentResult`BETWEEN 95 AND 100;
3.分组查询
select 分组函数,分组后的字段
from 表
【where 筛选条件】
group by 分组的字段
【having 分组后的筛选】
【order by 排序列表】
4.连接查询
排序and分页
1.排序
select 查询列表
from 表
where 筛选条件
order by 排序列表 asc/descasc : 升序,如果不写默认升序
desc:降序
2.分页
select 查询列表
from 表
limit offset,pagesize;offset代表的是起始的条目索引,默认从0开始
size代表的是显示的条目数
offset=(n-1)*pagesize
常用函数
-- 数学运算
SELECT ABS(-8); -- 绝对值
SELECT CEIL(5.1); -- 向上取整
SELECT CEILING(5.1); -- 向上取整
SELECT RAND(); -- 返回0~1之间的一个随机数
SELECT SIGN(-10); -- 返回一个数的符号;0返回0;正数返回1;负数返回-1-- 字符串函数
SELECT CHAR_LENGTH('我喜欢你'); -- 字符串长度
SELECT CONCAT('我','喜欢','你'); -- 拼接字符串
SELECT INSERT('我喜欢',1,1,'超级') -- INSERT(str,pos,len,newstr) 从str的pos位置开始替换为长度为len的newstr
SELECT UPPER('zsr'); -- 转大写
SELECT LOWER('ZSR'); -- 转小写
SELECT INSTR('zsrs','s'); -- 返回第一次出现字串索引的位置
SELECT REPLACE('加油就能胜利','加油','坚持'); -- 替换出现的指定字符串
SELECT SUBSTR('坚持就是胜利',3,6); -- 返回指定的字符串(源字符串,截取位置,截取长度)
SELECT REVERSE('rsz'); -- 反转字符串-- 时间日期函数
SELECT CURRENT_DATE(); -- 获取当前日期
SELECT CURDATE(); -- 获取当前日期
SELECT now(); -- 获取当前时间
SELECT LOCALTIME(); -- 本地时间
SELECT SYSDATE(); -- 系统时间SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());
SELECT HOUR(NOW());
SELECT MINUTE(NOW());
SELECT SECOND(NOW());-- 系统信息
SELECT SYSTEM_USER();
SELECT USER();
SELECT VERSION();
聚合函数
函数 | 描述 |
---|---|
max | 最大值 |
min | 最小值 |
sum | 和 |
avg | 平均值 |
count | 计算个数 |
SELECT COUNT(StudentName) FROM student;
SELECT COUNT(*) FROM student;
SELECT COUNT(1) FROM student;SELECT SUM(`StudentResult`) FROM result;
SELECT AVG(`StudentResult`) FROM result;
SELECT MAX(`StudentResult`) FROM result;
SELECT MIN(`StudentResult`) FROM result;