mysql dubli key_MySql操作

字段命名规范:

表名_字段名

如: stud_id--------------------------------------

用户管理:1.登陆

mysql//登录默认用户root 没密码

mysql-uroot -p1234

mysql-h host_name -u user_name–ppassword

mysql--user root --password --host localhost

mysql -uroot -p1234 -h192.168.1.9; //登陆远程服务器2.创建用户

命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:username-你将创建的用户名,

host-指定该用户在哪个主机上可以登陆,

如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%.

password-该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.create user root identified by '1234';insert into mysql.user(Host,User,Password) values("localhost","xt",password("1234"));

mysql>flush privileges;//刷新系统权限表

这样就创建了一个名为:xt 密码为:1234的用户。3.受权

命令:GRANT privileges ON databasename.tablename TO 'username'@'host'说明:privileges - 用户的操作权限,如SELECT , INSERT , UPDATE等.

如果要授予所的权限则使用ALL.;databasename- 数据库名,tablename-表名,

如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*

grant all privileges on stud.* to xt@localhost identified by '1234';//xt本地用户受权为 all所有权限,操作 stud数据库的所有表

mysql>flush privileges;//刷新系统权限表

如果想指定部分权限给一用户,可以这样来写:

mysql>grant select,update on stdu.* to xt@localhost identified by '1234';//刷新系统权限表。

mysql>flush privileges;grant all on *.* to 'root'@'%' with grant option;//all所有权限, *.*数据库名.表名// '%'这里指这可以使用该用户访问的主机ip,'%'表为所有主机都可以用该帐号访问4.设置与更改用户密码

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');

如果是当前登陆用户用:SET PASSWORD =PASSWORD("newpassword");

例子:SET PASSWORD FOR 'xt'@'%' = PASSWORD("123456");

更新用户密码update user set password=password('1234');//更新所有用户的密码为1234//password('1234');表示对密码加密//对密码的更新要重启服务才能生效-- 5.修改密码

mysql>update mysql.user set password=password('新密码') where User="xt" and Host="localhost";

mysql>flush privileges;6.删除名称为空的用户delete from user where user='';7.删除用户

mysql>DELETE FROM user WHERE User="xt" and Host="localhost";

mysql>flush privileges;

或:drop userxt;//删除用户的数据库

mysql>drop databasestud;8.增加用户可以选程访问,mysql.user表:create user root identified by '1234'; --创建用户 root 密码1234

Grant all on *.* to 'root'@'%' with grant option; 授权'%'表示所有主机都可以使用该帐号登陆9.撤销用户权限

命令:REVOKE privilege ON databasename.tablename FROM 'username'@'host';

说明: privilege, databasename, tablename-同授权部分.

例子:REVOKE SELECT ON *.* FROM 'xt'@'%';10.显示数据库所有变量设置

show variables;11. 显示数据库所用的码表;

show variableslike 'char%';12. 设置编码set character_set_client=UTF8;13. 同时设置client,connection,database,results编码;(统一编码)setnames utf8;14.修改用户可登陆主机 (可阻止其他IP登陆)update user set host='192.168.1.3' where host='%';----------------------------------------------------------------------------

备分数据库――》

mysqldump-u 用户名 -p 数据库名 >文件名.sql

恢复数据库――》

Source 文件名.sql-----------------------------------------------------------------------------

1.显示所有数据库

show databases;2.创建数据库create databasextk;create database xtk character set utf8;//创建支持中文编码的数据库create database if not exists xtk; //如果xtk 不存在就创建;3.选择使用数据库usextk;4.创建表create tablestud(

idint,

namevarchar(30),

ageint);5.显示默认数据库中所有表

show tables;

或:select * fromtables ;select * from tables where table_schema='xt';//查寻表中有那些字段select * from columns where table_schema='xt' and table_name='stud';6.查寻表select * fromstud;Select * from user; //看一个某个表中的数据:Select 字段 from表名;select host,user,password from user;SELECT * FROM users WHERE sex='1' AND (age>30 OR addr='NY');SELECT * FROM users WHERE age IN(25,65,35,15);/*in就是或的关系*/

select * from test.text where id in(1,3,5) /*指找出ID为1 3 5的 not in()则相反*/

SELECT * FROM users WHERE age>=20 AND age<=30;-

