数据库入门整理-MySQL篇

  •  建表语句

create table STUDENT2 (
`ID` int auto_increment key not null comment '自增编号',
unique index `UQ_STUDENT2_ID`(`ID`),
`XH` nvarchar(20) comment '学号',
`XM` nvarchar(30) not null comment '姓名',
`XB` decimal(1) not null comment '性别(1:男, 2:女)',
unique index `UQ_STUDENT2_XB`(`XB`),
`MOBILE` decimal(11) comment '手机号',
`SFZX` TINYINT comment '是否在校(0:离校, 1:在校)',
`RXSJ` date comment '入学时间',
-- primary key(`XH`) -- 添加主键,自增列新增默认为主键,有自增列情况不能这么用
) comment='学生表2';
  •  更新语句
-- 修改字段备注
comment on column STUDENT2.XB is '性别(1:男, 2:女)';

-- 表重命名
alter table STUDENT2 rename to STUDENT;

-- 修改字段名
alter table STUDENT rename column XB to SEX;

-- 删除主键
alter table STUDENT drop primary key
-- 添加新的主键
, add primary key(`ID`) USING BTREE
-- 修改表备注
, comment '学生表'
-- 添加唯一索引、指定索引名
, add unique index `UQ_STUDENT_SEX`(`SEX`)
-- 删除索引
, drop index UQ_STUDENT2_XB
-- 修改字段类型、非空以及备注
, modify column `SFZX` TINYINT null comment '是否在校(0:离校,1:在校)'
  • 查询当前库表操作
-- 获取当前库存在哪些表
SELECT TABLE_NAME, TABLE_COMMENT COMMENTS
FROM information_schema.`TABLES`
WHERE TABLE_TYPE='BASE TABLE' AND TABLE_SCHEMA=DATABASE()
ORDER BY TABLE_NAME

-- 查询当前库是否存在表
SELECT COUNT(*) hasTable
FROM information_schema.TABLES
WHERE TABLE_NAME=#{tableName} and TABLE_SCHEMA=DATABASE()
  • 查询指定表字段信息 
SELECT A.TABLE_NAME, B.TABLE_COMMENT COMMENTS, A.COLUMN_NAME, A.COLUMN_COMMENT COLUMN_COMMENTS,
A.NUMERIC_PRECISION AS DATA_PRECISION, A.NUMERIC_SCALE AS DATA_SCALE,
CASE WHEN LEFT(A.EXTRA, 4)='auto' THEN 'GENERATED' ELSE A.DATA_TYPE END AS DATA_TYPE,
CASE WHEN A.IS_NULLABLE='NO' THEN A.IS_NULLABLE ELSE '' END AS NULLABLE,
CASE WHEN IFNULL(A.CHARACTER_MAXIMUM_LENGTH, 0) > 0 THEN A.CHARACTER_MAXIMUM_LENGTH ELSE NUMERIC_PRECISION
END AS DATA_LENGTH,
-- 查询是否主键
(SELECT CASE WHEN COUNT(1)>0 THEN 1 ELSE '' END FROM information_schema.statistics WHERE
TABLE_SCHEMA=B.TABLE_SCHEMA AND
TABLE_NAME=B.TABLE_NAME AND COLUMN_NAME=A.COLUMN_NAME AND INDEX_NAME = 'PRIMARY') AS PRIMARY_KEY,
-- 查询唯一索引
(SELECT INDEX_NAME FROM information_schema.statistics WHERE TABLE_SCHEMA=B.TABLE_SCHEMA AND
TABLE_NAME=B.TABLE_NAME AND COLUMN_NAME=A.COLUMN_NAME AND INDEX_NAME != 'PRIMARY' LIMIT 1) AS UNIQUE_KEY

FROM information_schema.`COLUMNS` A, information_schema.`TABLES` B
WHERE A.TABLE_NAME=B.TABLE_NAME AND B.TABLE_TYPE='BASE TABLE'
AND A.TABLE_SCHEMA=B.TABLE_SCHEMA AND B.TABLE_SCHEMA=DATABASE()
AND A.TABLE_NAME=#{tableName}
--ORDER BY A.COLUMN_NAME
  •  获取表详细信息
SELECT CREATE_TIME,
-- 查询表占用空间大小MB
TRUNCATE((data_length + index_length)/1024/1024, 4) TABLE_SIZE,
-- 统计表记录数
(SELECT COUNT(1) FROM ${tableName}) TABLE_COUNT

FROM information_schema.`TABLES`
WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=#{tableName}
  • 注意:
  1.  新增自增列默认为主键
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中进行MySQL多表操作需要使用JDBC(Java Database Connectivity)技术,具体步骤如下: 1. 加载MySQL驱动程序 在Java中连接MySQL数据库需要加载MySQL驱动程序,可以使用Class.forName()方法加载。 ``` Class.forName("com.mysql.jdbc.Driver"); ``` 2. 建立数据库连接 使用DriverManager.getConnection()方法建立数据库连接,需要传入数据库URL、用户名和密码。 ``` String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); ``` 3. 创建Statement对象 使用Connection.createStatement()方法创建Statement对象,用于执行SQL语句。 ``` Statement stmt = conn.createStatement(); ``` 4. 执行SQL语句 使用Statement.executeUpdate()方法执行SQL语句,可以执行增、删、改操作。 ``` String sql = "insert into user(name, age) values('Tom', 20)"; stmt.executeUpdate(sql); ``` 使用Statement.executeQuery()方法执行SQL查询语句,返回ResultSet对象,可以遍历结果集获取查询结果。 ``` String sql = "select * from user"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()) { String name = rs.getString("name"); int age = rs.getInt("age"); System.out.println(name + " " + age); } ``` 5. 关闭连接 使用Connection.close()方法关闭连接。 ``` conn.close(); ``` 以上是Java进行MySQL多表操作的基本步骤,具体操作需要根据业务需求来设计SQL语句。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值