1. 程式人生 > >全面掌握Mysql知識點及select支援的運算操作

全面掌握Mysql知識點及select支援的運算操作

花了2天時間整理了一下程式設計師應掌握的Mysql中的操作(包括select支援的運算操作)及相關概念和知識點,希望這篇部落格對大家有所幫助。

內容提綱

1、登入mysql
2、檢視mysql資訊
3、檢視所有資料庫
4、開啟指定資料庫
5、李處指定資料庫中的所有表
6、檢視指定表的結構
7、檢視建表語句
8、建庫建表
9、修改指定表結構
10、檢視資料庫的編碼方式
11、DML語句(CRUD)操作
12、註釋方式
13、表資料的匯入匯出
14、資料庫的匯入匯出
15、檢視View
16、索引index
17、儲存過程Procedure
18、事務Transaction
19、Mysql使用者建立、授權及刪除
20、select支援的運算操作
21、select支援的邏輯運算操作
附:忘記密碼及修改密碼


1)登入Mysql(本地、遠端)伺服器

登入本地(假設使用者名稱:root; 密碼:123456):mysql -u root -p 123456
登入遠端(假設伺服器ip:192.168.0.111; 使用者名稱:admin; 密碼:admin):mysql -h 192.168.0.111 -u admin -p admin

2)檢視mysql資訊:status

mysql> status
--------------
mysql  Ver 14.14 Distrib 5.6.10, for Win32 (x86)

Connection id:          8
Current database:
Current user:          

[email protected]
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.6.10 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    gbk
Conn.  characterset:    gbk
TCP port:               3306
Uptime:                 17 min 5 sec

3)列出所有資料庫(這裡是以root身份檢視的)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| incubator          |
| movie              |
| mysql              |
| mytest             |
| performance_schema |
| product            |
+--------------------+

4)開啟指定資料庫:use db_name;

mysql> use product;
Database changed

5)列出product資料庫中的所有表:show tables;

mysql> show tables;
+-------------------+
| Tables_in_product |
+-------------------+
| test              |
+-------------------+

6)檢視指定表的結構:desc table_name;

mysql> desc test;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| Id        | int(11)     | NO   | PRI | NULL    | auto_increment |
| type_name | varchar(10) | YES  |     | NULL    |                |
| color_id  | varchar(10) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

7)檢視建表語句DDL: show create table table_name;

| test | CREATE TABLE `test` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `type_name` varchar(10) DEFAULT NULL,
  `color_id` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

8)實戰:建庫、建表

