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

Mysql_sql语法_mysql多表_JBDC基础笔记整理
第一部分MySql
一、  一些基本的概念
DDL:数据定义语言
create,drop,alter..
DCL:数据控制语言
grant,if…
DML:数据操纵语言
insert,update,delete…
DQL:数据查询语言
select
1.MySQL 数据库存储的方式
一台电脑安装了mysql , 这台电脑就是MySql数据库服务器
2.命令行打开mysql的指令: mysql -u root -p 回车输入password
3. sql的概念:结构化查询语言
第二部分 sql单表语法

二、sql对数据库的操作
1.       创建数据库:create database 库名 [character set 字符集collect 校对规则]
2.       查看数据库:
l  查看数据库服务器中所有的数据库:show databases;
l  查看某个数据库的定义信息: show create database 库名
3.       修改数据库
l  alter database 库名 character set 字符集 collect 校对规则
4.       删除数据库:
l  Drop database 库名
5.       切换数据库
l  Use 库名;
l  查看正在使用的数据库: select database();
三、sql对数据库表的操作
6.       Create table 表名(字段名称字段类型(长度) 约束,字段名称字段类型(长度) 约束…);
l  单表约束分类:
l  主键约束:primary key
l  唯一约束:unique
l  非空约束:not null
7.       Sql查看表
l  查看数据库下所有的表
Show tables;
l  查看某个表的结构信息
n  Desc 表名;
8.       Sql删除表
Drop table表名;
9.       Sql 修改表
l  添加列:alter table 表名 add 列名 类型(长度) 约束;
l  修改列的类型 alter table 表名 modify 列名 类型(长度) 约束;
l  删除列: alter table 表名 drop 列名;
l  修该列的名称: alter table 表名 change 旧列名 新列名 类型(length) 约束;
l  修改表名 :  rename table 表名 to 新名;
l  修改表的字符集 :  alter table 表名 character set字符集;
四、sql对数据库表的记录修改;
10.  添加表的记录
l  添加指定列
n  Insert into 表名 (列名1,列名2…) values (值1,2,……)
l  添加所有列
n  Insert into 表名 values (值1, 值2 ,……最后一个列的值)
11.  添加中文记录
insert into user values(null,'张三','123',23,'1993-09-01');
直接向数据库中插入中文记录会出现错误!!!
解决方法:
         Show variables like'%character%';  --**查看数据库中与字符集相关参数:**
         需要将MySQL**数据库服务器中的客户端部分的字符集改为gbk。**
         找到MySQL*的安装路径:my.ini文件,修改文件中[client]下的字符集
         * 重新启动MySQL的服务器
         services.msc
12.    Sql修改表的记录
1)       Update 表名 列名 = 值where 条件; 修改指定列
2)       Update 表名 列名 = 值;      修改所有列
3)       Update 表名 列名= 值  , 列名 = 值 where 条件; 按条件修改多个列
13.    Sql删除表的记录
1)       Delect from 表名 [where 条件]
                                      i.     如果没有条件  就是删除整个列
                                    ii.     如果有条件  按条件删除指定的列
删除表中的记录有两种做法:
delete fromuser;
删除所有记录,属于DML语句,一条记录一条记录删除。事务可以作用在DML
truncatetableuser;
删除所有记录,属于DDL语句,将表删除,然后重新创建一个结构一样的表。
事务不能控制DDL
14.    Sql查询表的记录
1)       Select */查询的列  from 表名 ;
2)       Select */查询的列  from 表名 where 条件;
3)       Select */查询的列  from 表名 where 条件and/or /not 条件 ;
4)       Select */查询的列  from 表名 where 条件>  <  =  >=  <= <>
5)       Select */查询的列  from 表名 where 条件in (  );  范围查询
6)       Select */查询的列  from 表名 where  name like ‘李_’/’李%’/’%李%’ / ‘%李’;   李开头的两个字/李开头的 / 包含李的 / 李结尾的
15.    Sql查询表的记录
1)       排序查询:Orderby   asc/desc  升序/降序
2)       分组统计查询: sum()   avg() max()   min()   count()
3)       分组查询:  group by
4)       where的子句后面不能跟着聚合函数。如果现在使用带有聚合函数的条件过滤(分组后条件过滤)需要使用一个关键字having
16.    S(select)…F(from)…W(where)…G(groupby)…H(having)…O(order by);  
第三部分 多表和事务
多表
17.  外键约束
alter table employee addforeign key (dno)  references dept (did);
18.  三种关系
一对多
  多的一方创建外键指向一的一方的主键