SELECT * FROM users WHERE age BETWEEN 20 AND 40;/*and且用的是大小就可以转成between*/

select * from test.text where id not between 1 and 4 /*指ID不在1-4里面的 出来*/

**子查询**子查询是指在一个查询中包含别一个查询语句 ,在服务器解析带有子查询的语句时,会先执行子查询。再执行外部查询:

查询一下,年龄最大的人是哪一个人:SELECT * FROM users WHERE age=(SELECT MAX(age) FROMusers);

查询一下,年龄最小的人是哪一个人:SELECT * FROM users WHERE age=(SELECT MIN(age) FROMusers);/*没有车的人*/

SELECT DISTINCT users.name FROM users,car WHERE users.id NOT IN (SELECT car.userid FROMcar);7.插入记录insert into stud values(1,'xtksfm',160);insert into stud(id,name) values(1,’jack’);//指定列insert into stud values(1,'xtksfm',160),(2,'sssm',110),(3,'xdddm',80);8.放弃正在输入的命令

\c

clear;9.显示命令清单

\h

help10.退出mysql程序:

\qexit

11.查看mysql服务器状态信息:

\s12.显示系统设置信息

show VARIABLES;13.显示表结构desc表名;14.删除表中数据delete from表名;delete fromstud;delete from stud where id=1; /*删除指定的行*/

delete from stud where id>5;

也可以使用TRUNCATE TABLE stud; //它与delete的区别是不记录操作日志,即无法恢复数据。15.删除表drop table表名;drop tablestud;16.删除数库库drop database库名;17.修改表结构

添加字段:alter tablestudadd column age int; //给stud添加例 age

删除字段:alter tablestuddrop columnname;

在字段的上面添加一个新的字段。需要关键字 first :

mysql> alter table passwd add id int(3) not null auto_increment primary key not nullfirst ;

在指定的位置添加一个新的字段:

mysql>alter table passwd add date yearafter id ;

默认添加在最后面:

mysql>alter table passwd add QQ int(16) ;

删除表结构字段:

mysql>alter table passwd dropdate ;

修改字段类型:

mysql>alter table passwd modify QQ int(11) not null; 修改passwd表的QQ字段。

修改字段名:

mysql> alter table passwd change QQ qq int(11) not null; 修改QQ字段为qq,用到change关键字。 需要将权限类型写上,也可以更改类型。18. 修改(设置)数据update stud set age=90; //给stud表的所有age字段设置值;update stud set age=160

where name='ksfm'; //给stud表name='ksfm'的age字段设置值;update stud set name='Rose',id=22 where id=1; //同时修改两个值

在原值上面进行累加操作:Update product set price=price*1.1 -所有商品的价格上涨10%

19. 排序

排序:ORDERBY要出现在其他关键字的后面/*DISTINCT 去除相同*/

/*ORDER BY 从小到大排序*/

SELECT DISTINCT age FROM stud ORDER BY age; //默认从小到大;SELECT DISTINCT age FROM stud ORDER BY age ASC;/*ORDER BY DESC从大到小排序*/

SELECT DISTINCT age FROM stud ORDER BY age DESC;20. 自动增长主键CREATE TABLEb(

idINT PRIMARY KEYAUTO_INCREMENT,

NAMEVARCHAR(32)

);21. 添加主键//person_pk为自定义主键名(用于索引)ALTER TABLEpersonADD CONSTRAINT person_pk PRIMARY KEY(id);22. 删除主键:alter table tablename drop primary key;23. 外键约束create tablecar(

idvarchar(32) primary key,

namevarchar(30),

price Numeric(10,2),

pidvarchar(32),CONSTRAINT car_fk foreign key(pid) referencesperson(id)

);ALTER TABLEsbADD CONSTRAINT sb_fk1 FOREIGN KEY(sb_studid) REFERENCESstud(stud_id);24. 别名

xs.age 这种引用方式可以在子查询中使用,如果要在主查询中使用 ,就要用 别名.age的形式:SELECT aa.id,aa.name,aa.age FROM (SELECT * FROM stud) AS aa WHERE age>20;SELECT xx.id,xx.name,xx.age FROM stud ASxx;-----------------------------------------------------------------------------------

limit 限制select *from stud limit 0,2; //大于0行的, 查询2行;------------------------------------------------------------------------------------