#若存在mydb資料庫則刪除
drop database if exists mydb;
#建庫mydb
create database mydb default charset=utf8;
#開啟資料庫
use mydb;
#若存在mytest表則刪除
drop table if exists mytest;
#建表
create table mytest (
  Id int(11) NOT NULL AUTO_INCREMENT,
  type_name varchar(10) DEFAULT NULL,
  color_name varchar(10) DEFAULT NULL,
  PRIMARY KEY (Id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
#外來鍵約束(級聯刪除):constraint 約束名 foreign key 該表的欄位 references dept(Id) on delete cascade on update cascade;
#檢視mydb裡面有哪些表
show tables;
#檢視mytest的表結構
desc mytest;
#檢視mytest的建表語句
show create table mytest;
#刪除表:drop table mytest;
#刪除指定資料庫下的所有表
mysql> use information_schema;
mysql> select concat('drop table if exists ',table_name, ';' ) from tables where table_schema='db_name';
#刪除庫:drop database mydb;

9)修改mytest表結構

#檢視當前表結構
mysql> desc mytest;
+------------+-------------+------+-----+---------+----------------+
| Field      | Type        | Null | Key | Default | Extra          |
+------------+-------------+------+-----+---------+----------------+
| Id         | int(11)     | NO   | PRI | NULL    | auto_increment |
| type_name  | varchar(10) | YES  |     | NULL    |                |
| color_name | varchar(10) | YES  |     | NULL    |                |
+------------+-------------+------+-----+---------+----------------+

#修改列
mysql> alter table mytest change color_name description varchar(50);
mysql> desc mytest;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| Id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| type_name   | varchar(10) | YES  |     | NULL    |                |
| description | varchar(50) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

#增加列
mysql> alter table mytest add extra_name varchar(20) not null default '豆豆';
mysql> desc mytest;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| Id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| type_name   | varchar(10) | YES  |     | NULL    |                |
| description | varchar(50) | YES  |     | NULL    |                |
| extra_name  | varchar(20) | NO   |     | 豆豆    |                |
+-------------+-------------+------+-----+---------+----------------+

#刪除列
mysql> alter table mytest drop extra_name;
mysql> desc mytest;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| Id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| type_name   | varchar(10) | YES  |     | NULL    |                |
| description | varchar(50) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

#修改表名
mysql> alter table mytest rename to test01;
mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| test01         |
+----------------+
mysql> desc test01;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| Id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| type_name   | varchar(10) | YES  |     | NULL    |                |
| description | varchar(50) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

#修改指定列名
mysql> alter table test01 modify column type_name char(10);
mysql> desc test01;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| Id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| type_name   | char(10)    | YES  |     | NULL    |                |
| description | varchar(50) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

#檢視test01表中以t開頭的欄位資訊。
mysql> desc test01 't%';
+-----------+----------+------+-----+---------+-------+
| Field     | Type     | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| type_name | char(10) | YES  |     | NULL    |       |
+-----------+----------+------+-----+---------+-------+


#建立臨時表:臨時表是指建立後只在當前資料庫內有效,斷開與資料庫的連線後表就自動刪除
create temporary table tb_temp(
    id integer,
    name varchar(100),
    primary key(id)
);

10)檢視資料庫的編碼方式

#檢視當前資料庫的編碼方式
mysql> show variables like 'character%';
+--------------------------+-----------------------------------------+
| Variable_name            | Value                                   |
+--------------------------+-----------------------------------------+
| character_set_client     | gbk                                     |
| character_set_connection | gbk                                     |
| character_set_database   | utf8                                    |
| character_set_filesystem | binary                                  |
| character_set_results    | gbk                                     |
| character_set_server     | latin1                                  |
| character_set_system     | utf8                                    |
| character_sets_dir       | D:\MySQL\MySQLServer5.6\share\charsets\ |
+--------------------------+-----------------------------------------+

#修改編碼方式
mysql> set names 'utf8';
mysql> show variables like 'character%';
+--------------------------+-----------------------------------------+
| Variable_name            | Value                                   |
+--------------------------+-----------------------------------------+
| character_set_client     | utf8                                    |
| character_set_connection | utf8                                    |
| character_set_database   | utf8                                    |
| character_set_filesystem | binary                                  |
| character_set_results    | utf8                                    |
| character_set_server     | latin1                                  |
| character_set_system     | utf8                                    |
| character_sets_dir       | D:\MySQL\MySQLServer5.6\share\charsets\ |
+--------------------------+-----------------------------------------+

11)DML語句(select、insert、update、delete),簡稱CRUD

#插入
mysql> insert into test01(type_name,description) values('綜藝','最近更新');

#更新
mysql> update test01 set type_name='電影' where type_name='綜藝';

#查詢(由於select支援的查詢語句非常廣,所以後面會單獨拿出一篇來寫)
mysql> select * from test01 where Id=1;
#查詢test01表中有幾行記錄
mysql> select count(*) from test01;
#注意:count(*)和count(1)時統計包括null的, 而count(列名)不包含null值,且經試驗得出count(1)的速度最快(Oracle中也是如此)。

#刪除(單刪、全刪)
mysql> delete from test01 where Id=1 and type_name='電影';
mysql> delete from test01;

#清空資料:Id從1開始
mysql> truncate table user;/*清除user表中所有資料*/

12)註釋方式:#、--、/**/

13)表中資料的匯入、匯出

