黑马程序员技术交流社区

标题: 【成都】数据库 [打印本页]

作者: 枫叶枫    时间: 2018-12-27 14:07
标题: 【成都】数据库
Junit 单元测试(白盒测试)
Junit使用步骤
断言:
Assert.assertEquals(期望结果,真是结果);用来检测程序是否真确
@Before:修饰的方法会在测试方法之前被自动执行
@After:修饰的方法会在测试方法执行之后自动被执行
反射:框架设计的灵魂
         将类的各个组成部分封装为其他对象,这就是反射机制

Field:成员变量
Constructor:构造方法
setAccessible(true):暴力反射。强制访问私有的
注解:
  JDK中预定义的一些注解
@Override:检测被该注解标注的方法是否是继承自父类(接口)的
  @Deprecated:该注解标注的内容,表示已过时
  @SuppressWarnings:压制警告 一般传递参数all  @SuppressWarnings("all")
属性:接口中的抽象方法
要求:
1. 属性的返回值类型有下列取值
基本数据类型
  String
枚举
  注解
  以上类型的数组
2. 定义了属性,在使用时需要给属性赋值
1. 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。
2. 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。
3. 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略
元注解:用于描述注解的注解
@Target:描述注解能够作用的位置
  ElementType取值:
  TYPE:可以作用于类上
  METHOD:可以作用于方法上
  FIELD:可以作用于成员变量上
@Retention:描述注解被保留的阶段
@Documented:描述注解是否被抽取到api文档中
@Inherited:描述注解是否被子类继承
----------------------------------------------------------------------
                   数据库

MySQL
服务启动
cmd->net start mysql 启动MySQL服务
cmd->net stop mysql 关闭MySQL服务
mysql -uroot -p登陆MySQL
mysql -h(需要登录的mysql ip地址) -uroot -p连接目标的密码
exit 退出登陆
SQL
      Structured Query Language:结构化查询语言
      其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
通用语法
show databases 查询数据库名称

DDL 操作数据库、表
DQL 查询数据
DML 增删改数据
DCL
DDL
     1.操作数据库:
create database 数据库名称;创建数据库
创建数据库,判断不存在,再创建:
create database if not exists 数据库名称;
创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
create database if not exists db4 character set gbk;
  show databases;查询所有数据库的名称:
查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;
修改数据库字符集:
alter database 数据库名称 character set 字符集名称
drop database 数据库名称 ;删除数据库
drop database if exists 数据库名称;判断数据库存在后再删除数据库
select database(); 查询正在使用的数据库名称
use 数据库名称;  使用数据库
     2.操作表(table)
创建表:
create table 表名(
        列名1 数据类型1,
        列名2 数据类型2,
         ...
        列名n 数据类型n
);
注意:最后一列不加逗号(,)
复制表:create table 表名 like 被复制的表名

数据库类型:
int:整数类型
double: 小数类型
date: 日期 只包含年月日yyyy-MM-dd
datetime: 日期包含年月日时分秒 yyyy-MM-dd HH:mm:ss
varchar: 字符串
  name varchar(20); 20为限制长度为20个字符
修改表名:
alter table 表名 rename to 新的表名;
修改表的字符集:
alter table 表名 character set 字符集名称
添加一列:
alter table 表名 add 列名 数据类型
修改列名称 类型
alter table 表名 change 列名 新列名 新数据类型
alter table 表名 modify 列名 新数据类型
删除列
alter table 表名 drop 列名

drop table 表名;删除表
drop table if exists 表名; 表存在就删除表
show tables 查询数据库中所有表的名称
desc 表名; 查询表结构
DML:增删改表中的数据
添加数据
insert into 表名(列名1,列名2,...列名n) values(值1, 值2, ...值n);
注意:
1. 列名和值要一一对应。
2. 如果表名后,不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2,...值n);
3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来

delete from 表名 [where 条件]:删除数据
注意:
1. 如果不加条件,则删除表中所有记录。
2. 如果要删除所有记录
  1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
  2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
修改数据:
update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];

DQL 查询数据
select 字段列表
from 表名列表
where 条件列表
group by 分组字段
having 分组之后的条件
order by 排序
limit 分页限定

      基础查询:
1.多个字段的查询
select 字段名1,字段名2... from 表名;
注意:如果查询所有字段,则可以使用*来替代字段列表。
2. 去除重复:distinct
3. 计算列
  一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
  ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
表达式1:哪个字段需要判断是否为null
如果该字段为null后的替换值。
4. 起别名: as:as也可以省略
       条件查询:
where后面跟条件
运算符:
  > 、< 、<= 、>= 、= 、<> ,!=
in(集合):集合里面是需要的条件
like:模糊查询
  _:单个任意字符
  %:多个任意字符
IS NULL
  and  或 &&
or  或 ||
not  或 !
如:
SELECT * FROM student WHERE age > 20;
-------------------------------------------------------
排序查询:
语法:order by 子句
asc ;升序,默认
desc; 降序
  SELECT * FROM 表名 ORDER BY 排序字段 DESC;
分页
       公式:
开始的索引=(当前页码-1)*每页显示的条数
select * from 表名 limit 0,3;第一页的分页

聚合函数:将一列数据作为一个整体,进行纵向
count():计算个数
max():计算最大值
min():计算最小值
sum():计算和
avg():计算平均值

分组查询
语法:group by 分组字段
  where 和 having 的区别?
     1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
     2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
例子:按照性别分组。分别查询男、女同学的平均分
SELECT 列名 , AVG(math) FROM 表名 GROUP BY 列名;

按照性别分组。分别查询男、女同学的平均分,人数
要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM 表名 WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
约束:
       对表中的数据进行限定,保证数据的正确性、有效性和完整性。
primary key; 主键约束,非空且唯一
not null; 非空约束
unique; 唯一约束
foreign key; 外键约束

添加非空约束:
列名 VARCHAR(20) NOT NULL
ALTER TABLE 表名 MODIFY 列名 VARCHAR(20) NOT NULL;
删除非空约束:
ALTER TABLE stu MODIFY 列名 VARCHAR(20);
添加唯一约束:
列名 VARCHAR(20) UNIQUE
ALTER TABLE 表名 MODIFY 列名 VARCHAR(20) UNIQUE;
删除唯一约束:
ALTER TABLE 表名 DROP INDEX 列名;
添加主键约束:
  一张表只能有一个,一般加在ID值上
id int primary key,
ALTER TABLE 表名 MODIFY 列名 INT PRIMARY KEY;
删除主键约束:
ALTER TABLE 表名 DROP PRIMARY KEY;

auto_increment; 自动增长,一般在主键约束后面配合使用
建表时和主键约束一起添加:
id int primary key auto_increment,
添加自动增长:
ALTER TABLE 表名 MODIFY 列名 INT AUTO_INCREMENT;
删除自动增长:
ALTER TABLE 表名 MODIFY id INT;
外键约束:
foreign key,让表于表产生关系,从而保证数据的正确性。

添加外键约束;
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
创建表之后,添加外键:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

级联:让外键约束表和主表相连,改动外键表主表一起改动
添加级联操作:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE  ;

级联更新:ON UPDATE CASCADE
级联删除:ON DELETE CASCADE








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2