使用Java实现数据库编程—06 项目:银行ATM取款机系统

1、        创建普通用户:


语法:

CREATE USER `user`@`host` [IDENTIFIED password];   //user:用户名,host:主机名,password:密码;


Eg:创建本地用户teacher,密码为123456

CREATE USER `teacher`@`localhost` IDENTIFIED BY ‘123456‘;


Eg:本地用户student,无密码

CREATE USER `student`@`localhost`;   


`@`localhost`本地用户,允许登录其他主机可省略

2、        创建用户并授权:


GRANT语句可实现创建用户同时授权或为已存在的用户授权;


语法:

GRANT priv_type ON databasename.tablename   // priv_type:用户操作权限列表;  // databasename.tablename:权限范围,即库名.表名

TO `user`@`host`[IDENTIFIED BY ‘password‘] [WITH GRANT OPTION];  //赋予GRANT权限


常用操作权限

  CREATE和DROP权限

  INSERT、DELETE、SELECT和UPDATE权限

  ALTER权限


注:1.如果授予所有权限, priv_type可使用ALL

2.为所有数据库和表授权,权限范围可使用*.*


Eg:创建本地用户xiaoming,密码123456,赋予myschool数据库中student表增加和查询权限

    GRANT INSERT,SELECT ON myschool.student TO `xiaoming`@`localhost`  IDENTIFIED BY ‘123456‘;


Eg:为[email protected]用户授予myschool数据库中view_student视图的查询权限

GRANT SELECT ON myschool.view_student TO `student`@`localhost`;


创建用户报错的:

mysql> grant all on epet.*to `QINGG`@`localhost` identified  by ‘1234‘;

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

解决方法:

mysql> flush privileges

Query OK, 0 rows affected (0.01 sec)

mysql> grant all on epet.*to `QINGG`@`localhost` identified  by ‘1234‘;

Query OK, 0 rows affected, 1 warning (0.01 sec)

3、        使用mysqladmin命令修改root账户密码:


语法:

  mysqladmin–u username –p password "newpassword"    // newpassword:新密码


注:mysqladmin需在DOS命令行执行,回车后输入原密码;


Eg:将root密码修改为1234

  mysqladmin –u root –p password "1234"

Enter password:****

4、        使用SET命令修改用户密码:登录MySQL服务器后,使用SET命令修改当前用户密码;


语法:

  SET PASSWORD  [FOR `username`@`host`]= PASSWORD("newpassword")   //[FOR `username`@`host`]:可指定修改其他用户密码


注:只有超级管理员用户(如root用户)才能修改其他用户密码,如果是普通用户,可修改自己的密码;


Eg修改当前用户密码

SET PASSWORD = PASSWORD("0000");


Eg修改其他用户密码

SET PASSWORD  FOR `teacher`@`localhost`= PASSWORD("8888");    

5、        删除用户:


语法:

DROP USER `username1`@`host`[,`username2`@`host`……];

  EgDROP USER `student`@`localhost`;      

6、       
DISTINCT:distinct一般是用来去除查询结果中的重复记录的,而且这个语句在select、insert、delete和update中只可以在select中使用;


Eg:在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。

A

B:

1.作用于单列

select distinct name from A

执行后结果如下:

2、作用于多列

Eg

select distinct name, id from A

执行后结果如下:

实际上是根据nameid两个字段来去重的,这种方式AccessMySQLSQL Server同时支持。

Eg

select distinct xing, ming from B

返回如下结果:

返回的结果为两行,这说明distinct并非是对xingming两列字符串拼接后再去重的,而是分别作用于了xingming列。

注意:从上例中可以发现,当distinct应用到多个字段的时候,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,

而且distinct只能放到所有字段的前面

如下语句是错误的:

SELECT xing, distinct ming from B; // 该语句是错误的

抛出错误如下:

[Err] 1064 -
You have an error in your SQL syntax;

check the
manual that corresponds to your MySQL server version for the right syntax to
use near ‘DISTINCT province from B’ at line 1

3COUNT统计

select count(distinct name) from A;   --表中name去重后的数目, SQL ServerMySQL支持,而Access不支持

count是不能统计多个字段的,下面的SQL无法运行。

select count(distinct name, id) from A;

若想使用,请使用嵌套查询,如下:

select count(*) from (select distinct xing, name from B) AS M;

4distinct必须放在开头:

distinct应用到多个字段的时候,其应用的范围是其后面的所有字段,而不只是紧挨着它的一个字段,而且distinct只能放到所有字段的前面,

select id, distinct name from A;  
--
会提示错误,因为distinct必须放在开头

5、针对NULL的处理:distinctNULL是不进行过滤的,即返回的结果中是包含NULL值的。

6、与ALL不能同时使用

默认情况下,查询时返回所有的结果,此时使用的就是all语句,这是与distinct相对应的,如下:

select all country, province from person

7、与distinctrow同义

select distinctrow expression[,expression...] from tables [where
conditions];

这个语句与distinct的作用是相同的。

8、对*的处理:*代表整列,使用distinct*操作

select
DISTINCT * from person 

相当于

select
DISTINCT id, `name`, country, province, city from person;

9其他

distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A备注列,如果想获取distinc name,以及对应的备注字段,想直接通过distinct是不可能实现的。

 

原文地址:https://www.cnblogs.com/HQING/p/9347553.html

时间: 2024-07-30 21:36:01

使用Java实现数据库编程—06 项目:银行ATM取款机系统的相关文章

使用Java实现数据库编程—01 第一章 数据库的设计

 1.        数据库设计:将数据库中的数据实体及这些数据实体之间的关系进行规划和结构化的过程: 良好的数据库设计: 节省数据的存储空间 能够保证数据的完整性 方便进行数据库应用系统的开发 糟糕的数据库设计: 数据冗余.存储空间浪费 内存空间浪费 数据更新和插入的异常  2.        数据库设计的步骤: 1.  需求分析阶段:分析客户的业务和数据处理需求 2.概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整 3. 详细设计阶段:将E-R图转换为多张表,进行逻辑设计,确

使用Java实现数据库编程—08 DAO 模式

1.        数据持久化:将程序中的数据在瞬时状态和持久状态间转换的机制即为数据持久化: 2.        持久化的实现方式:数据库.普通文件.XML文件: 3.        JDBC封装:采用面向接口编程,可以降低代码间的耦合性: 为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据,: 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象,就可以实现对数据的访问了, 从而隔离实现的细节,采用面向接口编程,可以降低代码间的耦合度,提高代

java Socket(TCP)编程小项目

package 服务器端相关操作; import java.io.Serializable; /* * 创建存储需要传输信息的对象,方便客户端向服务器端传送数据 */ public class ClientToServerInfo implements Serializable{ String sign; String name; String password_OR_path; //重写构造函数 public ClientToServerInfo(String sign,String name

使用Java实现数据库编程—02 第二章 初始MySQL

1. MySQL:        ●  MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.            MySQL最流行的关系型数据库管理系统,在Web应用方面MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一.            MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度

java MySQL数据库编程 第四章 高级查询(二)

第四章 高级查询(二) (1)通过在子查询中使用EXISTS子句,可以对子查询中的行是否存在进行检查.子查询可以出现在表达式出现的如何位置 (2)子查询语句可以嵌套在SQL语句中任何表达式出现的位置. 一.EXISTS子查询 1.使用EXISTS语句判断该数据库对象是否存在: DROP TABLE IF EXISTS temp; 2. EXISTS作为WHERE语句的子查询: SELECT .....FROM 表名 WHERE EXISTS(子查询); 3. EXISTS关键字后面的参数是一个任

使用Java实现数据库编程—05 事务、视图、索引、备份和恢复

1.事务(Transaction): 事务是将一系列数据操作绑成一个整体进行统一管理. 如果一事务执行成功,则咋子该事务中进行的所有数据更改均会提交,称为数据库中的永久成部分. 如果事务执行是遇到错误且必须取消或回滚,则数据将全部恢复到操作前的状态,所有数据的更改均被清除. 定义: 事务是一种机制.一个操作序列,包含了一组数据库操作命令,并且把所欲的命令作为一个整体起向系统提交侧小操作请求,即这一组数据库命令要么都执行,要么都不执行.   Eg: 转账过程就是一个整体 它需要两条UPDATE语句

java 数据库编程 学习笔记 不断更新

最近开始学习java,感觉java的数据库编程需要发个随笔记录一下,话不多说 切入正题. 一.数据库访问技术的简介 应用程序  →  执行SQL语句 →数据库 → 检索数据结果 → 应用程序   ( ODBC         JDBC(两个常用的API)) java主要使用的 JDBC驱动程序进行数据库的编程 Java 应用程序 <------> JDBC   <------>  数据库 二.JDBC 的体系结构 应用层 ↓ 驱动层 ↓ 各个接口 •Driver •Connecti

数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例 实验所用数据表 子查询,解决一步不能求解 查询工资比scott高的员工信息: 子查询知识体系搭建: 解释3,查询部门是sales的员工信息: 方法1:子查询 [方法2]:多表: 优化考虑: 解释4[select],只能放单行子查询 解释4[from] 考题:显示员工姓名,薪水 解释

JAVA数据库编程(JDBC技术)-入门笔记

本菜鸟才介入Java,我现在不急着去看那些基本的语法或者一些Java里面的版本的特征或者是一些晋级的知识,因为有一点.Net的OOP编程思想,所以对于Java的这些语法以及什么的在用到的时候在去发现学习一下.我现在很迫不及待用JAVA想来实现以下对数据库的增删改查.想实现就来看Java是怎么操作数据库的,回想下.Net里你可能会配置web.Config,或者你去写一些DBhelper类然后调用里面的自己定义的一些增删改查的方法,更或者你去配一些数据控件等等往往发现操作基本都是一体化的简单.现在面