本帖最后由 小石姐姐 于 2018-5-11 10:10 编辑
SQL、JDBC笔记 SQL
数据库:
创建数据库语法:
create database 数据库名称 [character set 字符集 collate 字符集校对规则];
create database (name数据库名字);
create database (name数据库名字) character set (gbk/utf8) collate_bin;
查看数据库语法:
查看数据库服务器中所有的数据库:show databases;
show databases;
查看某个数据库的定义信息: show create database 数据库名称;
show create database (name数据库名字);
修改数据库语法:
alter database 数据库名称 character set 字符集 collate 校对规则;
alter database (name数据库名字) character set (utf8/gbk);
删除数据库语法:
drop database 数据库名称;
drop database (name);
切换书库库:use 数据库名称;
use name;
查看当前正在使用的数据库:
select database();
对数据库表进行操作
创建表:
语法:create table 表名称(字段名称 字段类型(长度)约束,字段名称 字段类型(长度)约束...);
字段类型:
一个实体对应一个表,一个实体属性对应表的一个字段。
MySQL中的类型:tinyint/smallint/int/bigint float double bit
char和varchar类型
char和varchar的区别:
char代表是固定长度的字符或字符串。
定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。
varchar代表的是可变长度的字符串。
定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。
date/time/datetime/timestamp
datetime和timestamp区别
datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入到数据库中
timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库中。
约束:
单表约束的分类:
主键约束:primary key 主键约束默认就是唯一 非空的
唯一约束:unique
非空约束:not null
建表语句:
create table user'表名称'(
id'字段名称' int'字段类型' primary key'主键约束' auto_increment'自动递增',
username'字段名称' varchar(20)'字段类型(长度)' unique'唯一约束',
password'字段名称' varchar(20)'字段类型(长度)' not null'非空约束',
birthday'字段名称' date'字段类型'
);
查看表:
查看某个数据库下的所有的表:show tables;
查看某个表的结构信息:desc 表名;
删除表:
删除:drop table 表名;
修改表:
添加列:alter table 表名 add 列名 类型(长度) 约束;
alter table user add image varchar(10) not null;
修改列类型,长度和约束:alter table 表名 modify 列名 类型(长度) 约束;
alter table user modify image varchar(20);
删除列:alter table 表名 drop 列名;
alter table user drop image;
修改列名称:alter table 表名 change 旧的列名 新的列名 类型(长度) 约束;
alter table user change image age int(20) nut null;
修改表名:rename table 表名 to 新的表名;
rename table user to name;
修改表的字符集:alter table 表名 characher set 字符集;
alter table user characher set gbk;
对数据库表的记录进行操作(重点)
添加表的记录
语法:
1:向表中插入某些列:insert into 表名 (列名1,列名2,列名3...) values(值1,值2,值3...);
2:向表中插入所有列:insert into 表名 values(值1,值2,值3...)
注意:值得类型是字符串或日期类型,使用单引号引起来
直接向数据库中插入中文记录会出现错误!!!
解决方法:
show variables like '%character%'; --查看数据库中与字符集相关参数:
需要将MySQL数据库服务器中的客户端部分的字符集改为gbk。
找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集
services.msc
修改表的记录
语法:
update 表名 set 列名=值【where 条件】;
修改某一列的所有值:update user set password='abc';
按条件修改数据:update user set pasword='123' where username='aaa';
按条件修改多个列:update user set password='111',age='21' where username='qqq';
删除表的记录
语法:
delete from 表名 n delete from 表名 [where 条件];
删除表中的记录有两种做法:
delete from user;
删除所有记录,属于DML语句,一条记录一条记录删除。事务可以作用在DML语句上的
truncate table user;
删除所有记录,属于DDL语句,将表删除,然后重新创建一个结构一样的表。事务不能控制DDL的
查询表的记录
语法:
select [distinct] *|列名 from 表 [条件];
查询所有:select * from exam;
查询某一列:select name from exam;多列加","逗号隔开
去重用 distinct 如:select distinct name from exam;
事物:
事物的特点:原子性 一致性 隔离性 持久性
开启事物:start transaction;
提交事物:commit;
回滚事物:rollback;
事物的隔离级别:
read uncommitted :脏读,不可重复读,虚读都有可能发生
read committed :避免脏读。但是不可重复读和虚读是有可能发生
repeatable read :避免脏读和不可重复读,但是虚读有可能发生。
serializable :避免脏读,不可重复读,虚读。
JDBC的增删改查:
什么是JDBC:
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,
它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,
据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序
JDBC操作步骤:
1:注册驱动:Class.forName()
2:获得连接:Connection conn = DriverManger.getConnection(url,username,password)// Connection java.sql包下的
3:编写SQL语句,String sql ="",以前的值的地方用占位符代替 ?就是占位符
4:预编译sql并且获得可执行sql语句的对象PreparedStatement ps = conn.prepareStatemet(String sql)
5:为sql语句设置值,用值代替sql语句中的? ps.setXXX(int n,值) n:代表第几个问号的意思,n从1开始
6:执行sql语句
如果是查询:ResutSet rs = ps.executeQuery();
遍历结果集:
while(rs.next()){
rs.getXXX(String columnName)/rs.getObject(String columnName) ;
//columnName默认是表地段名,如果取了别名,用别名
}
如果是增删改:int num = ps.executeUpdate() ;// num 代表影响的行数
7:释放资源
|