SQL数据库语法mysql,Java语言,个人整理资料-阿里云开发者社区

开发者社区> 阿发说> 正文

SQL数据库语法mysql,Java语言,个人整理资料

简介: 结构化语言Sql(structured query language)结构化查询语言 DML 用来操作数据库中所包含的数据 (数据操作语言) Update 数据修改   DDL 用于创建和删除数据库对象等操作 (数据定义语言) Insert 数据新增 Delete 数据删除   DQL 用来对数据...
+关注继续查看

结构化语言
Sql(structured query language)结构化查询语言

DML 用来操作数据库中所包含的数据 (数据操作语言)

Update 数据修改

 

DDL 用于创建和删除数据库对象等操作 (数据定义语言)

Insert 数据新增

Delete 数据删除

 

DQL 用来对数据库中的数据进行查询 (数据查询语言)

Create 创建数据库或表

Drop 删除数据库或表

Alter 修改数据库或表信息

Select 查询数据库

 

DCL 用来控制数据库组件的存储许可、存储权限等 (数据控制语言)

Commit 提交数据库

Rollback 回滚数据

Grant 授权

 

优势
运行速度快

体积小成本低

可移植性好

适用用户广

作用
存储数据、便于数据检索

保证数据完整、一致

共享、安全

对数据进行重新组合

数据库和应用之间的关系
数据库:存储数据,将数据响应给应用程序

应用程序:向数据库发请求,将数据库响应的信息进行展示

流行的数据库
Oracle SQL server mysql

配置
Prot:设置端口号

Default-charactrt-set设置编码格式

Datadir:设置数据保存路径

服务 启动方式
1 我的电脑-管理服务-对应服务右键启动

2 管理员cmd-net start 服务名称

3 管理员cmd-net stop 服务名称

登录 mysql -h地址 -u 用户名 -p 密码 (-h可省略,用于异地登录)

退出 quit

运算符
逻辑运算符
AND 并且

OR 或者

NOT 非

比较运算符
= 等于

< 小于

大于

<> 不等于(常用)

= 大于等于

<= 小于等于

!= 不等于

数据库操作
Database(删除创建,判断是否存在)
Create database数据库名 (创建数据库)

Drop database 数据库名 (删除数据库)

Drop database if exists数据库名 (如果存在删除数据库)

Table
Use 数据库名 (指定数据库)

Create table 表名 (创建表名)

Create table 表名(头大1 定义类型(长度),头大1 定义类型(长度),……)

Show tables (查看表)

Desc 表名 (查看指定表内容)

 

Insert into 表名 values(值1,值2) 主要顺序、数量、类型要与表字段一致

Select * from 表名 查看表内所有字段内容(查询数据)

Select 字段名 from 表名

 

Delete from 表名 删除表内所有内容

Delete from 表名 where字段=值 删除指定内容

Delete from 表名 where字段1=值 and 字段2=值 删除指定多个内容

 

Truncate table 表名 (清空数据并将标识恢复到默认开始)

 

Update 表名 set 字段=值,字段=值 where 字段=值 修改内容

 

创建表后添加另一个表的数据:insert into 表1  select * from 表2;

 

重命名: alter table 表名 rename【to】 新表名

添加字段: alter table 表名 add 字段 类型 【属性】

修改字段: alter table 表名 change 原字段 新字段 类型 【属性】

删除字段: alter table 表名 drop 字段名称

约束
Unique key 唯一约束

Not null 非空约束

Default 默认约束

Primary key 主键约束

Foreign key 外键约束

Constraint fk自启表名 foreign key(要设置的字段) references 主表名(被设置字段)

Auto_increment 自动增长

 

在创建表结构后添加约束

添加主键

alter table 表名 add Constraint 约束名 primary key 表名(主键字段)

添加外键

alter table 表名 add Constraint 约束名 foreign key(要设置的外键字段) references 主表名(被设置字段)

删除主外键

Alter table 表名 drop constraint 约束名

帮助
Help data types 查看数据类型

Help 类型 查看具体信息

设置编码格式:set names gbk

Comment:注释 每个字段添加(注释)

引擎
指定存储引擎
常见存储引擎:inniDB支持事物用于增删 MyISAM不支持实物适用于查询

Create table 表名(……)engine=存储引擎

 

配置

My.ini文件

Default storage engine = innoDB;

查看

Show variable like storage_engines;

数据查询
Select 列名 from 表名 where 查询条件 order by 排序的列名 asd或desc

 

查询使用别名

Select 字段 ’编号’ ,字段名 as ‘名字’from 表名

 

非空查询

Select 字段 from 表名Where 字段 is not bull

Select * from 表名Where 字段 is not bull

聚合函数
Avg 平均值

Count 字段行数

Max 最大值

Min 最小值

Sum 和

 

Select 聚合函数(字段) from 表名;

字符串
Select Concat(‘字符’,‘字符’) 拼接字符串

Select Lower(‘字符’) 转换小写

Select Upper(‘字符’) 转换大写

