Monthly Archive: May, 2016

MySQL基本语句

MySQL脚本的基本组成

与常规的脚本语言类似, MySQL 也具有一套对字符、单词以及特殊符号的使用规定, MySQL 通过执行 SQL 脚本来完成对数据库的操作, 该脚本由一条或多条MySQL语句(SQL语句 + 扩展语句)组成, 保存时脚本文件后缀名一般为 .sql。在控制台下, MySQL 客户端也可以对语句进行单句的执行而不用保存为.sql文件。

标识符

标识符用来命名一些对象, 如数据库、表、列、变量等, 以便在脚本中的其他地方引用。MySQL标识符命名规则稍微有点繁琐, 这里我们使用万能命名规则: 标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。

对于标识符是否区分大小写取决于当前的操作系统, Windows下是不敏感的, 但对于大多数 linux\unix 系统来说, 这些标识符大小写是敏感的。

关键字:

MySQL的关键字众多, 这里不一一列出, 在学习中学习。 这些关键字有自己特定的含义, 尽量避免作为标识符。

语句:

MySQL语句是组成MySQL脚本的基本单位, 每条语句能完成特定的操作, 他是由 SQL 标准语句 + MySQL 扩展语句组成。

函数:

MySQL函数用来实现数据库操作的一些高级功能, 这些函数大致分为以下几类: 字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。

MySQL中的数据类型

MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:

  • 数字类型
    1. 整数: tinyint、smallint、mediumint、int、bigint
    2. 浮点数: float、double、real、decimal
  • 日期和时间: date、time、datetime、timestamp、year
  • 字符串类型
    1. 字符串: char、varchar
    2. 文本: tinytext、text、mediumtext、longtext
    3. 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

创建一个数据库

使用 create database 语句可完成对数据库的创建, 创建命令的格式如下:

例如我们需要创建一个名为 samp_db 的数据库, 在命令行下执行以下命令:

为了便于在命令提示符下显示中文, 在创建时通过 character set gbk 将数据库字符编码指定为 gbk。创建成功时会得到 Query OK, 1 row affected(0.02 sec) 的响应。

注意: MySQL语句以分号(;)作为语句的结束, 若在语句结尾不添加分号时, 命令提示符会以 -> 提示你继续输入(有个别特例, 但加分号是一定不会错的);

提示: 可以使用 show databases; 命令查看已经创建了哪些数据库。

Mysql workbench 数据库设计

  • PK:primary key 主键
  • NN:not null 非空
  • UQ:unique 唯一索引
  • BIN:binary 二进制数据(比text更大)
  • UN:unsigned 无符号(非负数)
  • ZF:zero fill 填充0 例如字段内容是1 int(4), 则内容显示为0001
  • AI:auto increment 自增

外键约束

MySQL中定义外键的表,双方必须都是Innodb

子表中外键字段和其对应父表中的字段必须都设为索引主键自动为索引

E-R图中几种关系

  • Identifying Relationship
    需要提供外键给另外一张表作联合主键
  • Non-identifying Mandatory Relationship
    强制外键
  • Non-identifying Optional Relationship
    可选外键
  • One-to-one Relationship Non-specific
    无特殊关系

判别一个关系是Non-Identifying还是Identifying只要区分子实体的主键,看是否需要父实体的外键共同作为主键(类似联合主键?),需要则为Identifying,如果子实体自己的主键就可唯一标识则它为Non-Identifying

  • 虚线1:1关联是添加外键的
  • 实线1:1是添加外键为主键的

 

JAVA JDBC 报错一则!

Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

MYSQL在高版本的连接中需要指定SSL开启状态

 

MySql 开启外部访问

  • 第一个*为MySQL中的数据库名。
  • 第二个*为MySQL中的指定的数据库的表名。
  • root为授权用户的用户名。
  • %为任意主机,也可以写指定的ip地址或者主机名。
  • PASSWORD为授权改用户在指定的数据访问MySQL时的密码,如果该密码和本地用户同名用户的密码不一致,远程访问时务必使用该授权密码。

