全面掌握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:
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、明確指定主鍵,