MySQL:MySQL是一个关系型数据库,保存的是实体之间的关系,通常一个项目应用创建一个数据库; 数据库中一般存入的是表单数据; 数据库的基础语句操作: DDL: 数据定义语言 DCL:数据控制语言 DML:数据操纵语言 DQL:数据查询语言 数据库每执行一句sql语言需要加分号; Show databases;//查询所有的数据库; Show creat database 数据库名称; //查询数据库格式定义 alter database 数据库名称 character set 字符集(utf-8)collate 校对规则; 删除数据库 Drop database 数据库名称//删除数据库; use 数据库名称//切换数据库; 创建表单:Use 数据库名称; Create table 表名(字段名 类型(长度) 约束,字段名称, 类型(长度),约束.....);//多列表创建,一列之间用空格隔开,多列之间用逗号,最后一个不写逗号; 单表约束分类: 主键约束: peimary key 默认就是唯一非空 唯一约束: unique 非空约束: not null Char 和varchar的区别:char固定长度 varchar是可变的; 表单里插入时间也要用字符串方式写入 Datetime 和Timestamp的区别 Datetime 就是既有日期又有时间的日期类型,如果没有像字段中存值,数据库使用null存入到数据库中; Timestamp 也是既有日期也有时间的日期类型,如果没有像字段中存值,数据库用当前的系统时间存入数据库中; Auton_increment自动增长; Show tables;//查询此数据库中所有的表数据; Drop table 表名;//删除表 表修改: Alter table 表名 add 列名 类型(长度)约束;//添加列 Alter table 表名 modify 列名 类型(长度)约束;//修改列的类型和约束; Alter table 表名 drop 列名;//删除列 Alter table 表名 change 旧列名 新列名 类型(长度) 约束;//修改列名,中间用空格隔开; Rename table 表名 to 新表名;//修改表名 Rename table 表名 character set 字符集;//修改表的字符集 表记录:Insert into 表名(列名...)values (值....);//插入几个列就添加几个值; Insert into 表名 values (值.....);//插入所有列; 值得类型与数据库中列表的类型一致 值的顺序与数据库中表列的顺序一致 不能超过最大长度 值的类型是字符串或者是日期类型,使用单引号引起来; 修改表记录: Update 表名 set 列名=值 where 条件; 值的类型与列的类型一致 值的最大长度不能超过列设置的最大长度 字符串类型和日期类型添加单引号; 删除表记录: Delete from 表名 where 条件;//一条一条记录的删除; Truncate table 表名;//删除表,然后创建一个结构一样的表,不可恢复; 删除表的记录是删除一行记录,如果不写条件判断那么就是删除表中所有记录; 常看表记录: 基本查询:select *列名 from 表(条件) 查询其中两项或多项: select 列名,列名 from 表名; 查询不重复的值 select distinct 列名 from 表名; 查询 select 列名,列名相加(int 类型) from 表名; Select 列名,列名相加 as 别名 from 表名; 条件查询: select *from 表名 where name=' '; select *from 表名 where name=' 'and 列名= ' '; like可以进行模糊查询,在like子句中可以使用_或者%作为占位符._只能代表一个字符 而%号可以代表任意个字符 like和=不能同时用; like 'A_' :必须是两个字,而且A开头 like 'A%' :开头是A的,后面任意字符 like '%A' :以A结尾的; like '%A%' 包含A的就可以; 并列( and 与 )(or 或 ); select *form 表名 where in范围; <>不等的意思相当于!=; 排序查询: select *from 表名 order by 列名 desc; 降序 从大到小 select *from 表名 order by 列名 asc ; 升序 从小到大 select *from 表名 where 列名 like '%A' order by 列名 asc; 模糊排序查询 聚合函数使用: where 后面不能跟聚合函数. 需要使用一个关键字 having sum(): 索取总值 select sum(int类型列) from 表名; 多个用 , 号隔开 sum(),sum();条件查询后面直接加条件操作; 总值相加 sum(A+B+C ),如果里面有null则会没有null后面的值, sum(A)+sum(B)+sum(C)不会这样; count() 获得总记录: select count(*)from 表名; max() select max(A)from 表名;获取A里面的最大值 min() select min(A)from 表名;获取 A里面的最小值 avg() select avg(A) from 表名;获取A里面值的平均值; S一F一G一H; 表关系:表关系: 一对多 建表: 多的一方创建外键连接一的一方主键; 多对多 建表 需要借助第三张表 第三张表至少两个字段作为外键指向双方主键 一对一 唯一外键对应的方式 unique(设置唯一) 多表查询分类 链接查询 select *from 表01 cross join 表02 内连接 显示内连接: select* form 表01 inner join 表02 on 关联条件 隐式内连接: select* form 表01,表02 where 关联条件 外连接 左外连接 select *form 表01 left outer join 表02 on 关联条件; 以左边表开始查询 右外连接 select *from 表01 right outer join 表02 关联条件 以右边表开始查询; JDBC添加: insert into 表名 values(); 删除 delete from 表名 where 判断条件; 修改 update 表名 set 修改的东西 where 判断条件 查询 select *from 表名; 导包为java.sql下的包,导包错误的话一些地方类型会显示不一致,让你强转,这时候就可以看导报是否错误了; @Test可以用于测试而不用写main方法; 需要导包:import org.junit.Test; 加载驱动----------获得连接路径---------创建执行SQL语句对象-----------执行SQL语句----------释放资源 Connection conn = null;//设置为空; PreparedStatement ps = null;//设置为空; Class.forName(“com.mysql.jdbc.Driver”);//加载驱动,使用mySQL数据库固定写法; Connection conn(变量名自定义)=DriverManager.getConnection(“jdbc:mysql:///数据库名”,”root(权限)”,”密码”);//加载本地数据库写法,密码是自己的密码; String sql(变量名自定义)=” SQL语句 ”;//写入SQL语法操作; Ps=conn.prepareStatement(sql);//执行sql语句; 释放资源规范写法: if (rs != null) { try { rs.close(); } catch (SQLException s) { s.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException s) { s.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException s) { s.printStackTrace(); } }
|