#查看錶test01的資料
mysql> select * from test01;
+----+-----------+-------------+
| Id | type_name | description |
+----+-----------+-------------+
|  1 | 綜藝      | 最近更新    |
|  2 | 電影      | 精彩預告    |
+----+-----------+-------------+
#匯出:將表test01中的記錄匯出到f盤的test.txt檔案中
mysql> select * from test01 into outfile 'f:\\test.txt';
#匯出資料後,清空表test01中的資料
mysql> truncate table test01;
#可以看到,test01表中當前無資料
mysql> select * from test01;
Empty set (0.00 sec)


#匯入:將f盤的test.txt檔案中備份的資料匯入到表test01中
mysql> load data infile 'f:\\test.txt' into table test01;
#可以看到,資料已被匯入到表test01中
mysql> select * from test01;
+----+-----------+-------------+
| Id | type_name | description |
+----+-----------+-------------+
|  1 | 綜藝      | 最近更新    |
|  2 | 電影      | 精彩預告    |
+----+-----------+-------------+

14)資料庫的匯入、匯出

#匯出資料庫:-d匯出表結構,-t匯出資料,不加是匯出整個資料庫
mysql> mysqldump -uroot -p [-d|-t] dbname [tab_name]>e:\mybk.sql

#匯入資料庫:
mysql> mysql -uroot -p new_dbname <e:\mybk.sql

15)檢視View

檢視的工作機制: 當呼叫檢視的時候,才會執行檢視中的sql,進行取資料操作。檢視的內容並沒有儲存,而是在檢視被引用的時候才派生出資料。這樣不會佔用空間,由於是即時引用,檢視的內容總是與真實表的內容是一致的。從檢視的工作機制可以看出:檢視是一種虛擬的表,它並沒有儲存內容,只是引用資料。一般在要經常需要某個查詢結果做子查詢的時候會使用到檢視,注意執行建立/刪除檢視的語句需要使用者具有建立/刪除檢視的許可權。建立檢視的語法:create view 檢視名 as select 查詢語句; 例項說明如下:

mysql> select * from goods;
+----------+------------+------------+--------+
| goods_id | goods_name | shop_price | cat_id |
+----------+------------+------------+--------+
|        1 | 蘋果       |       8.80 |      2 |
|        2 | 西瓜       |       2.98 |      2 |
|        3 | 香蕉       |       6.80 |      2 |
|        4 | 白菜       |       1.80 |      1 |
|        5 | 韭菜       |       2.80 |      1 |
|        6 | 茄子       |       1.80 |      1 |
|        7 | 哈密瓜     |       3.80 |      2 |
+----------+------------+------------+--------+

如果要頻繁查詢某個種類下面的商品平均價格:mysql> select cat_id, avg(shop_price) from goods group by cat_id;
那麼我們可以建立針對這種平均價格的檢視:mysql> create view avgPrice as  select cat_id, avg(shop_price) from goods group by cat_id;
然後我們就可以通過普通的查詢語句來簡化查詢了:
mysql> select * from avgPrice;
+--------+-----------------+
| cat_id | avg(shop_price) |
+--------+-----------------+
|      1 |        2.133333 |
|      2 |        5.595000 |
+--------+-----------------+

可以看到,通過檢視我們可以簡化查詢操作,檢視還有一個好處就是可以進行許可權控制。比如:對於goods表,我們不想讓別人看到我們的銷售價格,這時候我們就可以把檢視goods表的許可權封閉,建立一張檢視:mysql> create view baseGoods as select goods_id,goods_name from goods; 
mysql> select * from baseGoods;
+----------+------------+
| goods_id | goods_name |
+----------+------------+
|        1 | 蘋果       |
|        2 | 西瓜       |
|        3 | 香蕉       |
|        4 | 白菜       |
|        5 | 韭菜       |
|        6 | 茄子       |
|        7 | 哈密瓜     |
+----------+------------+
這樣就可以不出現銷售價格列了。當然我們也可以修改檢視,修改檢視也比較簡單:alter view 檢視名 as select語句,比如對於avgPrice檢視,我們還想看到商品名稱:

