MySQL的使用个人总结(一)

使用MySQL已经有一段时间了,对学习的知识来个总结吧。尽管知识有限还是向总结一下,好了,不多说了,一下是正文。

(个人比较喜欢在控制台操作,以下都是在控制台操作的)

       MySQL安装的时候,一般都会连文档一并安装到本地的,因此要好好运用这个文档吧。

win+r   cmd进入控制台。

控制台:   \h  可以查看所有的命令。

a.查看帮助主题(相当于目录)

控制台输入:   ?  contents

以上列表所有的分类。可以通过 ? categories名  查看每个categories的详细信息。

例如要查看  functions下面的文档内容,控制台输入: ? functions (大小写都是可以的)

要查看MySQL的相关文档,都是可以通过「? + 关键字」来查看的。

b.  show的使用

     ①查看DB中所有的数据库: show databases;

     ②选择一个数据库使用:  use databaseName

     ③查看使用数据库中的所有的表: show tables;

     ④查看一个表创建的详细内容,外键以及创建时的引擎: show create table tabName;

     ⑤查看一个表的所有字段: show columns from tabName from  databaseName 或者使用  show columns from  databaseName.tabName;

     ⑥查看使用数据库中每个表的信息: show table status \G;

     ⑦查看一个表的索引: show index from tabName  \G;

     ⑧查看可用的存储引擎: show engines \G;

     ⑨查看最后一个执行语句产生的错误消息: show errors;

     ⑩查看最后一个执行语句产生的错误,警告和通知: show warnings;

     十一查看一个用户的权限: show grants for root@localhost;

     十二查看系统变量的名称和值: show variables;

     十三查看系统特定资源信息: show status;

     十四服务器所支持的不同权限: show privileges;

     十五查看系统中正在运行的所有程序: show processlist;

     十六查看所有存储过程: show procedure status;

     十七查看所有存储过程: show function status;

     十八查看表中所有列的字符集 : show full columns from tb_name;

     十九查看mysql所支持的字符集 : show charset;

c. 查看MySQL的版本:   select version();

d. 查看db的当前的使用者:   select user();

e. tee的使用

        记录控制台上的所有操作: tee  d:\文件名.log

或者  \T  d:\文件名.log   (\T T一定要大写) (\h 可以查看)

        关闭tee 功能:  notee 或者   \t

f. 修改root用户的密码: ①UPDATE mysql.user SET password=PASSWORD(‘新密码’) WHERE User=’root’;FLUSH PRIVILEGES;②首先在DOS下进入目录mysql\bin,再运行一下代码: mysqladmin -u用户名 -p旧密码 password新密码

g. 用户权限

    1.–创建用户并授权,格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by ‘密码’;

grant select on 数据库名.* to 用户名@登录主机 identified by ‘密码’;(只有select权限)

    2. 授权test用户拥有所有数据库的某些权限: @”%” 表示对所有非本地主机授权,不包括localhost。

grant select,delete,update,create,drop on *.* to test@”%” identified by “1234”;

    3. 对localhost授权(所有权限):

    grant all privileges on testDB.* to test@localhost identified by ‘1234’

    4. 若不想test有密码,可以再打一个命令将密码消掉。

grant select,insert,update,delete on mydb.* to test@localhost identified by ”;

    5. 只创建用户不授权

insert into mysql.user(Host,User,Password) values(“localhost”,”test”,password(“1234”));

所有的用户信息都在  mysql.user这个表中

    6. 撤销已经赋予给 dba用户权限的权限。

revoke all on *.* from dba@localhost;

    7. 删除用户

Delete FROM user Where User=’test’ and Host=’localhost’;flush privileges;

    8. 删除账户及权限

        drop user 用户名@’%’;

        drop user 用户名@localhost;

H.  导入.sql文件命令

    ①mysql> USE 数据库名;

        mysql> SOURCE d:/mysql.sql;

    ②在DOS状态进入目录\mysql\bin,然后键入以下命令:mysql -uroot -p密码 < d:/mysql.sql

I.  备份数据库(mysqldump命令在DOS的 mysql\bin 目录下执行,命令不以分号“;”结尾)

    1. 导出整个数据库: mysqldump -u用户名 -p密码 database_name > outfile_name.sql

    2. 导出一个表: mysqldump -u root -p test t_user > C:\Users\Desktop\outfile_name.sql(会提示输入密码)

    3. 导出一个数据库结构: mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql

 J. 将文本数据转到数据库中:

    1. 文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.

        1 ry 大 2010-10-10

        2 uy 小 2010-12-23

    假设把这两组数据存为school.txt文件,放在c盘根目录下。

    2. 数据传入命令 : mysql> load data local infile “c:\school.txt” into table 表名;

K. 查询数据库中所有表名

mysql>select table_name from information_schema.tables where table_schema=’数据库名’ and table_type=’base table’;

    可以通过 show create table information_schema.tables \G;来查看tables的所有字段信息,来检索你所需要的字段。

