常用的語句 當你表有外鍵關聯的時候,怎麼進行刪表操作並且重置id的自增 下面是mysql數據庫的一些常規操作。

更新:
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 可查看服務器狀態


下面是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_%';

看第三個,列出的是當前數據庫使用的字符編碼

  • 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 中文亂碼解決方案

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章