Java常用API

java.io.BufferedReader

用于从文件中读入一段字符,所属套件:java.io

构造函数BufferedReader(java.io.FileReader FileReader变量)
说明:新建一个BufferReader对象。

  •  close方法 void close()
    说明:关闭BufferReader对象。
  • readLine方法 java.lang.string readLine()
    说明:从文件中读取一行字符。若为NULL,代表读取至文件结尾。

java.io.BufferedWriter

向文件写入一段字符,所属套件:java.io

构造函数:BufferedWriter(java.io.FileWrite FileWrite变量)
说明:新建一个BufferWriter对象。

  • close方法:void close()
    说明:关闭BufferedWriter对象。
  • newLine方法:java.lang.string newLine()——
    说明:向文件写入分行符。
  • write方法:void write(char字符);void write(char[]字符数组);void write(string 字符串);void write(char[]字符数组,int数组中起始位置,int输出长度) 说明:将数据写入文件。

Java.io.File

File用于管理文件或目录; 所属套件:java.io

构造函数:File(java.lang.string路径,java.lang.string文件名)
说明:建立代表文件或目录的File对象。

  • canRead方法:(boolean canRead())判断是否可读取
  •  canWrite方法:(boolean canWrite)判断是否可以写入
  • createNewFile方法:(boolean createNewFile())说明:创建文件,成功返回TRUE,否则返回false
  • delete方法:(boolean delete())说明:删除文件或目录,成功返回TRUE,否则返回FALSE。
  • exist方法:(boolean exist()) 说明:检查文件或目录是否存在。
  • getName方法:(java.lang.string getName()) 说明:取得文件或目录的名称。
  •  lastModified方法:(long lastModified()) 取出最后一次修改的时间。
  • length方法:(int length())说明:取得文件的长度
  •  listfiles方法:(File[] listFiles()) 说明:取出该目录下的所有文件。
  •  isDirectory方法:(boolean isDirectory())说明:判断是否为文件。
  •  isFile方法:(boolean isFile) 说明:判断是否为文件。
  • isHidden 方法:( Boolean isHidden()) 说明:判断是否为隐藏文件。
  • mk dir方法:(boolean mkdir)说明:创建目录,成功返回TRUE,否则返回FALSE

java.io.FileReader

FileReader 用于从文件中读取字符 ;所属套件:java.io

构造函数(FileReader (Java.lang.strig文件路径和名称) 说明:为要读取的文件建立一个FileReader对象)

  • read方法:(1)(int read())说明:从文件读取一个字符,返回值为一整数,为读取得字符串的字符码,若返回值为-1,则代表已经读到文件的结尾。(2) int read(char[] chararray,int startpos,int length)说明:将从startpos开始,读取length字符,保存到chararray数组中,返回值是读取到的字数,如果返回-1,则代表已经读到文件的结尾。
  •  skip方法:(long skip(int 要略过的字符数) 说明:直接将文件读取指针向后移动数个字符,从而略过字符不读取);

java.io.FileWrite类

  • 用于向文件中写入读取字符;所属套件java.io
    FileWrite(java.lang.string文件路径与名称) Filwrite(java.lang.string文件路径与名称,Boolean append) 说明:为要写入的文件建立一个FileReader对象,参数append表示是否在原文件后添加。
  • Write方法:(void write(char字符),char[]字符数组,string字符串,char[]字符数组、int数组中起始位置,int输出长度)说明:将数据写入文件。

java.lang.string类

string类用于处理字符串这种数据类型;所属套件:java.lang

