reference 引用
reflect 反射
invoke 生效
properties 拥有的
annotation 注解 an 加强 + not 标记 + ation 行为 → 注解
数据库账号root 密码123456
DataBase 简称DB 数据库
DDL:对数据库和表进行操作
①对数据库
character 特征 character set gbk;
alter 改变 alter database 数据库名称 character set 字符集名称
drop database 删除数据库
use 数据库名称 使用数据库
select database() 查询当前数据库的名称,必须先use数据库名称才能查询数据库名称
②对表
查询表:show tables;
查询表结构:desc 表名;
创建表:crate table(
列名1 数据类型1,
列名2 数据类型2,
…
列名n 数据类型n
);
SQL数据类型
1.int:整数类型
2.double:小数类型。。。score double(5,2)
3.date:日期,只包含了年月日,yyyy-MM-dd
4.datetime:日期,包含了年月日时分秒,yyyy-MM-dd HH:mm:ss
5.timestamp:时间戳类型, 包含了年月日时分秒,yyyy-MM-dd HH:mm:ss,如果不赋值时间会自动赋值当前的系统时间。
6.varchar:字符串类型
*name varchar(20)姓名最大20个字符,zhangsan 8个字符,张三 2个字符
create table student(
id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);
复制表:create table stu like student
删除表:drop table if exists 表名
修改表:1.修改表名: alter table 表名 rename to 新表名;
2.修改表的字符集: alter table 表名 character set 字符集名称;
3.添加一列: alter table 表名 add 列名 数据类型;
4.修改列名称 类型: alter table 表名 change 列名 新列名 新列名类型; 名字类型都改
alter table 表名 modify 列名 列名新类型; 只改类型
5.删除列 alter table 表名 drop 列名;
DML:对表的数据进行操作
1.添加数据:insert into 表名(列名1,列名2,…列名n) values(值1,值2…值n)
2.删除数据:delete from 表名 where 条件; (DELETE FROM stu WHERE id=1;) 如果不写where 条件会删除所有数据
truncate table stu --删除表,然后再创建一个一模一样的空表
3.修改数据:update 表名 set 列名1=值1,列名2=值2,... where +条件 如果不写where 条件会修改掉所有的行
DQL:查询表中的记录
1.语法: select 字段列表 from 表名列表 where 条件列表 group by(分组) 分组字段 having 分组之后的条件 order by 排序 limit 分页限定
2.基础查询
1.1 多个字段的查询 select 字段列表 from 表名; 查询表中的记录:select * from 表名; (select 选择)
1.2 去除重复 select distinct 字段列表 from 表名;
1.3 计算列 select 字段列表1,字段列表2,字段列表1+ifnull(字段列表2,0) from 表名; null参与计算,结果仍为null
1.4 起别名 SELECT NAME,math,english,math+IFNULL(english,0)AS 总分 FROM student; 会把math+IFNULL(english,0)改成总分
3.条件查询
1.1 where 子句后跟条件
1.2 运算符 > < = SELECT *FROM student WHERE age>=20;查询年龄大于20岁的
between…and SELECT *FROM student WHERE age between 20 and 30; 查询年龄20和30岁之间
like 模糊查询
*占位符
*_:单个任意字符
*%:多个任意字符 SELECT * FROM student WHERE NAME LIKE “马%” ;
is null SELECT * FROM student WHERE english IS NULL;
and (&&)
or (||)
not (!)
4.排序查询(order by)
SELECT * FROM student ORDER BY math ; math成绩升序方式
SELECT * FROM student ORDER BY math DESC ; math成绩降序方式
SELECT * FROM student ORDER BY math,english ; math成绩升序方式,math成绩一样,再按英语成绩升序
5.聚合函数
count :计算个数 SELECT COUNT(NAME) FROM student; name一共有几列
max :计算最大值 SELECT MAX(math) FROM student; 数学最大分
min :最小值 SELECT min(math) FROM student; 数学最小分
sum :和 SELECT SUM(math) FROM student; 数学总分
avg :平均值 SELECT AVG(math) FROM student; 数学平均分 SELECT AVG(IFNULL(english,0)) FROM student;
聚合函数排除null 解决方案:选择不包含null的列 或 SELECT COUNT(IFNULL(english,0)) 个数 FROM student;
6.分组查询(group by 分组字段)
SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex; 查询女生的数学平均成绩和男生的数学平均成绩
SELECT sex, AVG(math),COUNT(id) FROM student WHERE math>70 GROUP BY sex; 分数大于70才可以参加比较
SELECT sex, AVG(math),COUNT(id) FROM student WHERE math>70 GROUP BY sex HAVING COUNT(id)>2; 人数大于2才可以参加比较
where 和 having 比较:
where在分组之前进行限定,如果不满足条件则不参与分组。having分组之后进行限定,不满足结果就不会被查询出来。
where后不能跟聚合函数 having可以
7.分页查询
1.1 语法:limit 开始的索引,每页的条数;
SELECT * FROM student LIMIT 0,3;
SELECT * FROM student LIMIT 3,3;
SELECT * FROM student LIMIT 6,3; 开始的索引=(当前的页数-1)*每页显示的条数