Select Substr(‘字符’,截取开始,截取长度) 截取字符串

Select insert(‘字符’,替换开始,替换长度,‘字符’) 替换指定区间字符

日期
获取当前时间:

Select NOW(); 当前日期时间

Select curdate(); 当前日期

Select curtime(); 当前时间

拆分当前时间:

select YEAR(NOW()); 当前年份

select MONTH(NOW()); 当前月

select bay(NOW()); 当前当前日

select WEEK(NOW()); 当前周

计算时间:

Select darediff(‘时间’,now()); 两个时间的间隔

select adddate(NOW(),n); 获得那天后的日期

Mysql数据库的链接
创建用户
Create user 用户名;

管理员登录

Grant select on . to 用户名 @对方地址 identified by 密码

Grant 权限 on 数据库.表 to 用户名 @l主机地址 identified by 密码

主机地址:主机名、ip、%(允许任意地址远程访问)

删除用户:
访问 mysql.user 表,通过delete删除(注意where条件)

修改密码
Mysqladmin -uroot -p(‘修改后的密码’)

 

忘记密码情况下修改密码:

停止服务 在my.ini配置文件中写入skip-grant-tables启动服务dos中使用mysql -uroot -p

在输入updare mysql user set password=PASSWORD(‘新密码’)where user=’root’ and host=’ 地址’;

Quit退出

停止服务奖my.ini中的skip-grant-tables注掉

启动服务正常登陆

 

Update user 用户名 set password=PASSWORD(‘修改后的密码’)

Update user set password=PASSWORD(‘修改后的密码’)

授权
All所有权限

Grant 授权(以逗号隔开)on 数据库名. 表名 to 用户名

 

收回

Revoke 权限(以逗号隔开)on 数据库名. 表名 from 用户名 

设置密码
Set password for 用户名=password(‘密码’);

操作技巧
发现执行命令有错误用ctrl+c强制退出

光标上下键访问用过的命令

 

Flush privileges 命令更新(刷新)

 

数据库操作
导出数据库
Mysqldump -u用户名 -p 密码 数据库名>导出的文件名

 

导出一个代表
Mysqldump -u用户名 -p 密码 数据库名 表名>导出的文件名

 

导出一个数据库结构
Mysqldump -u用户名 -p 密码 -d -add-drop-table 表名>文件名.sql

-d没有数据

-add-drop-table在每个create语句之前增加一个drop table

 

数据传入
Load data local infile “文件为位置(TXT文件)” into table 表名

导入sql文件
Mysqldump -u用户名 -p 密码 表名>文件名.sql

排序
Order by 字段名称 [排序方式(可省略)]

Asc升序排练

Desc降序排练

 

如:select * from pen order by cityed ASC;

select * from pen where cityed=2 order by id desc;

 

分组
max()最大值

Min()最小值

Count()个数

Avg()平均数

Sum()求和

Select 函数(字段) from 表名 group by 字段

 

条件

Select 字段1,函数(字段) from 表名 group by 字段1  having 字段1=条件

多表联查 链接查询
select 字段,字段,字段 from 表名1 表别名1,表名2 表别名2 where 字段=别名.字段;

 

内联Inner join 表名 on 条件

左外接Left  join 表名 on 条件

右外接Right  join 表名 on 条件

select 别名.字段,字段,字段 from 表名1 表别名1 inner join 表名2 表别名2 on 表别名1 .字段=表别名2.字段 ;

事物
事物具有:原子性,一致性,隔离性,持久性

步骤
开始事物(begin或start transaction)——提交事物(commit)——回滚事物(rollbank);

 

关闭/开启自动提交:set autocommit=0|1;

视图
筛选表中的行

防止未经许可的用户访问敏感数据

将多个物理数据表抽象为一个逻辑数据表

 

查看所有视图名称
Use 数据库

Select 表名 from views

 

创建视图
View

 

Use 数据库

Create view 视图名1  as select * from 表名

select * from 视图名1  

 

索引
Index

 

Create 索引类型(可不写)index 索引名 on 表名(字段)

 

Drop index 索引名 on 表

 

Show index 索引名

 

提高数据库的检索速度

 

标准
平凡搜索的列

规范化
关系
一对一,一对多,多对一,多对多

三大范式
1.确定

 

Java连接数据库
添加jar包
在项目根目录创建lib文件夹将jar包考入

在jar包上右键选择Build Path——Add Build Path

注:加载驱动的类在——com.mysql.jdbc.Driver

编写链接类
注:链接数据库使用JavaAPI(Java Application Program interface)

Connection:链接

Statement:执行sql语句

ResultSet:结果集

具体步骤
1加载驱动创建链接
加载驱动

Class.forName(“com.mysql.jdbc.Driver”);

创建链接