——————————————————————————–

等再熟悉了,再写吧,常练习最重要。

Mybatis-Generator插件学习

本环境是spring boot+maven。
MBG(Mybatis Generator)的默认配置文件名:generatorConfig.xml,位置在:src/main/resources文件夹下,如果generatorConfig.xml没有放在resources下,请指定generatorConfig.xml配置文件的路径。

依赖:

1.Java8+
2.一个实现DatabaseMetaData接口的JDBC driver,主要方法getColumns 和getPrimaryKeys 是必须的。

注意点:
1.对于XLM-若已存在同名的XML文件,MBG则自动合并XML文件。且不会覆写你自定义的更改(自定义的SQL)。你可以一遍又一遍的运行它,不用担心XML内容的丢失与自定义更改。但是会替换先前运行生成的任何XML元素。
2.对于Java类-MBG不会合并Java文件。它会覆盖之前存在的文件或者使用新的唯一名称生成新文件。在迭代方式运行MBG时必须要手动合并Java文件。作为Eclipse插件时,MBG可以自动合并Java文件。
3.如果存在冲突,MBG将使用唯一名称(例如MyClass.java.1)保存新生成的文件。可以此命令覆盖存在的文件:java -jar mybatis-generator-core-x.x.x.jar -configfile \temp\generatorConfig.xml -overwrite

使用MySQL时注意事项:

1.MySQL支持signed和unsigned,numeric类型的字段。这些是JDBC不支持的,Mybatis Generator不能自动转换这些类型的字段。而Java类型都是signed的,使用unsigned时可能会导致无符号字段精度丢失。MBG为MySQL中的unsigned numeric类型的字段提供了<columnOverride>标签。

<table tableName="ALLTYPES" >
<columnOverride column="UNSIGNED_BIGINT_FIELD" javaType="java.lang.Object" jdbcType="LONG" />
</table>

必须自己将返回值转换为适当的类型(在这种情况下,为java.math.BigInteger)。一般是要转成范围更大的类型。

2.MySQL对Catalog和Schema不是友好支持。如果运行 create schema命令则会创建数据库,而JDBC驱动会将其报告为catalog.但是MySql语法不支持标准的catalog..table SQL语法。因此,最好不要在生成器配置中指定catalog或schema。 只需指定表名并在JDBC URL中指定数据库即可。如果使用Connector/J版本是8.x版本,则会尝试对mysql数据库中的系统表(sys, information_schema, performance_schema, etc.)生成代码。若要进制此行为,则 将 nullCatalogMeansCurrent=true追加到JDBC的URL中即可。

jdbc:mysql://127.0.0.1:3309/ssm?useUnicode=true&characterEncoding=utf-8&useSSL=false&nullCatalogMeansCurrent=true

一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表、视图、字段等)
如数据库对象表的全限定名可表示为:Catalog名.Schema名.表名
SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名。

MBG插件包含一个goal目标即 mybatis-generator:generate,此目标maven不会自动执行,可以使用 mvn mybatis-generator:help 查看帮助。运行方法2种(也可以idea中双击mybatis-generator:generate):

1.命令行运行:mvn mybatis-generator:generate

2.覆写已存在的文件: mvn -Dmybatis.generator.overwrite=true mybatis-generator:generate

如果generatorConfig.xml文件使用了自定义的插件,在指定依赖前,请先编译,确定生成了jar包(不然会报错提示无法初始化该对象)

pom.xml文件中配置:

<build>
	<plugins>
		<plugin>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-maven-plugin</artifactId>
			<version>1.4.0</version>
			<dependencies>
				<dependency>
					<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
					<version>6.0.6</version>
				</dependency>
			</dependencies>
			<!-- 以下代码放开后则会作为maven构建的一部分,即随着maven的构建自动执行MBG,生产环境一定要注释 -->
			<!--<executions>
				<execution>
					<id>Generate MyBatis Artifacts</id>
					<goals>
						<goal>generate</goal>
					</goals>
				</execution>
			</executions>-->
		</plugin>
	</plugins>
</build>

generatorConfig.xml文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
    <context id="DB2Tables" targetRuntime="MyBatis3">
        <property name="javaFileEncoding" value="UTF-8"/>

        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3309/ssm?useUnicode=true&amp;characterEncoding=utf-8&amp;useSSL=false"
                        userId="root" password="123456">
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>

        <!-- 生成对象 -->
        <javaModelGenerator targetPackage="com.ruyi.mybatis.model" targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- 生成xml文件 -->
        <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 生成mapper接口 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.ruyi.mybatis.mapper" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

        <table tableName="emp" domainObjectName="Employee">
            <property name="useActualColumnNames" value="true"/>
        </table>

        <table tableName="dept" domainObjectName="Department">
            <property name="useActualColumnNames" value="true"/>
        </table>
    </context>
</generatorConfiguration>