目录mysql
# 增 insert Course values (1,'语文课') # 删 delete from Course where c_id=1 # 改 update Course set name='音乐课' where c_id=1 # 查 select * from Course
# 最简单的存储过程 create procedure test () begin select '许嵩'; end # 调用存储过程 call test(); # 删除存储过程 drop procedure test;
使用命令框登陆MySqlsql
mysql -u root - p
显示目前全部的数据库数据库
show databases;
显示建立的数据库的编码格式并发
show create database shuyunquan;
引用数据库编码
use shuyunquan
查看当前引用的数据库code
select database();
建立表ip
create table userInfo( username varchar(20), userage int )
显示当前引用的数据库的全部表内存
show tables;
显示指定数据库的全部的表资源
show tables from mysql;
显示表里面的全部列名rem
show columns from user;
向表中插入一条数据
insert user values(1,'许嵩',32,'男');
向表中添加新列
alter table user add telphone int not null first;
删除某列
alter table user drop telphone;
只查询表中的若干条记录,limit加数字(SQL Server是top)
select * from user limit 2;
建立一个无参的存储过程
create procedure getVersion() select version();
调用这个无参的存储过程,无参的加不加()均可以
call getVersion();
建立一个有参数的存储过程,这里须要讲一下,参数分为in和out两种,in是输入的参数,out是做为返回的参数,变量。下面这个存储过程就是,删除某个id的用户,返回当前用户的总个数,unsigned是非负数的意思
create procedure removeuserById(in id int unsigned,out counts int unsigned) begin delete from user where id=id; select count(*) from user into counts; end //
调用的时候
call removeuserById (1,@count); select @count;
移除存储过程
drop procedure removeuserById;
MySql的存储引擎,所谓的存储引擎就是把数据存储到内存或者文件中采用到技术和方式,有如下几种
MySql并发操做
什么是并发操做呢?例如两个用户同时访问个人表,一个删除id为1的数据,一个访问id为1的数据,这就叫作并发,这样显然是会出错的,解决办法是锁。
锁机制
锁分为两种
锁颗粒
表锁,是一种开销最小的锁策略
行锁,是一种开销最大的锁策略
Mysql插入信息的时候,必须写name,不写字段name的话插入不了数据,主键还要插数据?
INSERT MemoryDocument (`MemoryCategoryId`, `Name`, `Description`, `Url`, `ApproveStatus`, `CreateManagerId`, `CreateTime`, `UpdateManagerId`, `UpdateTime`) VALUES(1,'文档9','描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息','asd',1,1,'2019/10/15',1,'2019/10/19');
还要,若是我想插入多条数据,必须每一条数据后面加上一个分号 ???这是啥操做
INSERT MemoryDocument (`MemoryCategoryId`, `Name`, `Description`, `Url`, `ApproveStatus`, `CreateManagerId`, `CreateTime`, `UpdateManagerId`, `UpdateTime`) VALUES(1,'文档9','描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息','asd',1,1,'2019/10/15',1,'2019/10/19'); INSERT MemoryDocument (`MemoryCategoryId`, `Name`, `Description`, `Url`, `ApproveStatus`, `CreateManagerId`, `CreateTime`, `UpdateManagerId`, `UpdateTime`) VALUES(1,'文档10','描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息描述内存信息','asd',1,1,'2019/10/15',1,'2019/10/20');
不加分号的话没法执行多条insert.......
个人mysql语句是这样的
UPDATE MemoryCategory set Remark=Remark+'test';
这样是错误的,由于mysql拼接字符串使用的不是+,而是 concat ,报的错误:截断了错误的DOUBLE值
正确的写法以下
UPDATE MemoryCategory set Remark=CONCAT(Remark,'test');
这个写法我看不懂
select * from (select MemoryParameterName, MemoryParameterValue, count(MemoryParameterValue) as num from MemoryParameter where MemoryCategoryId=1 group by MemoryParameterName, MemoryParameterValue) as t where ( select count(*) from (select MemoryParameterName, MemoryParameterValue, count(MemoryParameterValue) as num from MemoryParameter where MemoryCategoryId=1 group by MemoryParameterName, MemoryParameterValue) as tt where tt.MemoryParameterName = t.MemoryParameterName and tt.num > t.num ) < 30 order by MemoryParameterName,num desc