where子句:1. SELECT * FROM stud WHERE age>80;2. /*使用between*/在两者之间SELECT * FROM stud WHERE age BETWEEN 29 AND 44;3. /*and or*/

SELECT * FROM stud WHERE age>80 AND age<600;SELECT * FROM stud WHERE age=160 OR age=150;4. /*用in来换掉or*/表示在之内的SELECT * FROM stud WHERE age IN(5,55,15);5. /*模糊查询like,%(任意匹配),_(匹配一个)*/

SELECT * FROM stud WHERE NAME LIKE '大__';SELECT * FROM stud WHERE NAME LIKE '%o%' OR age=44;6. /*查询没有设置年龄的人*/

SELECT * FROM stud WHERE age IS NULL;UPDATE stud SET age=100 WHERE age IS NULL;-----------------------------------------------------------------------------

view视图

视图是保存在数据库中的选择查询,相当于从一个或多个数据表中派生出来的虚拟表。

它兼有查询和表的双重功能。view相当于一个查寻出来的虚拟表/*创建一个view*/

CREATE VIEW ss AS SELECT * FROM stud WHERE age>9;

查寻viewSELECT * FROMss ;-------------------------------------------------------------------------------

聚合函数:1.Count计数――》Count(*)行数量—不包含空行 null

SELECT COUNT(*) FROM users; //计数并查寻出来SELECT COUNT(1) FROMusers;

COUNT不会包含NULL的记录的行SELECT COUNT(age) FROMusers;/*使用count进行数量计算,使用as设置一个别名

使用*或是1是计算所有。

使用某个名,是指不包含null的列的数量 。*/

SELECT COUNT(*) AS num FROM stud; //ASnum 别名SELECT COUNT(age) FROMstud;2.avg平均――》/*计算age整型的平均值*/

SELECT AVG(age) FROMstud;/*计算age平均值ROUND取整*/

SELECT ROUND(AVG(age)) AS 平均值 FROMstud;3.Max最大――》SELECT MAX(age) FROMstud;SELECT NAME,MAX(age) FROMstud;/*查寻年龄最大的人的名子*/

SELECT * FROM stud WHERE age =(SELECT MAX(age) FROMstud);SELECT * FROM stud WHERE age in(SELECT MAX(age) FROMstud);4.Min最小――》/*选择年龄最小的那个人的名称*/

SELECT * FROM stud WHERE age=(SELECT MIN(age) FROMstud);5.Sum求和――》SELECT SUM(age) FROMstud;6.Distinct――》去除相同的信息/*查寻出age字段 不包含age相同的记录*/

SELECT DISTINCT age FROMstud;

排序:ORDERBY要出现在其他关键字的后面/*ORDER BY 从小到大排序*/

SELECT DISTINCT age FROM stud ORDER BY age; //默认从小到大;SELECT DISTINCT age FROM stud ORDER BY age ASC;/*ORDER BY DESC从大到小排序*/

SELECT DISTINCT age FROM stud ORDER BY age DESC;7.Exists存在判断――》/*exists只判断是否存在*/

SELECT * FROM stud WHERE EXISTS (SELECT * FROM stud WHERE age=100);-------------------------------------------------------------------------

groupby对数据进行分组:/*根据名称进行分组计算*/

/*查寻出name 和 age 两个字段 , 并根据name分组 ,所有name 相同的为一行记录*/

SELECT NAME,SUM(age) FROM stud GROUP BYNAME;/*sum(age)要想出现在 where 后那么必须 在前面查寻使用过sum(age)*/

/*对分组后的数据要筛选不用where 而是having关键字*/

SELECT NAME,SUM(age) FROM stud GROUP BY NAME HAVING SUM(age)>20;--------------------------------------------------------------------------

Having:

Having关键字的做用是对已经使用了聚合函数的查询再进行过虑:

如:根据角色ID计算数量,然后只选择数据大于4的记录:SELECT COUNT(*),func_role FROM func GROUP BYfunc_roleHAVING COUNT(*) >4

---------------------------------------------------------------------------

字符串处理函数:1.

Length(str) - 求字符串长度2.