mysql> alter view avgPrice as select cat_id,goods_name, avg(shop_price) from goods group by cat_id;
mysql> select * from avgPrice;
+--------+------------+-----------------+
| cat_id | goods_name | avg(shop_price) |
+--------+------------+-----------------+
|      1 | 白菜       |        2.133333 |
|      2 | 蘋果       |        5.595000 |
+--------+------------+-----------------+

刪除檢視:mysql> drop view avgPrice;

16)索引index

索引分單列索引組合索引。單列索引,即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。組合索引是一個索引包含多個列。
對欄位建立索引可以大大提高查詢速度。假如我們建立了一個mytable表:
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID       | int(11)     | NO   |     | NULL    |       |
| username | varchar(16) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
MySQL索引型別包括:
(1)普通索引,這是最基本的索引,它沒有任何限制。它有以下幾種建立方式:
-- 建立索引
CREATE INDEX indexName ON mytable(username(10));               -- 單列索引
-- CREATE INDEX indexName ON mytable(username(10),Id(11));     -- 組合索引
-- indexName為索引名,mytable表名,username和Id為列名, 如果是CHAR,VARCHAR型別,字首長度可以小於欄位實際長度;如果是BLOB和TEXT型別,必須指定字首長度。

#例項演示:建立普通索引
mysql> create index indexName on mytable(username(10));
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID       | int(11)     | NO   |     | NULL    |       |
| username | varchar(16) | NO   | MUL | NULL    |       |
+----------+-------------+------+-----+---------+-------+
#修改索引
mysql> alter table mytable add index indexName (username(10));
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID       | int(11)     | NO   |     | NULL    |       |
| username | varchar(16) | NO   | MUL | NULL    |       |
+----------+-------------+------+-----+---------+-------+
#刪除索引
mysql> drop index indexName on mytable;
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID       | int(11)     | NO   |     | NULL    |       |
| username | varchar(16) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

(2)唯一索引:它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種建立方式(僅僅在建立普通索引時關鍵字 INDEX 前加 UNIQUE

#建立唯一索引
mysql> create unique index indexName on mytable(username(10));
#修改唯一索引
mysql> alter table mytable add unique index indexName (username(10));
#刪除唯一索引
mysql> drop index indexName on mytable;

(3)主鍵索引:它是一種特殊的唯一索引,不允許有空值。在建表的時候同時建立的主鍵即為主鍵索引。主鍵索引無需命名,一個表只能有一個主鍵。主鍵索引同時可是唯一索引或者全文索引,但唯一索引或全文索引不能共存在同一索引。
#通過修改表結構來建立主鍵索引
mysql> alter table mytable add primary key(ID);
mysql> desc mytable;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| ID       | int(11)     | NO   | PRI | NULL    |       |
| username | varchar(16) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

(4)全文索引:InnoDB儲存引擎不支援全文索引
#建立全文索引
mysql> create fulltext index indexName on mytable(username(10));
#修改表結構來建立索引
mysql> alter table mytable add fulltext index indexName (username(10));
#刪除全文索引
mysql> drop index indexName on mytable;

17)儲存過程Procedure

儲存過程:是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。MySQL儲存過程建立的格式:create procedure 過程名 ([過程引數[,...]]) [特性 ...] 過程體。比如要往表test1中插入10000條資料,此時用普通的插入語句顯然不太現實,這時可以考慮儲存過程,例項如下:
mysql> desc test1;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| Id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
| value | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
#刪除儲存過程
mysql> drop procedure if exists pro_test1;
#建立儲存過程
mysql> delimiter //
mysql> create procedure pro_test1()
    -> begin
    ->   declare i int default 1;
    -> while i < 10000 DO
    -> insert into test1(name,value) value('name'+i,'value'+i);
    -> set i = i + 1;
    -> end while;
    -> end;
    -> //

