美文网首页
常用的语句

常用的语句

作者: 矮油不错哦_ab60 | 来源:发表于2019-02-19 10:23 被阅读43次

    更新:
    order误用
    order 是mysql的关键字,是用来排序的,oreder by desc;
    使用order做为表名,死活插不进去数据
    如果非要使用order作为表名,那么就要注意了:
    1、查询语句的时候要注意加上表名称(反引号 ``:就是键盘数字1左边的那个键)
    例如:

    select count(1) from order    执行不通过,一直提示sql有问题
    
    select count(1) from `order`   正确写法
    

    准备:首先你要安装一个mysql的数据库

    更新:
    mysql 1064:语法错误,检查自己写的sql语句;
    MySQL重置ID起始值:

    • 方法一:
      delete from 表名;
      truncate table 表名;
      不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。
    • 方法二:
      delete from表名;
      alter table 表名 auto_increment=1;
      这种方法好处是可以从任何值开始,缺点是如果数据量大的话delete from test;非常耗时

    当你表有外键关联的时候,怎么进行删表操作并且重置id的自增

    禁用外键约束
    SET FOREIGN_KEY_CHECKS=0;
     
    TRUNCATE TABLE table
     
    启动外键约束
    SET FOREIGN_KEY_CHECKS=1;
    

    我们都知道可以通过truncate table来重置id的自增,但是遇到表中有外键关联的时候,我们使用truncate的时候,mysql会报错.有种笨笨的方法就是到关联表解除外键关联,但是这个工作速度太慢。

    上面这种方式通过解除外键约束进而重置id自增
    参考链接:当你表有外键关联的时候,怎么进行删表操作并且重置id的自增


    1.以管理员身份打开命令行窗口(cmd)

    2.启动数据库
    net start mysql
    3.关闭数据库
    net stop mysql
    4.查看数据库的版本
    mysql -V(v要大写)

    输出:mysql Ver 14.15 Distrib 6.0.11-alpha, for Win64 (unknown)

    5.查看mysql 的帮助

    mysql --help (注意有两个短杠)

    输出一堆东西

    6.登陆MySql服务器

    mysql -uroot -p

    然后输入自己的密码即可登录mysql服务器

    如果输出:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)

    这是因为mysql的服务器没有启动 输入net start mysql 重新启动即可

    7.登录服务器后

    输入:status 可查看服务器状态


    image.png

    下面是mysql数据库的一些常规操作。

    mysql和oracle的不同点:

    • 一个oracle就是一个数据库。
    • 而一个mysql中可以有多个数据库

    准备:登录到数据库

    注意:每一个命令都要以;分号结束。

    • 显示所有数据库:show databases;
    • 创建数据库:create database 数据库名。eg:create database myweb;
    • 建立数据库表:
      1. 选择使用的数据库:use 数据库名; eg:use myweb;
      2. 创建表:create table 数据库表名 (字段名 类型 ,字段名 类型);
    CREATE TABLE student(
      id int(11) NOT NULL AUTO_INCREMENT,
      studentID int(11) NOT NULL UNIQUE,
      name varchar(255) NOT NULL,
      age int(11) NOT NULL,
      sex varchar(255) NOT NULL,
      PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    • 删除表:drop table 数据库表名 ; eg:drop table student;
    • 删除数据库:drop database 数据库名: eg drop database myweb;
    • 将数据库表中的数据清空: delete from 数据库表名 : eg delete from student;
    • 向数据库表中插入数据: insert into 数据库表名 values () ;eg:insert into student values(1,001,'张三',18,'男');
    • 更新表中的记录:update 数据库表名 set 字段名1='a',字段名2='b' WHERE 字段名3='c';eg:

    update student set name='李四',age=19 where id=1;

    • 导入sql文件命令:
      • use 数据库表名
      • source 路径; eg:source d:myweb.sql;

    2019/2/19 更新

    • 查看当前数据库的字符集
      show variables like 'char_%';
      image.png

    看第三个,列出的是当前数据库使用的字符编码

    • JDBC连接MYSQL乱码解决
      • 方法一:

      如果是通过DriverManager.getConnection(url)编码方式操作JDBC,可以在JDBC的url中追加useUnicode=true&characterEncoding=UTF-8解决乱码问题

    jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=UTF-8

    • 方法二:

    如果是通过其它数据源,比如DBCP、tomcat-jdbc、c3p0、spring-jdbc、hibernate读取配置文件,在url中追加useUnicode=true&characterEncoding=UTF-8是不起作用的,而是通过数据源自身的配置生效,比如下列配置:

    <!-- Tomcat data source -->
     <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource">
      <property name="driverClassName" value="${jdbc.driverClassName}" />
      <property name="url" value="${jdbc.url}" />
      <property name="username" value="${jdbc.username}" />
      <property name="password" value="${jdbc.password}" />
      <property name="dbProperties">
        <props>
            <prop key="useUnicode">yes</prop>
            <prop key="characterEncoding">utf8</prop>
        </props>
      </property>
      <!-- Configuration refer to optimizing connection performance -->
      <property name="initialSize" value="10" />
      <property name="maxActive" value="100" />
      <property name="maxIdle" value="50" />
      <property name="minIdle" value="10" />
      <property name="suspectTimeout" value="60" />
      <property name="timeBetweenEvictionRunsMillis" value="30000" />
      <property name="minEvictableIdleTimeMillis" value="60000" />
      <property name="testOnBorrow" value="true" />
      <property name="validationQuery" value="SELECT 1" />
      <property name="validationInterval" value="30000" />
      <!-- End Configuration refer to optimizing connection performance -->
     </bean>
    

    其中:

    <props>
          <prop key="useUnicode">yes</prop>
          <prop key="characterEncoding">utf8</prop>
    </props>
    

    等价于url中的useUnicode=true&characterEncoding=UTF-8

    参考链接:# mysql jdbc 中文乱码解决方案

    相关文章

      网友评论

          本文标题:常用的语句

          本文链接:https://www.haomeiwen.com/subject/qeqxyqtx.html