A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 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:释放资源




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马