mysql> call pro_test1;--執行儲存過程

還可以在儲存過程中使用自定義(使用者)變數,簡單例項演示:
mysql> create procedure pro_bigworld() select concat(@greeting,' world');
mysql> set @greeting='Hi';
mysql> call pro_bigworld;
+----------------------------+
| concat(@greeting,' world') |
+----------------------------+
| Hi world                   |
+----------------------------+

再看一個if-then-else語句:
delimiter ;
drop procedure if exists pro_test2;
delimiter //
create procedure pro_test2(IN para int)
begin
 declare var1 int;
   set var1=para+1;
   if var1=0 then
      insert into test1(name,value) values('var1name','var1value'+0);
   end if;
   if para=0 then
      update test1 set value=value+'0';
   else
      update test1 set value=value+'1';
   end if;
   end;
   //
mysql> call pro_test2(1);
mysql> //
mysql> select * from test1;

關於Mysql儲存過程中的控制語句比較多,這裡限於篇幅就不一一列舉了。

18)事務Transaction

事務幾個基本特性: ACID
原子性(atomicity):事務在執行時,要做到“要麼不做,要麼全做”,也就是說不允許事務部分得執行。即使因為故障而使事務不能完成,在rollback時也要消除對資料庫得影響!
一致性(consistency):在事務處理執行前後,資料庫是一致的(兩個賬戶要麼都變,或者都不變)。
隔離性(isolcation):一個事務處理對另一個事務處理沒有影響。
持續性(durability):事務處理的效果能夠被永久儲存下來 。
MYSQL的事務處理主要有兩種方法:
1、用begin,rollback,commit來實現
     begin 開始一個事務
     rollback 事務回滾
     commit  事務確認
2、直接用set來改變mysql的自動提交模式
   MYSQL預設是自動提交的,也就是你提交一個QUERY,它就直接執行!我們可以通過
     select @@autocommit;//檢視當前事務是否為自動提交(1為自動提交)
     set autocommit=0   禁止自動提交
     set autocommit=1 開啟自動提交
   來實現事務的處理。

注意】當你用 set autocommit=0 的時候,你以後所有的SQL都將做為事務處理,直到你用commit確認或rollback結束,注意當你結束這個事務的同時也開啟了個新的事務!按第一種方法只將當前的作為一個事務!

19)MySQL使用者建立,授權以及刪除

建立使用者yy,密碼123: create user yy identified by '123';
授權:grant all privileges on dbname.* to [email protected] identified by '123';
授予使用者yy查詢資料庫dbname中所有表的許可權:grant select on dbname.* to yy;
撤銷使用者yy查詢資料庫dbname中所有表的許可權:revoke select on dbname.* from yy;
刪除使用者:drop user yy;

20)select支援的運算操作

select case 1 when 1 then 'one' when 2 then 'two' end;/*選擇事件1:推薦使用單引號表示字串*/
select if(1<2,'yes','no');/*判斷語句*/
select char_length('qwert');/*求字元長度*/
select concat('my','sql');/*連線字串*/
select locate('bar','foobarhat');/*查詢母串'bar'所在位置,若未找到則為0*/
select substring('yichun university',5,6);/*提取字串*/
select trim(' bar ');;/*去掉前後空格*/
select repeat('mysql',3);/*mysql字串重複3次*/
select reverse('abcd');/*反轉*/
select round(2.5);/*四捨五入到3*/
select rand()*10;/*返回0~10之間的數*/
select hex('cat');/*檢視ASCII碼*/
select true,false;/*輸出1,0*/
select now();/*顯示當前日期時間*/
select curtime();/*顯示當前時間*/
select current_time();/*顯示當前時間*/
select curdate();/*顯示當前日期*/
select current_date();/*顯示當前日期*/
select current_timestamp();/*顯示當前時間戳*/
select database();/*顯示當前資料庫*/
select user();/*顯示當前使用者*/
select version();/*顯示當前mysql版本*/
select database();/*顯示當前開啟的資料庫*/
select left(type_name,2) from test;/*檢視test表中名為type_name列的所有值的前兩個字母*/
select right(type_name,2) from test;/*檢視test表中名為type_name列的所有值的後兩個字母*/

