MySQL学习

MySQL

SQL是结构化查询语言,定义了操作所有关系型数据库的规则.

DDL

用于操作数据库,表.

操作数据库

创建数据库的语句

create database if not exists 数据库名 character set gbk;

查询数据库的语句

show databases; -- 展示所有数据库
show create database 某个数据库名字;-- 展示单个数据库名称

修改数据库字符集的语句

alter database 数据库名称 character set 字符集名称;

删除数据库的语句

drop database 数据库名称;

操作表

常用语法
[ ]表示可有可无

 CREATE TABLE table_name(-- 创建表
    属性名 数据类型,
    属性名 数据类型, 
    属性名 数据类型
    );
ALTER TABLE old_table_name RENAME [TO] new_table_name;-- 修改表名
DROP TABLE table_name;-- 删除表
ALTER TABLE table_name ADD 属性名 属性类型;-- 在表的最后一个位置增加字段
ALTER TABLE table_name ADD 属性名 属性类型 FIRST;-- 在表的第一个位置增加字段
ALTER TABLE table_name ADD 属性名 属性类型 AFTER 属性名;-- 在表的指定字段之后增加字段
ALTER TABLE table_name DROP 属性名;-- 删除字段
ALTER TABLE table_name CHANGE 旧属性名 新属性名 新数据类型;-- 同时修改字段的属性和类型

约束关键词

NOT NULL -- 约束字段的值不能为空
DEFAULT -- 设置字段的默认值
UNIQUE KEY --  约束字段的值唯一
PRIMARY KEY -- 约束字段为表的主键,可以作为该表记录的唯一标识
AUTO_INCREMENT -- 约束字段的值为自动增加
FOREIGN KEY -- 约束字段为表的外键

DML

增删改表中的数据.
添加数据语法

insert into 表名 (列名1,列名2,...) values(1,2,...);-- 列名和值应一一对应,且注意根据数据类型添加引号

删除数据

delete from 表名[where 条件];
truncate table 表名;-- 删除表中所有记录,效率高
delete from 表名;-- 删除表中所有记录,效率低

修改数据

update 表名 set 列名1=1,列名2=2,... where 条件;-- 若不加条件则修改表中所有数据

在这里插入图片描述

DQL

查询表中的记录
语法
查询所有字段 :select * from 表名;

select 字段列表 
from 表名列表
where 条件列表
group by 分组字段
having 分组之后的条件
order by 排序
limit 分页限定

基础查询

select 字段名1,2,... from 表名;-- 多字段查询
select distict 字段名 from 表名;-- 去重查询
select 字段名1+if null(字段名2,0) from 表名;-- 计算列
select 字段名1+if null(字段名2,0) [as] 别名 from 表名;-- 给计算结果的列起别名

多表关系:

  1. 一对多,多的一方的外键只想另一方的主键
  2. 多对多,借助第三张中间表
  3. 一对一,在任意一方添加唯一外键指向另一方主键
    多表查询:要注意消除无用数据
    隐式内连接查询:使用where条件消除无用数据
    显示内连接查询:select 字段列表 from 表1 left [inner] join 表2 on 条件;
    左外连接查询:select 字段列表 from 表1 left [outer] join 表2 on 条件;(查询左表所有数据以及交集部分)
    查询:可以嵌套在主查询中所有位置,包括SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY,但不是所有子查询都有实际意义.

DCL

定义数据库的访问权限和安全级别,及创建用户
DCL的常用操作

JDBC:即java数据库连接,本质是官方定义的一套操作所有关系型数据库的规则,即接口.各个数据库厂商去实现这套接口,提供数据库驱动jar包.

jar包的使用

1.导入驱动jar包
2.注册驱动
3.获取数据库连接对象Connection
4.定义sql
5.获取执行sql语句的对象,Statement
6.执行sql,接受返回结果
7.处理结果
8.释放资源
案例:给stu表添加一条记录 insert语句
将jar包存到src的子目录.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Jdbc1 {
    public static void main(String[] args) {
        Statement stmt = null;
        Connection conn = null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //2.定义sql,且添加了一条记录
            String sql = "insert into stu values(null,'王五','girl',20,90,85)";
            //3.获取Connection对象
            conn = DriverManager.getConnection("jdbc:mysql:///jdbc", "user", "password");
            //4.获取执行SQL的对象Statement
            stmt = conn.createStatement();
            //5.执行SQL
            int count = stmt.executeUpdate(sql);//得到影响的行数
            //6.处理结果
            System.out.println(count);
            if (count > 0) {
                System.out.println("添加成功");
            } else {
                System.out.println("添加失败");
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放资源
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值