charAt方法。(语法:char charAt(int index) 说明:返回指定位置的字符

  •  equals方法:(语法:boolean equals(object anobject) 说明:判断字符串是否与指定的对象相等)事例:if (str.equals(“abc”)){out.print(“str的值为abc”);}
  •  index of方法:(语法:int indexOf(char ch);int indexOf(string str) 说明:返回要查找的字符或子串第一次出现在字符串中的位置,如果找不到该字符/子字符串,将返回-1)。
  • lastindexOf方法(语法:int lastindexOf(char ch);int lastindexOf(string ch) 说明:返回要查找的字符或子串最后一次出现在字符中的位置。如果找不到该字符/子字符串,将返回-1)
  • replace方法:(语法:string replace(char oldChar,char newChar) 说明:替换字符串中的某个字符,返回值为替换后的结果。)
  • substring方法:(方法:string substring(int beginIndex);string substring(int beginIndex,int endIndex) 说明:取得字符串中的子串。示例: string a=”AABB”;b=a.substring(1) 最后结果是“ABB”c=a,subsirng(1,2);最后结果是“AB”
  • 大小写转换的方法(语法:string toLowerCase();string toUpperCase() 说明:对字符串进行大小写转换,返回值为转换后的结果)
  • valueOf方法(语法:string valueOf(Object obj) 说明:将对象转换为字符串,返回值为转换后的结果)

java.net.URL Encoder

说明:URLEncoder类用于URL的编码。所属套件:JAVA .net

  • encode方法(语法:java.lang.string encode(java.lang.sring要编码的字符串) 说明:返回编码后的字符串。)

java.text.simpleDateFormat

说明:simpleDateFormat类用于处理Date数据的格式化输出和输入。所属套件:java.text)

构造函数:(语法:simpleDateFormat(java.lang.strng格式化字符串)
说明:根据指定格式化字符串,产生simpleDateFormat对象)

  •  format方法:(语法:java.lang.string format(java.util.Date日期数据) 说明:将Date数据转化为指定格式的字符串。)
  • parse方法:(语法:java.util.Date parse(java.lang.sring 字符串) 说明:将字符串转化为Date 数据。如果格式错误,将会产生异常。

java.spl.DriverManager

说明:当数据库驱动程序加载到内存中后,系统将会自动利用DriverManager类注册加载的驱动程序,使其状态为可使用(available)所属套件:java.spl

  • getConnection方法:(语法:getConnection(string数据源名称,string用户名称,string用户密码) 说明:打开数据库链接。)

java.sql.connection

说明:Connection类用于处理一条与数据库的链接。所属套件:Java.sql

  • createStatement方法:(语法:java.spl.statement createStatement(int 指针类型参,int数据一致性参数) 说明:建立Statement对象。

java.sql.ResultSetMetaData

说明:ResultSetMetaData类用于获取记录集字段的信息。所属套件:java.sql.

  • getColumnCount方法:(语法:int getColumnCount() 说明:取得记录集中的字段数目)
  •  getColumnName方法:(语法:java.lang.String getColumnName(int column) 说明:取得字段的字称。其中字段索引值是记录集中字段的索引值,第一字段的索引值1,最后一个字段的索引值即为总字段数。

java.sql.Statement

说明:Statement 类可以执行SQL动作和查询语句,实现对数据库的操作。所属套件:java.sql

  •  execute方法:(语法:boolean execute(string sql) 说明:执行SQL动作语句,如插入、删除、修改等。)示例:st.execute(“delect from table”) //从表table中删除数据。
  • executeQuery方法:(语法:java.sql.ResultSet executeQuery(string sql) 说明:执行SQL查询语句,得到相应的记录集。)示例:rs=st.execute(“select * from table”) //从表中取出数据。

java.sql.ResultSet

说明:ResultSet类用于处理一个记录集。所属套件:java.sql

  • absolute方法(语法:boolean absolute(int row) 说明:设置记录指针指向记录的位置。)
  • afterLast 方法:(语法:void afterLast() 说明:将指针移动到最后一条记录之后。)
  •  beforeFirst()方法:(语法:void beforeFirst() 说明:将指针移动到第一条记录之前。)
  • first方法:(语法:boolean first() 说明:将记录指针移至第一条记录。)
  • isAfterlast 方法:(语法:Boolean isAfterLast() 说明:判断记录指针是否指向最后一条记录之后)
  • isBeforeFirst方法:(语法:Boolean isBeforeFirst() 说明:判断记录指针是否指向第一条记录之前。
  • isFirst方法:(语法:Boolean isFirst() 说明:判断记指针是否指向第一条记录)
  • isLast 方法:(语法:Boolean isLast() 说明:判断记录指针是否指向最后一条记录。)
  • 字段值获取方法(语法:object get…(string columnName);object get…(int columnIndex) 说明:从ResultSet对象中取出字段的值)示例:string name=rs.getstring(“use”);
  • getMetaData 方法:(语法:java.sql.ResultSetMetaData ResultSetMetaData getMetaData() 说明:取得该ResultSet对象对应的ResultSetMetaData对象。)
  • getRow方法:(语法:int getRow() 说明:取得目前记录指针指向记录的位置)
  • next方法:(语法:boolean next() 说明:将指针移动到下一条)
  • previous方法:(语法:boolean previous() 说明:将指针移到上一条)

java.util.Date

说明:Date类用于处理日期这种数据类型。所属套件:java.util

构造函数:(语法:Date();Date(long毫秒数);Date(int年,int月,int日,int时,int分,int秒) 说明:产生一个Date对象。此对象为给定的时间。如果没有输入参数的话,则此Date对象的值为目前的系统时间。)

  • getTime方法(语法:long getTime() 说明:该对象代表的时间,距离1970年1月1日午夜的毫秒数。)
  • get Year方法:(语法:int getYear() 说明:获得Date对象的年值,输出的数值以1900为基础。)
  • getMonth方法:(语法:获得Date对象的月值,输出的数值以0代表1,1代表2,其余类推)
  • getMonth方法:(语法:int getDate() 说明:获得Date对象的日值)
  • getDay方法(语法:intDay() 说明:获得Date对象的星期值。)
  • getHours方法:(语法:int getHours() 说明:获得Date对象的小时值)
  • getMinutes方法:(语法:int getMinutes() 说明:获得Date对象的 分值。)
  • getSeconds方法:(语法:int getSeconds() 说明:获得Date对象的秒值。)
  • setYear方法:(语法:void setYear(int year) 说明:设置Date 对象年值,输入的数值以1900为基准。)设置:Month\day\hours\seconds都是用这种方法。

javax.servlet.http.cookie

说明:Cookie类主要用于处理对cookie的使用。所属套件:javax.serlet.http

构造函数(语法:Cookie(“数据名称”,值) 说明:新建一个Cookie象。需要注意的是,保存到cookie的仅能为字符串,因此,对其他类型的数据需要进行转换。)

  • getDomain 方法:(java.lang.string getDomain() 说明:取得可存取该cookie变量的网站地址。)
  • getName方法:(语法:java.lang.string getName() 说明:取得Cookie变量中数据的名称。)
  • getMaxAge方法:(语法:long setMaxAge() 说明:取得Cookie的有效时间。输入的有效时间单位为秒)
  • getPath方法:(语法:java.lang.string getPath() 说明:取得COOKIE变量的存取范围)
  • setDomain方法:(语法void setDomain(java.lang.string pattern) 说明:设置可存取Cookie变量的网站。)

java.servlet.http.httpservletRequest

说明:JSP中隐含对象Request即为该类的对象。用于处理与浏览器请求有关的信息。所属的套件:javax.servlet.http

  • getattribute方法:(语法:Object getAttribute(java.lang.string变量名称) 说明:取出保存request对象内的数据。该数据是使用setAttribute方法存放在request对象中的。
  • getBufferSize方法:(语法:int getBufferSize() 说明:取得目前缓冲区的大小。)
  • getCookies 方法:(语法:javax.servlet.http.Cookie[] getCookies() 说明:取得与请求有关的Cookies.)
  • getDateHeader方法:(语法:getDateHeader(java.lang.string name) 说明:取得指定名称的、日期类型的标头。)
  • getIntHeader方法:(语法:取得指定名称的、整数类型的标头)
  • getHeader方法:(语法:java.lang.string getHeader(java.lang.string name) 说明:取得指定名称的标头。)
  • getMethod方法:(语法:java.lang.string.getMethod() 说明:取得数据发送的方法(GET或POST))
  • getParameter方法:(语法:java.lang.string getParameter(java.lang.string name) 说明:取得参数名称为name的值。返回值为string.如果参数不存在,则返回NULL。 )
  • getParameterNames方法:(语法:java.util.Enumeration getParameterNames() 说明:取得所有的参数名称。
  • getParameterValue方法:(语法:java.lang.stirng[ ] getParameterValues(string Name) 说明:取得所有参数名称为name的参数值。
  • getProtocol方法:(语法:java.lang.string getProtocol() 说明:取得使用的协议(HTTP/1.1或HTTP/1.0)
  • getQuerystring方法:(语法:java.lang.string getQuerystring() 说明:取得请求的参数字符串(数据发送的方法为get)).
  • GetRealPath 方法:(java.lang.string getRealPath(java.lang.string虚拟目录地址) 说明:取得虚拟目录对应的磁盘地址。)
  • GetRequestURL方法:(语法: java.lang.stirng getRequestURI() 说明:取得请求的URI(不包括请求字符串))
  • getRemoteAddr方法:(语法:java.lang.string. getRemoteAddr() 说明:取得发出请求的用户的IP地址/)
  • getRemoteHost方法:(语法:java.lang.string getRemoteHost() 说明:取得发出请求的用户的主机名称,如果不能确定主机名则返回用户的IP地址)
  • getRemoteUser方法:(语法:java.lang.string getRemoteUser() 说明:取得发出请求的用户名称。)
  • setAttribute方法:(语法: void setAttribute( java.lang.string 变量名称,object变量值) 说明:将数据保存到request对象内。)
  • setBufferSize方法:( 语法:void setBufferSize(int 缓冲区大小) 说明:设置缓冲区大小。
  • removeAttribute方法:(语法:void removeAttribute(java.lang.stirng变量 ) 说明:删除保存在request 对象内的数据。

javax.servlet.HttpSession

说明:JSP中隐含对象Session即为该类的对象,用于处理与当前客户联机会话有关的信息。所属套件:javax.servlet.http

  • getAttribute方法:(语法:Object getAttribute(java.lang.stirng变量) 说明:取出保存在Sesson内的变量)。
  • getCreationTime方法:(语法:long getCreation Time() 说明:取出此Sesson对象的建立的时间)
  • getid方法:(语法:java.lang.string getID() 说明:取出此Sesson对象的编号)
  • getLastAccesssedTime方法:(语法:long getLastAccessedTime() 说明:取出此Sesson对象的最后存取时间)
  • getMaxInactiovInterval方法:(语法:int getMaxInactiveInterval() 说明:取得目前设置的Sesson对象最大时间间隔,单位为秒。如果用户超过此时间间隔无动作,则Sesson对象失效)
  • invalidate方法:(语法:void invalidate() 说明:强制结束服务端代表此联机的Sesson对象)
  • isNew方法(语法:boolean isNew() 说明:判断sesson对象是否为刚刚建立的对象)
  • setAttribute方法:(语法:void setAttribute(java.lang.string变量名称,Object变量值) 说明:将数据保存到sesson对象内)
  • removeAttribute方法:(语法:void removeAttribute(java.lang.string变量) 说明:删除保存在sesson对象中的数据)

javax.servlet.jsp.jspWrite

说明:jsp中隐含对象out即为该 类的对象。所属套件:javax.servlet.jsp

  • flush()方法:(语法:void flush() 说明:强制输出缓冲区中的数据。该方法与HttpServletResponse类的flushBuffer 具有相似的效果)
  • getBufferSize方法:(语法:int getBufferSize() 说明:取得目前缓冲区的大小)
  • getRemaining文法:(语法: int Remaining() 说明:取得目前缓冲区的剩余空间。)
  • println 方法:(语法:void println(java.lang.string 输出字符串) 说明:输出字符串。)

About

oye~