21)select支援的邏輯運算操作

select 2>1&&3>2;/*邏輯與1*/
select 2>1 and 3>2;/*邏輯與1*/
select 1>2 || 3>2;/*邏輯或1*/
select 1>2 or 3>2;/*邏輯或1*/
select !(1>2);/*邏輯非1*/
select not(1>2);/*邏輯非1*/
select 15 ^ 2;/*邏輯異或:15的二進位制1111,2的二進位制0010,根據"同0異1"原則,結果為1101十進位制13*/
select 15 xor 2;/*邏輯異或:13*/

附1:忘記密碼

1.關閉正在執行的MySQL。
2.開啟DOS視窗,轉到mysql\bin目錄。
3.輸入mysqld --skip-grant-tables回車。如果沒有出現提示資訊,那就對了。
4.再開一個DOS視窗(因為剛才那個DOS視窗已經不能動了),轉到mysql\bin目錄。
5.輸入mysql回車,如果成功,將出現MySQL提示符 >,接下來就可以修改密碼了。

附2:修改密碼
方法一:
(適用於管理員或者有全域性許可權的使用者重設其它使用者的密碼)
進入命令列模式
mysql> use mysql;
mysql> UPDATE user SET password="newPassword" WHERE user='name';
mysql> FLUSH PRIVILEGES; //重新整理許可權
mysql> QUIT

方法二: 
(應用同上,只是方法不同)
mysql> SET PASSWORD FOR name=PASSWORD('new password');
mysql> QUIT

相關推薦

全面掌握Mysql知識點select支援運算操作

花了2天時間整理了一下程式設計師應掌握的Mysql中的操作(包括select支援的運算操作)及相關概念和知識點,希望這篇部落格對大家有所幫助。 內容提綱 1、登入mysql 2、檢視mysql資訊 3、檢視所有資料庫 4、開啟指定資料庫 5、李處指定資料庫中的所有表 6

mysql聚合函數,運算操作