DriverManager.getConnection(“jdbc:mysql://数据库地址:端口号/数据库名”,“用户名”,“密码”)

编写sql并执行
创建statement对象

Statement st=conn.createStatement();

通过对象调用执行方法

Execute(sqlstr);返回boolean类型

ExecuteQuery(sqlstr);返回ResultSet类型,结果集

executeUpdate(sqlstr);返回int类型,受影响行数

处理返回结果
Boolean、int直接赋值对应类型变量 用于判断或输出返回

ResultSet通过while循环便利取值

next():返回boolean类型 判断结果集中是否有数据存在

取值:gettype(int/string)

Type对应数据库的类型自定义如:getInt(int/string)

int/string取值时可使用字段的索引位置(索引默认从1开始)或直接写字段

 

事例:

package demo;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.Statement;

public class demo {

/**

 * java对应的Api

 * connection:负责java链接数据库

 * statement:负责执行sql语句

 * resultset:处理结果

 */

public static Connection conn;

public static Statement stat;

public static ResultSet res;

public static Connection getConnection() throws Exception{

//加载驱动

Class.forName("com.mysql.jdbc.Driver");

//获取链接(指定数据库:地址,名称,用户名,密码)

return DriverManager.getConnection("jdbc:mysql://localhost:3306/mybank","root","296768022");

}

public static void main(String[] args) {

try {

//创建链接(获取到链接对象后一定要赋值)

conn=getConnection();

System.out.println("链接成功");

//编写sql语句

Statement st=conn.createStatement();

boolean isOk=st.execute("select * from school");

//查看结果

res=st.executeQuery("select * from school");

System.out.print(isOk);

while(res.next()){

System.out.println(res.getInt("sch")+"——"+res.getString("schName")+"——"+res.getString("schId"));

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

System.out.println("链接失败");

}

}

}

注意事项
链接字符穿的拼写

创建链接对象是注意赋值给成员变量conn=getConnection();

异常处理
驱动字符串拼写错误

链接字符串拼写错误

链接对象未赋值错误

Sql语句拼写错误

遍历结果集时字段名称不符或索引位置错误

Sql注入
PreparedStatement

 

Sql语句的执行条件通过变量传值方式注入到sql语句中产生一个新的sql语句

将Statement改换为PreparedStatement接口

将sql语句的查询条件赋值方式作调整:变为占位符?,通过对象的setXXX()方法赋值

prepareIndex默认从1开始

 

Mybatis映射文件中常用节点
增(insert)删(delete)改(update)查(select)

辅助:if、trim、set、where

常用:

Sql:组织SQL语句的编写一般结合使用

Sql内容可以自定义,提前是最终拼接成完整的sql即可

Sql数量不限可多个

Bind:将复杂的Sql进行拆分

Foreach:

Collection:必须项,入参为List则为“list”,入参为数组则为“array”,入参为多参时则需要Map封装处理

Item集合中每个元素迭代时的别名

Index集合中每个元素迭代时的下标

Open表示该语句以什么开始

Close表示该语句以什么结束

Separator表示每次迭代之间以什么符号作为分割符

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SQL数据库学习之路(四)
要求:通过SQL语句创建以下基本表:    教师关系 T(T#, TNAME,TITLE)    课程关系 C(C#,CNAME,T#)    学生关系 S(S#,SNAME,AGE,SEX)    选课关系SC(S#,C#,SCORE)    班级关系CLASS(CLASSID,CLASSNAME)    其中红色粗体为主键,带下划线的属性为外键。
705 0
SQL数据库学习之路(八)
数据库介绍: 在网页上的主程序中进行注册操作,然后把数据发送给人,人传递这些数据到数据库当中。   为什么学ADO.NET:之前我们所学的只能在查询分析器中查看数据,操作数据。
775 0
用SQL命令查看Mysql数据库大小
用SQL命令查看Mysql数据库大小 除了可以直接进入后台查看数据文件大小,可以用SQL命令查看Mysql数据库大小 1、进入information_schema 数据库(存放其他的数据库的信息的数据库)  mysql> show databases; +--...
635 0
历代《Java开发手册》亮点全总结,超全资料带你和260万人一起学Java!|开发者必读(168期)
距离泰山版《Java开发手册》发行已经有一周了,你是否也下载了这本超人气电子书呢?为了帮助广大开发者更好地学习和使用《Java开发手册》,阿里妹特地为你整理了所有版本的Java手册和超多学习资料,助你顺利学习!
2089 0
个人用户如何手动在ECS实例上部署Java web项目?
本篇文档介绍如何手动在ECS实例上部署Java web项目。适用于刚开始使用阿里云进行建站的个人用户。
1684 0
Python之数据规整化:清理、转换、合并、重塑
Python之数据规整化:清理、转换、合并、重塑 1. 合并数据集 pandas.merge可根据一个或者多个不同DataFrame中的行连接起来。 pandas.concat可以沿着一条轴将多个对象堆叠到一起。 实例方法combine_first可以将重复数据编接在一起,用一个对象中的值填充另一个对象中的缺失值。 2. 数据风格的DataFrame合并操作
1633 0
+关注
阿发说
努力脱离菜鸟行列
3
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载