更新:
order誤用
order 是mysql的關(guān)鍵字,是用來排序的,oreder by desc搁骑;
使用order做為表名,死活插不進(jìn)去數(shù)據(jù)
如果非要使用order作為表名又固,那么就要注意了:
1仲器、查詢語句的時候要注意加上表名稱
(反引號 ``:就是鍵盤數(shù)字1左邊的那個鍵)
例如:
select count(1) from order 執(zhí)行不通過,一直提示sql有問題
select count(1) from `order` 正確寫法
準(zhǔn)備:首先你要安裝一個mysql的數(shù)據(jù)庫
更新:
mysql 1064:語法錯誤仰冠,檢查自己寫的sql語句乏冀;
MySQL重置ID起始值:
- 方法一:
delete from 表名;
truncate table 表名;
不帶where參數(shù)的delete語句可以刪除mysql表中所有內(nèi)容,使用truncate table也可以清空mysql表中所有內(nèi)容洋只。效率上truncate比delete快辆沦,但truncate刪除后不記錄mysql日志,不可以恢復(fù)數(shù)據(jù)识虚。delete的效果有點像將mysql表中所有記錄一條一條刪除到刪完肢扯,而truncate相當(dāng)于保留mysql表的結(jié)構(gòu),重新創(chuàng)建了這個表担锤,所有的狀態(tài)都相當(dāng)于新表蔚晨。
- 方法二:
delete from表名;
alter table 表名 auto_increment=1;
這種方法好處是可以從任何值開始,缺點是如果數(shù)據(jù)量大的話delete from test;非常耗時
當(dāng)你表有外鍵關(guān)聯(lián)的時候肛循,怎么進(jìn)行刪表操作并且重置id的自增
禁用外鍵約束
SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE table
啟動外鍵約束
SET FOREIGN_KEY_CHECKS=1;
我們都知道可以通過truncate table來重置id的自增铭腕,但是遇到表中有外鍵關(guān)聯(lián)的時候,我們使用truncate的時候多糠,mysql會報錯.有種笨笨的方法就是到關(guān)聯(lián)表解除外鍵關(guān)聯(lián)累舷,但是這個工作速度太慢。
上面這種方式通過解除外鍵約束進(jìn)而重置id自增
參考鏈接:當(dāng)你表有外鍵關(guān)聯(lián)的時候熬丧,怎么進(jìn)行刪表操作并且重置id的自增
1.以管理員身份打開命令行窗口(cmd)
2.啟動數(shù)據(jù)庫
net start mysql
3.關(guān)閉數(shù)據(jù)庫
net stop mysql
4.查看數(shù)據(jù)庫的版本
mysql -V
(v要大寫)
輸出:mysql Ver 14.15 Distrib 6.0.11-alpha, for Win64 (unknown)
5.查看mysql 的幫助
mysql --help
(注意有兩個短杠)
輸出一堆東西
6.登陸MySql服務(wù)器
mysql -uroot -p
然后輸入自己的密碼即可登錄mysql服務(wù)器
如果輸出:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
這是因為mysql的服務(wù)器沒有啟動 輸入net start mysql 重新啟動即可
7.登錄服務(wù)器后
輸入:status 可查看服務(wù)器狀態(tài)
下面是mysql數(shù)據(jù)庫的一些常規(guī)操作笋粟。
mysql和oracle的不同點:
- 一個oracle就是一個數(shù)據(jù)庫怀挠。
- 而一個mysql中可以有多個數(shù)據(jù)庫
準(zhǔn)備:登錄到數(shù)據(jù)庫
注意:每一個命令都要以析蝴;分號結(jié)束害捕。
- 顯示所有數(shù)據(jù)庫:
show databases;
- 創(chuàng)建數(shù)據(jù)庫:create database 數(shù)據(jù)庫名。eg:
create database myweb;
- 建立數(shù)據(jù)庫表:
- 選擇使用的數(shù)據(jù)庫:use 數(shù)據(jù)庫名; eg:
use myweb;
- 創(chuàng)建表:create table 數(shù)據(jù)庫表名 (字段名 類型 闷畸,字段名 類型);
- 選擇使用的數(shù)據(jù)庫:use 數(shù)據(jù)庫名; eg:
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 數(shù)據(jù)庫表名 ; eg:
drop table student;
- 刪除數(shù)據(jù)庫:drop database 數(shù)據(jù)庫名: eg
drop database myweb;
- 將數(shù)據(jù)庫表中的數(shù)據(jù)清空: delete from 數(shù)據(jù)庫表名 : eg
delete from student;
- 向數(shù)據(jù)庫表中插入數(shù)據(jù): insert into 數(shù)據(jù)庫表名 values () ;eg:
insert into student values(1,001,'張三',18,'男');
- 更新表中的記錄:update 數(shù)據(jù)庫表名 set 字段名1='a',字段名2='b' WHERE 字段名3='c';eg:
update student set name='李四',age=19 where id=1;
- 導(dǎo)入sql文件命令:
- use 數(shù)據(jù)庫表名
- source 路徑; eg:
source d:myweb.sql;
2019/2/19 更新
- 查看當(dāng)前數(shù)據(jù)庫的字符集
show variables like 'char_%';
看第三個尝盼,列出的是當(dāng)前數(shù)據(jù)庫使用的字符編碼
- 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
- 方法二:
如果是通過其它數(shù)據(jù)源佑菩,比如DBCP盾沫、tomcat-jdbc、c3p0殿漠、spring-jdbc赴精、hibernate讀取配置文件,在url中追加useUnicode=true&characterEncoding=UTF-8是不起作用的绞幌,而是通過數(shù)據(jù)源自身的配置生效蕾哟,比如下列配置:
<!-- 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 中文亂碼解決方案