TRIM(str)SELECT * FROM stud WHERE TRIM(NAME)='xt';Ltrim(str) - 去掉左边的空格Rtrim(str) - 去掉右边的空格SELECT * FROM stud WHERE RTRIM(LTRIM(NAME))='AAA';Left(str,len); - 从左边取出n个字符SELECT LEFT(TRIM(NAME),2) FROMstud;Right(str,len); - 从右边取出n个字符Substring(str,begin,end) -返回子串Reverse(str) –返回颠倒的字符串SELECT REVERSE(NAME) FROMstud;Lower(str) - 转成小写Upper(str) - 转成大写

Concat(Str,str…..)串联字符串。SELECT CONCAT(NAME,age,id) FROMstud;

Instr(str,s) – 返回s在str中出面的位置,没有则返回0SELECT NAME,INSTR(NAME,'o') FROMstud;-----------------------------------------------------------------------------

** 数学相关函数**

ABS(number2 ) 绝对值

BIN (decimal_number ) 十进制转二进制CEILING(number2 ) 向上取整

CONV(number2,from_base,to_base) 进制转换FLOOR(number2 ) 向下取整

FORMAT (number,decimal_places ) 保留小数位数

HEX (DecimalNumber ) 转十六进制

LEAST (number , number2? [,..]) 求最小值

MOD (numerator ,denominator ) 求余RAND([seed]) RAND([seed])------------------------------------------------------------------------------

关联查询和子查询:

当一个表的数据不能满足我们的需要时,我们就要从多个表中查询数据。

此时必须使用关联查询:inner join– 内关联,双方必须都要存在。left join-左关联。以左边数据为准。right join- 右关联。/*查寻年龄相同的所有人*/ (已知有age 23或 21的)select * from stud where age=23 or age=21;/*查寻年龄相同的所有人*/(不知age都是什么值)//分析:根据年龄计数并分组,然后再筛选>=2的select count(age),age from stud group by age having count(age)>=2;1.无关子查询/*无关子查询*/--->>是指子查询语句中不包含主语句中的表

select * from stud where age in(select age from stud group by age having count(age)>=2);2.相关子查询/*查寻年龄相同并且age>20的所有人*/(不知age都是什么值)/*相关子查询*/--->>是指子查询语句中包含主语句中的表

SELECT * FROM stud AS xs WHERE age IN(SELECT age FROM stud WHERE xs.age>20 GROUP BY age HAVING COUNT(age)>=2);3.注意:

xs.age 这种引用方式可以在子查询中使用,如果要在主查询中使用 ,就要用 别名.age的形式:

例:SELECT aa.id,aa.name,aa.age FROM (SELECT * FROM stud) AS aa WHERE age>20;SELECT xx.id,xx.name,xx.age FROM stud ASxx;4.关联查询join ---->>指有关联关系的表之间的查询

两个表之间有 一对多 ,多对多, 一对一 的关系:

那么两个表之间就有 :

关键字join相当于逻辑判断作用/*内连接的连接查询结果集中仅包含满足条件的行*/

/*外连接的连接查询结果集中既包含那些满足条件的行,还包含其中某个表的全部行*/

inner join – 内关联,查询时两个表必须都要存在。 相于逻辑 AND

-->>示例:

users car|-id-主键 |-id-主键|-name |-name|-sex |-price|-userid-外键CREATE TABLEusers(

idVARCHAR(32) PRIMARY KEY,

NAMEVARCHAR(32),

sexCHAR(1)

);CREATE TABLEcar(

idVARCHAR(32) PRIMARY KEY,

NAMEVARCHAR(32),

price NUMERIC(10,2),

useridVARCHAR(32)

);/*查询一个某人拥有什么车*/

SELECT users.name,car.name FROM users,car WHERE users.id=car.userid;/*查询一个某人拥有什么车 关联关系查询*/

SELECT users.name,car.name FROM users INNER JOIN car ON users.id=car.userid;//inner join指两个表都必须相时存在/*没有车的人*/

SELECT DISTINCT users.name FROM users,car WHERE users.id NOT IN (SELECT car.userid FROMcar);/*没有车的人 用关联关系查询 left join -左关联。查询时以左边数据为准。*/

SELECT person.name,car.name FROMpersonLEFT JOIN car ON person.id=car.pid //只要左表存在就列出,右表不满足的列nullWHERE car.name IS NULL

/*查询xt有什么车*/

