mysql輕快入門(3)
- 2020 年 1 月 9 日
- 筆記
有一種情況,你忘記資料庫密碼啦,你怎麼辦,砸電腦嗎?no….. 請見下: select host,user,password from mysql.user; update mysql.user set password=password('123') where name='root';
grant select,insert,update,delete on cissst.* to guest@localhost identified by '123';//這個一般在發布的時候創建一個低級別的帳號供用戶使用,即創建一個 //guest本地用戶 密碼123,對資料庫cissit下的表有select,update,delete許可權
(1)windows下 強行重置mysql root密碼: step1:net stop mysql step2:mysqld –skip-grant-tables 啟動mysql服務,但不載入許可權檢查 step3:再開個窗口輸入mysql回車進入mysql 介面 step4:update mysql.user set password=password('mysql') where name='root'; step5:q step6:update mysql.user set password=password('123') where name='root'; C:Documents and SettingsAdministrator>netstat -nao |find "3306" TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 328 TCP 127.0.0.1:1059 127.0.0.1:3306 TIME_WAIT 0
step7:taskkill -f -pid 328 step8:net start mysql step9:mysql -uroot -pmysql 完成
(2)linux下差不多 step1:pkill mysql&& pkill mysqld step2:mysqld –skip-grant-tables 啟動mysql服務,但不載入許可權檢查 step3:再開個窗口輸入mysql回車進入mysql 介面 step4:update mysql.user set password=password('mysql') where name='root'; step5:q step6:update mysql.user set password=password('123') where name='root'; step 7 :ps aux|grep mysql && pkill mysqld 然後啟動mysql即可
備份: C:>mysqldump -uroot -pmysql cissst >c:cissst.sql
還原: 創建一個待還原的新資料庫: sql>create database cissst; q c:>mysql -uroot -pmysql cissst <c:cissst.sql windows和liuux差不多
(char)舉例
mysql> create table t5(f1 char(4),f2 varchar(4)); Query OK, 0 rows affected (0.16 sec)
mysql> desc t5; +——-+————+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +——-+————+——+—–+———+——-+ | f1 | char(4) | YES | | NULL | | | f2 | varchar(4) | YES | | NULL | | +——-+————+——+—–+———+——-+ 2 rows in set (0.00 sec)
mysql> insert into t5 values('hi ','hi '); Query OK, 1 row affected, 1 warning (0.05 sec)
mysql> select length(f1),length(f2) from t5; +————+————+ | length(f1) | length(f2) | +————+————+ | 2 | 4 | +————+————+ 1 row in set (0.03 sec)
mysql> select concat(f1,'+'),concat(f1,'+') from t5; +—————-+—————-+ | concat(f1,'+') | concat(f1,'+') | +—————-+—————-+ | hi+ | hi+ | +—————-+—————-+ 1 row in set (0.00 sec)
mysql> select concat(f1,'+'),concat(f2,'+') from t5; +—————-+—————-+ | concat(f1,'+') | concat(f2,'+') | +—————-+—————-+ | hi+ | hi + | +—————-+—————-+ 1 row in set (0.00 sec) 總結:從上面可以看出char與varchar的區別 1.(char)一個定長,不夠用空格填充,取出來會去掉右邊的空格,因此如果後邊本身有的空格便會沒有了,但varchar不會,varchar空間利用率更高一些,但並非100%,他還會有一些指示字元串長度的一些東西,但定長速度快
(int) mysql>create table t1(f1 int,f2 int(3)); Query OK, 0 rows affected (0.22 sec)
mysql> desc t1; +——-+———+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +——-+———+——+—–+———+——-+ | f1 | int(11) | YES | | NULL | | | f2 | int(3) | YES | | NULL | | +——-+———+——+—–+———+——-+ 2 rows in set (0.03 sec)
mysql> insert into t1 values(1002100010,1234); Query OK, 1 row affected (0.03 sec)
mysql> select *from t1; +————+——+ | f1 | f2 | +————+——+ | 1002100010 | 1234 | +————+——+ 1 row in set (0.03 sec)
mysql> create table t2(f1 int unsigned zerofill); Query OK, 0 rows affected (0.08 sec)
mysql> desc t2; +——-+—————————+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +——-+—————————+——+—–+———+——-+ | f1 | int(10) unsigned zerofill | YES | | NULL | | +——-+—————————+——+—–+———+——-+ 1 row in set (0.00 sec)
mysql> insert into t2 values(12); Query OK, 1 row affected (0.03 sec)
mysql> select *from t2; +————+ | f1 | +————+ | 0000000012 | +————+ 1 row in set (0.00 sec)
mysql> insert into t2 values(-12); ERROR 1264 (22003): Out of range value adjusted for column 'f1' at row 1 mysql> create table t3(id int not null auto_increment primary key); Query OK, 0 rows affected (0.11 sec)
mysql> desc t3; +——-+———+——+—–+———+—————-+ | Field | Type | Null | Key | Default | Extra | +——-+———+——+—–+———+—————-+ | id | int(11) | NO | PRI | NULL | auto_increment | +——-+———+——+—–+———+—————-+ 1 row in set (0.02 sec)
mysql> create table t4(id int zerofill); Query OK, 0 rows affected (0.09 sec)
mysql> desc t4; +——-+—————————+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +——-+—————————+——+—–+———+——-+ | id | int(10) unsigned zerofill | YES | | NULL | | +——-+—————————+—- 總結:(1)unsigend無符號 (2)int(M) zerofill 只有zerofill寫了M才有意義,zerofill默認unsigned
(date) create table t6(f1 date,f2 datetime,f3 timestamp);
Query OK, 0 rows affected (0.08 sec)
mysql> desc t6; +——-+———–+——+—–+——————-+——-+ | Field | Type | Null | Key | Default | Extra | +——-+———–+——+—–+——————-+——-+ | f1 | date | YES | | NULL | | | f2 | datetime | YES | | NULL | | | f3 | timestamp | NO | | CURRENT_TIMESTAMP | | +——-+———–+——+—–+——————-+——-+ 3 rows in set (0.02 sec)
mysql> insert into t6(f1,f2) values('1983-01-02','1986-03-01 12:10:11'); Query OK, 1 row affected (0.05 sec)
mysql> select *from t6; +————+———————+———————+ | f1 | f2 | f3 | +————+———————+———————+ | 1983-01-02 | 1986-03-01 12:10:11 | 2014-11-16 09:42:48 | +————+———————+———————+ 1 row in set (0.00 sec)
mysql> insert into t6 values(now(),now(),null); Query OK, 1 row affected, 1 warning (0.06 sec)
mysql> select *from t6; +————+———————+———————+ | f1 | f2 | f3 | +————+———————+———————+ | 1983-01-02 | 1986-03-01 12:10:11 | 2014-11-16 09:42:48 | | 2014-11-16 | 2014-11-16 09:44:11 | 2014-11-16 09:44:11 | +————+———————+———————+ 2 rows in set (0.00 sec)
mysql> show variables like 'time_zone'; +—————+——–+ | Variable_name | Value | +—————+——–+ | time_zone | SYSTEM | +—————+——–+ 1 row in set (0.00 sec)
mysql> set time_zone='+9:00'; Query OK, 0 rows affected (0.02 sec)
mysql> select *from t6; +————+———————+———————+ | f1 | f2 | f3 | +————+———————+———————+ | 1983-01-02 | 1986-03-01 12:10:11 | 2014-11-16 10:42:48 | | 2014-11-16 | 2014-11-16 09:44:11 | 2014-11-16 10:44:11 | +————+———————+———————+ 2 rows in set (0.00 sec)
mysql> create table t7(sex enum('M','F') default 'M'); Query OK, 0 rows affected (0.08 sec)
mysql> insert into t7 values('m'),(null),(1); Query OK, 3 rows affected (0.03 sec) Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from t7; +——+ | sex | +——+ | M | | NULL | | M | +——+ 3 rows in set (0.00 sec)
mysql> select 9>7; +—–+ | 9>7 | +—–+ | 1 | +—–+ 1 row in set (0.00 sec) 總結: timestamp 不需要手動填值,它自動獲取當前時間,並且時區改變,也會影響它的值,如上,查看時區可以用show variables like 'time_zone'; 設置時區用set time_zone='+9:00
編碼 mysql> s
mysql Ver 14.12 Distrib 5.0.83, for Win32 (ia32)
Connection id: 1 Current database: Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 5.0.83-community-nt MySQL Community Edition (GPL) Protocol version: 10 Connection: localhost via TCP/IP Server characterset: gbk Db characterset: gbk Client characterset: gbk Conn. characterset: gbk TCP port: 3306 Uptime: 9 sec
Threads: 1 Questions: 4 Slow queries: 0 Opens: 12 Flush tables: 1 Open tabl es: 6 Queries per second avg: 0.444 修改編碼及校對集 alter database demo character set gbk; alter table t5 character set gbk; alter tablet t5 modify f1 char(4) character set gbk; alter table t1 modify f1 varchar(20) collate=gbk_bin; 可以用下面的命令查看支援的校對集 slect COLLATION_NAME,CHARACTER_SET_NAME where CHARACTER_SET_NAME like '%gbk%';