MySql与JDBC

    科技2024-09-30  21

    1.MySql

    连接数据库

    mysql -uroot -p123456 --连接数据库 update mysql.user set authentication_string=password('123456') where user='root' and Host = 'kocalhost'; --修改用户密码 flush privileges; --刷新限权 --------------------------------------------------- -- 所有的语句都使用;结尾 show databases; --看所有的数据库 mysql> use school -- 切换数据库use数据库名 Database changed show tables; -- 查看数据库中所有表 describe student; -- 显示数据库中所有表的信息 creat database westos; -- 创建一个数据库 exit; -- 退出连接 -- 单行注释(SQL的本来的注释;) /* (sql的多行注释 helloi asdas */

    操作数据库

    1、创建数据库

    CREATE DATEBASE [IF NOT EXISTS] westos;

    2、删除数据库

    DROP DATABASE [IF EXISTS] westos;

    3、使用数据库

    -- 如果表名或者字段是一个特殊字符,需要带上 ` USE `school`;

    4、查看数据库

    SHOW DATABASE; -- 查看所有的数据库

    数据库的列类型

    数值

    tinyint 十分小的数据 1

    smallint 较小的数据 2

    mediumint 中等大小的数据 3

    int 标准的整数 4 常用的

    bigint 较大的整数 8

    float 浮点数 4

    double 浮点数 8

    decimal 字符串形式的浮点数 金融计算时,一般用decimal

    字符串

    char 字符串固定大小的 0~255

    **varchar 可变字符串 0~65535 ** 常用的变量 String

    tinytest 微型文本 2^8-1

    **text 文本串 2^16-1 ** 保存大文本

    时间日期

    java.util.Date

    date 日期格式 YYYY-MM-DD

    time 时间格式 HH: mm: ss

    datetime 最常用的时间格式 YYYY-MM-DD HH : mm : ss

    **timestamp 时间戳 1970.1.1到现在的毫秒数! **

    year 年份表示

    null

    没有值,未知

    注意: 不要使用NULL进行运算结果为NUILL

    数据库的字段属性

    Unsigned:

    无符号的整数

    声明了该列不能声明为负数

    zerofill:

    0填充的

    不足的位数,使用0来填充,int(3) , 5—005

    自增:

    自动在上一条记录的基础上 + 1(默认)

    通常用来设计唯一的主键~ index,必须是整数类型

    可以自定义设计主键自增的起始值和步长

    非空: NULL not null

    假设设置为 not null ,如果不给他赋值,就会报错

    NUILL , 如果不填写值,默认就是null

    默认:

    设置默认的值

    sex, 默认值为男,如果不指定该列的值,则会有默认的值

    SQL

    常用的SQL命令

    CREAT – 定义基本表

    CREAT TABLE <表名>(<列名><数据类型>,……)

    实例: 建立一个”学生表”,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept 5个属性组成

    CREAT TABLE Student (Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20),Ssex CHAR(1),Sage INT,Sage INT,Sdept CHAR(15)); SELECT – 查询,取出特定记录

    SELECT[DISTINCT|ALL]<目标列表达式>,<目标列表达式>……FROM <表名>[,<表明>]……

    [WHERE<条件表达式>]

    [GROUP BY<列名1>[HAVING<条件表达式>]]

    [ORDER BY <列名2>[ASC|DESC]]

    选取所有的列使用符号 * :SELECT * FROM <表名>

    WHERE 子句

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

    SELECT * FROM Persons WHERE City='’'Beijing' -- 在Persons表的所有列中查找Being SELECT * FROM Persons WHERE FirstName = 'Thomas' AND LastName = 'Carter' -- 使用AND来显示所有姓为“Carters” 并且名为“Thomas”的人 SELECT * FROM Persons WHERE FirstName = 'Thomas' OR LastName = 'Carter' -- 使用OR来显示所有姓为“Carters” 或者名为“Thomas”的人 INSERT语句

    INSERT – 添加一条新记录

    格式:

    INSERT INTO 表名称 VALUES(值1,值2,……)

    INSERT INTO table_name (列1,列2,……) VALUES(值1,值2,……)

    例如:将一个新学生记录(学号:95020;姓名:陈轩仔;性别:男;所在系:计算机;年龄:19),插入Student中

    INSERT INTO Student VALUES('95020','陈轩仔','男','计算机','19') UPDATE语句

    UPDATE – 数据更新,改变特定记录的值

    格式: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

    例如: 将学生85001的年龄增加1

    UPDATE Student SET Sage = Sage + 1 WHERE Sno = 95001 DELETE语句

    DELETE – 删除特定的记录

    格式: DELETE FROM <表名> WHERE <条件>

    例如: 删除计算机系所有学生的选课记录

    DELETE FROM SC WHERE 'CS' = (SELECT Sdep FROM Student WHERE Student.Sno = SC.Sno);

    2.JDBC连接数据库

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5lkV4g8-1602066940201)(C:\Users\13088\AppData\Roaming\Typora\typora-user-images\image-20201001180408463.png)]


    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4QhF8sjJ-1602066940205)(C:\Users\13088\AppData\Roaming\Typora\typora-user-images\image-20201001180426929.png)]

    3.DML语言

    1.INSERT

    --插入语句 --insert into 表名([字段名1,字段2,字段3,……])values('值1'),('值2'),…… INSERT INTO `grade`(`gradename`) VALUES('大四') -- 数据和字段要一一对应 -- 插入多个字段 INSERT INTO `grade` VALUES (`gradename`) VALUES('大一'),('大二')

    2.UPDATE

    update 修改谁 (条件) set 原来的值 = 新值

    -- 修改学员名字 UPDATE `student` SET `name` = 'qwer' where id = 1; -- 如果不指定条件,会改动所有的表 UPDATE `student` SET `name` = 'dddddd' -- 语法: -- UPDATE 表名 set colnum_name = value,[colnum_name = value,……] where [条件]

    where 子句 运算符 id = 某个值 ,大于某个值,在某个区间内修改……

    操作符会返回布尔值

    colum_name 是数据库的列,尽量带上 ``

    value, 是一个具体的值,也可以是一个变量

    条件,筛选的条件,如果么没有指定,则会修改所有的列

    多个设置的属性之间,使用英文逗号隔开

    3.DELETE 与 TRUNCATE

    DELETE FROM `student` -- 删除指定数据 DELETE FROM `student` WHERE id = 1; -- TRUNCATE 完全清空一个数据库,表的结果和索引约束不会变 -- 清空 student 表 TRUNCATE `student`

    4. DQL查询数据

    1. 指定查询字段

    -- 查询全部的学生 SELECT 字段 FROM 表 SELECT * FROM student -- 查询指定字段 SELECT `name`,`age` FROM student -- 别名,给结果起一个名字 AS 可以给字段起别名,也可以给表起别名 SELECT `name` AS 姓名,`age` AS 年龄 FROM student AS s -- SELECT 字段 ,…… FROM 表

    5.PrepaerdStatement对象

    PreparedStatement可以防止SQL注入,效率更高!

    1、新增

    public class TestInsert{ public static void main(String[] args){ Connection con = null; PreparedStatement st = null; ResultSet rs = null; //使用 ? 占位符代替参数 String sql = "insert users (id,`name`,`age`) values (?,?,?)"; st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行 //手动给参数赋值 st.setInt(1,4);//id st.setString(2,"陈宇轩"); st.setString(3,"33"); //注意点:sql.Date 数据库 java.sql.Date(); // util.Date Java new Date().getTime() 获得时间戳 st.setDate(5,new java.sql.Date(new Date().getTime())); //执行 int i = st.executeUpdate(); if(i>0){ System.out.println("插入成功!")} } }

    2、删除

    public class TestInsert{ public static void main(String[] args){ Connection con = null; PreparedStatement st = null; ResultSet rs = null; //使用 ? 占位符代替参数 String sql = "delete from users where id=?"; st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行 //手动给参数赋值 st.setInt(1,4);//id //注意点:sql.Date 数据库 java.sql.Date(); // util.Date Java new Date().getTime() 获得时间戳 st.setDate(5,new java.sql.Date(new Date().getTime())); //执行 int i = st.executeUpdate(); if(i>0){ System.out.println("删除成功!") } } }

    3、更新

    public class TestInsert{ public static void main(String[] args){ Connection con = null; PreparedStatement st = null; ResultSet rs = null; //使用 ? 占位符代替参数 String sql = "update users set `name` = ? where id = ?"; st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行 //手动给参数赋值 st.setInt(1,4);//id st.setString(2,"陈宇轩"); st.setString(3,"33"); //注意点:sql.Date 数据库 java.sql.Date(); // util.Date Java new Date().getTime() 获得时间戳 st.setDate(5,new java.sql.Date(new Date().getTime())); //执行 int i = st.executeUpdate(); if(i>0){ System.out.println("更新成功!") } } }

    4、查询

    public class TestInsert{ public static void main(String[] args){ Connection con = null; PreparedStatement st = null; ResultSet rs = null; //使用 ? 占位符代替参数 String sql = "select * form users where id = ?"; st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行 st.setInt(1,2); //注意点:sql.Date 数据库 java.sql.Date(); // util.Date Java new Date().getTime() 获得时间戳 st.setDate(5,new java.sql.Date(new Date().getTime())); //执行 rs = st.executeQuery(); if(rs.next()){ System.out.println(rs.getString(`name`)); } } }
    Processed: 0.011, SQL: 8