SELECT person.name,car.name FROMperson,carWHERE person.id=car.pid AND person.name='xt';SELECT car.name FROM car WHERE car.userid=(SELECT users.id FROM users WHERE users.name="xt");/*查询有2车以上的人的ID*/

SELECT COUNT(pid),pid FROM car GROUP BY pid HAVING COUNT(pid)>=2;SELECT * FROMpersonWHERE id IN (SELECT pid FROM car GROUP BY pid HAVING COUNT(pid)>=2);right join- 右关联。------------------------------------------------------------------------------

多对多

stud book-------------- ------------------

S001 xt B001 Java

S002 yy B002 Oracle

S003 YL B003 .Net

中间表-------------------

外键外键 foreign key

S001 B001

S001 B003

S003 B001

________________|联合主键-->> 不同出现两个字段都一样的数据

primary key

/*创建stud表*/

CREATE TABLEstud(

stud_idVARCHAR(32) PRIMARY KEY,

sdub_nameVARCHAR(32)

);/*创建book表*/

CREATE TABLEbook(

book_idVARCHAR(32) PRIMARY KEY,

book_nameVARCHAR(32)

);/*创建sb中间表*/

CREATE TABLEsb(

sb_studidVARCHAR(32) NOT NULL,

sb_bookidVARCHAR(32) NOT NULL);/*给中间表设置联合主键*/

ALTER TABLEsbADD CONSTRAINT sb_pk PRIMARY KEY(sb_studid,sb_bookid);/*给中间表设置外键*/

ALTER TABLEsbADD CONSTRAINT sb_fk1 FOREIGN KEY(sb_studid) REFERENCESstud(stud_id);/*给中间表设置外键*/

ALTER TABLEsbADD CONSTRAINT sb_fk2 FOREIGN KEY(sb_bookid) REFERENCESbook(book_id);/*查询所有人选择的所有书*/(SQL 92标准 联合查询)SELECT stud.sdub_name,book.book_name FROMstud,book,sbWHERE stud.stud_id=sb.sb_studid AND book.book_id=sb.sb_bookid;/*查询所有人选择的所有书*/(SQL 96标准使用join)SELECTstud.sdub_name,book.book_nameFROM stud INNER JOIN sb ON stud.stud_id=sb.sb_studidINNER JOIN book ON sb.sb_bookid=book.book_id;/*查询所有没有选择书的人*/

SELECTstud.sdub_name,book.book_nameFROM stud LEFT JOIN sb ON stud.stud_id=sb.sb_studidLEFT JOIN book ON sb.sb_bookid=book.book_idWHERE book.book_name IS NULL;/*查询没人先的书*/

SELECTstud.sdub_name,book.book_nameFROM stud RIGHT JOIN sb ON stud.stud_id=sb.sb_studidRIGHT JOIN book ON sb.sb_bookid=book.book_idWHERE stud.sdub_name IS NULL;------------------------------------------------------------------------------

表约束操作:1.主键约束

添加主键的两种方法:

(1) /*创建表时定义约束*/

CREATE TABLEcar(

idINT PRIMARY KEY,

NAMEVARCHAR(30),

NOINT);

(2) /*创建表后 再修改添加主键约束*/推荐使用第二种方法,因为可以指定主键名;CREATE TABLEperson(

idINT NOT NULL, //要加非空约束

NAMEVARCHAR(32),

ageINT);ALTER TABLEpersonADD CONSTRAINT person_pk PRIMARY KEY(id);//person_pk为自定义主键名(用于索引)2. 唯一约束CREATE TABLEb(

idINT UNIQUE,

NAMEVARCHAR(32)

);3.创建自动增长的主键

注意:自动增长的主键,在有记录删除后主键id 出现断号,而且oracle不支持;CREATE TABLEb(

idINT PRIMARY KEYAUTO_INCREMENT,

NAMEVARCHAR(32)

);4.默认约束

例: sex字段的默认值为0CREATE TABLEs2(

idINT,

sexCHAR(1) DEFAULT '0');INSERT INTO s2(id) VALUE(10);5.外键约束FOREIGN KEY

createtabl person(

idvarchar(32) primary key,

namevarchar(30),

sexchar(1)

);create tablecar(

idvarchar(32) primary key,

namevarchar(30),

price Numeric(10,2),

pidvarchar(32),CONSTRAINT car_fk foreign key(pid) referencesperson(id)

);/*查询什么人有什么车*/

