mySql学习(一)

一.开始数据库服务
 本地产看本地数据库服务状态 service.msc
1.windows 开启数据库
net start mysql
2.关闭数据库
net stop mysql


二.客户端连接

mysql [-h 127.0.0.1] [-p 3306] -u root -p

三.DDL 数据库操作 database define language

1.查询数据库
 show databases;

 使用对应数据库
 use 数据库名字; 

 查看当前的数据库名字
 select database();

2.查询数据库的表
show tables;

3.创建数据库
 create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];

4.删除数据库
drop database [if exists] 数据库名;

5.查看表结构
create table 表名 字段1 字段类型[COMMENT 字段注释],字段2 字段类型[COMMENT 字段注释])[COMMENT 表注释]
create table classN (id bigint not null auto_increment KEY comment '班级id',name varchar(255)) comment '班级b信息表';
desc 表名;
数值类型 :
tinyint   1
smallint  2
mediumint 3
int       4
bigint    8
float     4
double    8
decimal    依赖M(总位数) 和 D(小数位)
unsigned 表示无符号

日期类型:
date 2020-02-03;
time 23:33:33;
datetime 2020-02-03 23:33:33;

案例 create table tab_user(id bigint key auto_increment,age tinyint unsigned);
 create table emp(id int unsigned comment '编号',workno varchar(10) comment '工号',name varchar(20) comment '姓名',gender char(1) comment '性别',age tinyint unsigned comment '年龄' ,idcard char(18) comment '身份证',entrydate date comment '入职时间' ) comment '员工表';d

6.查询表创建的语句
show create table 表名;

7.修改表结构
新增列
alter table 表名 add 字段名 类型(长度)[comment 注释][约束];
修改名字
alter table 表名 change 旧字段 新字段 类型(长度)[comment 注释][约束];
删除列
alter table 表名 drop 字段名;

8.修改表名
alter table 表名 rename to 新表名;
9.删除表
drop table [if exists] 表名;
删除并重建
truncate table 表名;


四、DML data manioulation language 用来对表进行增删改。
插入数据
insert into 表名(字段1,字段2....)values(值1,值2....)[(),()];
修改数据
update 表名 set 字段1=值1,字段2=值2 [where 条件];
删除数据
delete from 表名[where 条件]
五、DQL data query Language 查询语言;

select 字段1 as 新名称,字段2 from 表名
//去除重复项
select distinct 字段名 新名称 from 表名;

1 条件查询

 select 字段列表
from 表名列表
where 条件
GROUP BY 分组列表字段
having 分组后的条件
order by 排序字段列表
limit 分页参数

null 不参加聚合函数运算

六、DCl data controller language
创建用户
create user 'name'@'主机' identified by 密码
create user 'li'@'localhost' identified by '123456';
修改密码
alter user 'li'@'%' identified with mysql_native_password by '1234';

删除用户
drop user '用户名'@'主机名';

修改用户权限
1.查看权限
show grants for '用户名'@'主机名';
2修改权限
grant 权限列表 on 数据库名.表名  to '用户名'@'主机名';
3.撤销权限
remove 权限列表 on 数据库名.表名  from '用户名'@'主机名';
授权所有库,所有表的all权限
grant all on *.* to 'li'@'%';

七、sql函数

1.sql 内置函数
 select substring('123',1,2)  结果是 12,数据从1开始
补充数据的位数为5位
update emp workno=lpad(workno,5,'0');

2.数值函数
CELL(0.1)= 1;
floor(2.9)=2;
mod(x,y) = x/y  
rand() 0-1的随机数;
ROUND(X,Y) X四舍五入,保留y位小数。

生成一个6位验证码
lpad(round(rand()*1000000,0),6,'0')

3.日期函数
curdate() 当前日期
curtime() 当前时间
now() 当前的日期和时间
year(date)、month(date)、day(date) 当前的年月。日
date_add(date,INTERVAL expr type)
DATEDIFF(date1,date2)  返回差值
s
4.流程函数
if(value,f,t)
ifnull(f,t)
case when [val1] then [res]  else [default] end;  //val1 为true 返回 res
case [expr] when [val1] then [res]  else [default] end; //expr 等于val1,返回res


八、DQL data quary language

左连接,左边全部,右边部分
select e.* from emp e left outer join user u on e.id=u.id;

select e.* from emp e right outer join user u on e.id=u.id;


九、数据库事务问题和隔离级别

问题 
脏读,读到其他事务未提交的数据
不可以重复读,同一事务中,两次读到数据不同。
幻读,一个事务,读取时没有数据,写入时有了。

read uncommitted  不管隔离 有问题 脏读/不可重复读,幻读、
read commited 没有脏读问题
repeatable read  没有脏读/不可重复读问题。
serializable   没有三个问题。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值