bsp mit esc ble group by 運算 efault 個數 mysq 樣板,空值(null)自改create database sky;use sky;create table m1(id int(11),name char(20),age tinyint(

spring配置mysql資料庫對資料庫的操作

applicationContext.xml <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">              &

MySql知識點全面總結

結構化查詢語言SQL概述 SQL(Structured Query Language) 是結構化查詢語言的縮寫。 SQL是在關係資料庫上執行資料操作、檢索及維護所使用的標準語言,可以用來查詢資料,操縱資料,定義資料,控制資料,所有資料庫都使用相同或者相似的語言。 SQL可分為:

mysql事務,select for update,資料的一致性處理

在MySQL的InnoDB中,預設的Tansaction isolation level 為REPEATABLE READ(可重讀) 在SELECT 的讀取鎖定主要分為兩種方式:   SELECT ... LOCK IN SHARE MODE    SELECT ... FOR UPDATE   這兩

mysql事務,select for update,數據的一致性處理

use tro where strong 結束 mysql事務 mode evel 簡單的 在MySQL的InnoDB中,預設的Tansaction isolation level 為REPEATABLE READ(可重讀) 在SELECT 的讀取鎖定主要分為兩種方式:

棧基本知識點基本運算的實現

什麼是棧:       棧是一種只能在一端插入或刪除的線性表。在表中,允許進行插入或刪除的一端叫做棧頂。(ps:我覺得棧就是一個數組,棧頂就是下標)表的另一端稱為棧底,當棧中沒有元素時稱為空棧,棧的插入稱為入棧或進戰,棧中資料元素的刪除稱為出棧或退棧。 棧的特點:  

MySQL重要知識點面試總結》:推薦收藏

  前言: 這篇花文章是我花了幾天時間對之前總結的MySQL知識點做了完善後的產物,這篇文章可以用來回顧MySQL基礎知識以及備戰MySQL常見面試問題。 什麼是MySQL? MySQL 是一種關係型資料庫,在Java企業級開發中非常常用,因為 MySQL 是開源免費的,並且方便擴充套件

MySQL索引查詢優化總結

存儲 一行 -1 type 一定的 關鍵技術 表示 智能 string類型 一個簡單的對比測試 前面的案例中,c2c_zwdb.t_file_count表只有一個自增id,FFileName字段未加索引的sql執行情況如下: 在上圖中,type=all,key=nul

數據庫---->應掌握知識點:概述

如何實現 數據 設計 掌握 伸縮性 原理 dbms 存儲 系統 第一部分 DBMS的功能以及實現該功能的原理 數據庫管理系統相關知識 DBMS如何存儲和管理大數據集(有效性和可伸縮性) DBMS是如何實現多用戶同時存取數據的(並發性) 系統出現故障時,DBMS如何保護數

關於如何查看mysql版本其端口號

var bsp 知識庫 pla targe span nbsp () spa 關於如何查看MySQL版本: 方法一: 進入mysql cmd, stauts; 將顯示當前mysql的version的各種信息。 方法二: 還是在mysql的cmd下,輸入: sel

MySQL知識點整理

啟動服務 db2 sign slist mem lte 外鍵 open 用戶名 一、MySQL安裝 1.Windows:運行可執行文件 壓縮包 放置任意目錄 2.初始化: 服務端:E:mysql-5.7.16-winx64\mysql-5.7.16-winx64\bi

MySQL練習

struct 同學 rain 分享 spl auto bsp set 女生 MySQL練習 /* Navicat Premium Data Transfer Source Server : localhost Source Server Ty

MySql語句中select可以嵌套麽,字段的重命名可以用中文麽

ply 描述 查詢 select get targe http 查詢語句 字段 今天文檔中看到的查詢語句,SELECT後面又跟了一個SELECT嵌套,而且把字段重命名為中文,請問可以這樣做麽

【轉載】MySQL事務以及SELECT ... FOR UPDATE的使用

商品 tail ase -a base 我們 evel erl tel MySQL中的事務,默認是自動提交的,即autocommit = 1; 但是這樣的話,在某些情形中就會出現問題:比如: 如果你想一次性插入了1000條數據,mysql會commit1000次的, 如果我

MYSQL中的多類型查詢高級查詢操作

最大值 -s 當前 and 最大 笛卡爾 rand 必須 min   離散查詢select * from car where price=30 or price=40 or price=50 or price=60;select * from car where price

mysql主從讀寫分離

主從與讀寫分離 主從同步1 主配置把237配置為主數據庫服務器 授權用戶從42數據庫服務器連接自己的時候有拷貝數據的權限grant replication slave on *.* to [email protected]"172.40.7.42" identified

mysql知識點

標簽 相等 快速 用戶 維護 else if tid 日誌 給定 mysql:默認4G內存,能存儲800萬T數據,5000萬行記錄。數據庫:處理業務數據的存儲學校->院系->班級->班關系型數據庫:體現業務表中的字段:管理各自職能範圍內的業務。(數據) 一

MySQL】出現“SELECT list is not in GROUP BY clause and contains xxx”錯誤提示

engine 數據 連接 設置 subst sql_mode xxx and sele 需要設置為 sql_mode=‘NO_ENGINE_SUBSTITUTION‘ 設置方式: 1、MySQL客戶端連接上數據庫。 2、當前操作的數據切換成 mysql 3、執行 SELEC

【數據庫系列】MySql中的select的鎖表範圍

nbsp 範圍 nod 指定 lock 無數據 才會 rdb sele 由於InnoDB預設的是Row-Level Lock,只有明確指定主鍵的時候MySql才會執行Row lock,否則MySql將會執行Table Lock. 1、明確指定主鍵則是行鎖 2、明確指定主鍵,