SELECT person.name,car.name FROMperson,carWHERE person.id=car.pid;*关系查询:/*查询什么人有什么车 用关联关系查询*/

SELECT person.name,car.name FROMpersonINNER JOIN car ON person.id=car.pid;//inner join指两个表都必须相时存在/*没有车的人*/

SELECT person.name,car.name FROMpersonLEFT JOIN car ON person.id=car.pid //只要左表存在就列出WHERE car.name IS NULL //再条件 car.name是 NULL的/*查询xt有什么车*/

SELECT person.name,car.name FROMperson,carWHERE person.id=car.pid AND person.name='xt';/*查询有2车以上的人的ID*/

SELECT COUNT(pid),pid FROM car GROUP BY pid HAVING COUNT(pid)>=2;SELECT * FROMpersonWHERE id IN (SELECT pid FROM car GROUP BY pid HAVING COUNT(pid)>=2);-------------------------------------------------------------------------------------

if 和 case控制流程函数1. if

IF(expr1,expr2,expr3)//判断expr1如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),

则IF()的返回值为expr2;

否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。SELECT IF(1>2,2,3);

结果3SELECT IF(1<2,'yes','no');

结果'yes'

SELECT IF(STRCMP('test','test1'),'no','yes');

结果'no'

2. ifnull

IFNULL(expr1,expr2)//如果expr1 不为 NULL,则 IFNULL() 的返回值为 expr1;

否则其返回值为 expr2;

IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。SELECT IFNULL(1,0);

结果1SELECT IFNULL(NULL,10);

结果10SELECT IFNULL(1/0,'yes');

结果'yes'

3.NULLIF

NULLIF(expr1,expr2)//如果expr1 =expr2 成立,那么返回值为NULL,否则返回值为 expr1。

这和CASEWHEN expr1 = expr2 THEN NULL ELSEexpr1 END相同。SELECT NULLIF(1,1);

结果NULLSELECT NULLIF(1,2);

结果14.CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

SELECT CASE 1 WHEN 1 THEN 'one'

-> WHEN 2 THEN 'two' ELSE 'more' END;

结果'one'

SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;

结果'true'

SELECT CASE BINARY 'B'

-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;

结果NULLcreate tabless(

idint,

sexchar(1) default '0',

birthvarchar(19)

);INSERT INTO ss VALUES(10,'1','2011-09-08 09:23:27');select id,(case sex when '0' then '女' else '男' end) as 性别,birth fromss;SELECT id,(CASE sex WHEN '0' THEN '女' WHEN sex='1' THEN '男' END) AS 性别,birth FROMss;-------------------------------------------------------------------------------------------------------

存储过程:1.

DELIMITER&& //改变Mysql语句结束符 为"&&"

carete procdure p2()BEGIN

select * fromlk;END&&DELIMITER ;//创建存储过程完成后,改回 ";"//调用

CALL p2();2. 声明变量@为用户自定义变量

@@为系统变量例:@abc

select @abc;select @@character_set_database;----------------------------------------------------------------------------------------------

事物操作:1.开启一个事物

starttransaction;2. 用户的一次操作(执行SQL语句)3) 提交 commit; 或 撤销rollback;------------------------------------

隔离级别操作:

注意:隔离级别操作,影响的是在开启一个事物之内的操作;

. 什么是脏读?

读取别人未提交的数据,未保存的数据就叫脏读;

隔离级别分为 四种级别:

Transaction_read_uncommited=1(读未提交)可读到别人未提交的数据

Transaction_read_commited= 2(读已经提交)只能读到别人已经提交的数据

Transaction_repeatable_read=4(可重复读-默认)永远读取的是自己已经读取到的数据。不受别的连接的影响。

Transaction_serializable =8(串行化-最高级别) 相当于同步(当A用户在操作,那么B用户只能处理等待状态;1.查看隔离级别:select @@tx_isolation;2.设置隔离级别:(在纪色的Mysql5.5以上)//设置为可读到别人未提交的数据;set session transaction isolation level read uncommitted;//设置为只能读到别人已经提交的数据;set session transaction isolation level read committed;//设置为串行化-最高级别 相当于同步;set session transaction isolation level serializable;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值