多对多
  创建中间表,中间表至少有两个元素分别指向两个表的主键
一对一
  为表的外键设置唯一约束
  或者把两个表的内容写到一个表里
19.  多表查询-连接查询
1)      内连接(inner可以省略)
Theway1:Select * from biao1inner join biao2 on 关联条件;
Theway2:select * from biao1 ,biao2 where 关联条件;
2)      外连接(outer可以省略)
左外连接: select * from biao1left outer join biao2 on 关联条件;
右外连接: select * from biao rightouter join biao2 on 关联条件
3)      交叉连接
20.  多表查询-子查询: 一个查询语句条件需要依赖另一个查询语句的结果。
in   满足什么条件
exists  如果后面的存在  前面的语句就会执行   有点像if
any  大于任意一个就ok    就是大于最小的一个
all    大于括号内所有的  就是i大于最大的一个
21.  多表查询的思想
从里面的条件往外分析.一层一层的找条件;
事务
一、        事务的概念:
事务:指的是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么全都成功,要么全都失败。
二、        事务的特性
原子性:事务的不可分割,组成事务的各个逻辑单元不可分割。
一致性:事务执行的前后,数据完整性保持一致。
隔离性:事务执行不应该受到其他事务的干扰。
持久性:事务一旦结束,数据就持久化到数据库中。
三、        事务的几个方法
1.开启事务:start transaction;
2.提交事务Commit;
3.回滚事务rollback
四、        事务的隔离级别
如果不考虑隔离性,引发一些安全问题:
隔离性:一个事务的执行,不应该受到其他事务的干扰。
如果不考虑隔离性(一个事务执行受到其他的事务的干扰),引发一些安全问题,主要体现在读取数据上:
脏读:一个事务读到了另一个事务未提交的数据,导致查询结果不一致
不可重复读:一个事务读到了另一个事务已经提交的update的数据,导致多次查询结果不一致。
    虚读/幻读:一个事务读到了另一个事务已经提交的insert的数据,导致多次查询结果不一致。
五、        设置事务隔离级别
readuncommitted :脏读,不可重复读,虚读都有可能发生
readcommitted :避免脏读。但是不可重复读和虚读是有可能发生
repeatableread :避免脏读和不可重复读,但是虚读有可能发生。
serializable         :避免脏读,不可重复读,虚读。
JDBC基础
JDBC的开发流程
    step1: 注册驱动
               com.mysql.jdbc.Driver
    step2: DriverManager.getConnection(url,username,passname)  .sql包下
    step3: 编写SQL语句,以前的值的地方用占位符代替  ?  就是占位符
    Step 4: 预编译SQL  获得可执行SQl语句的对象 PreparedStatement ps =conn.prepareStatement(String sql);
    step 5: 为SQL设置值,用值代替SQL语句中的 ?  ps.setXXX();
    step 6: 执行sql语句
      如果是查询: ResutSet rs =ps.executeQuery();
      遍历结果集
      while(rs.next()){
           rs.getXXX(String columnName)
           //columnName 默认是表地段名,如果取了别名就用别名
      }
      如果是增删改:
      int num = ps.executeUpdate();
      // num代表影响行数
    step 7: 释放资源
工具类的抽取
   Properties prop = new properties();
    prop.load(newFileInputStream(String path))
   prop.getProperty(String key)
    属性文件:properties
    key =value;
   
   
    1.释放资源时候方法的重载.
   2.db.properties 里面存的内容是以  键值对存在的
      url=jdbc:mysql:///students
      不需要"";
背后的思想: 程序的解耦和;

0 个回复

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