创建数据库 create table 数据库名 character set utf8;
<wiz_code_mirror>
drop table 数据库名
修改数据库编码集:
<wiz_code_mirror>
alter database 数据库名 character set 字符集(gbk,utf8);
切换数据库:
<wiz_code_mirror>
user 数据库名;
查看当前数据库名称:
<wiz_code_mirror>
select database();
创建表:
<wiz_code_mirror>
create table 表名(name int,age int);
查看该数据库的所有表:
<wiz_code_mirror>
show tables;
查看建表语句以及字符集:
<wiz_code_mirror>
show create table 表名;
查看列的信息:desc 表名;
差入数据:插入类型是字符的话要添加'';
<wiz_code_mirror>
insert into 表名 values('','','');
insert into 表名()values('','','');
数据表结构的修改:
<wiz_code_mirror>
alter table 表名 增/删/改 列名 类型(长度) 约束;
增添现有列约束:
<wiz_code_mirror>
alter table 表名 add 列名 类型(长度) 约束;
修改现有列约束:
<wiz_code_mirror>
alter table 表名 modify 列名 类型(长度) 约束;
修改现有列名称:
<wiz_code_mirror>
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
删除现有列:
<wiz_code_mirror>
alter table 表名 drop 列名;
修改表名:
<wiz_code_mirror>
rename table 旧表名 to 新表名;
修改表的字符集:
<wiz_code_mirror>
alter table 表名 character set 编码集;
删除表:
<wiz_code_mirror>
drop table 表名;
差入数据:插入类型是字符的话要添加'';
<wiz_code_mirror>
insert into 表名 values('','','');
insert into 表名()values('','',''),('','','');
修改标记录:
<wiz_code_mirror>
update 表名 set 列名=值,列名=值[where 条件语句];
删除表中记录:
<wiz_code_mirror>
delete from 表名 [where 条件语句];
truncate table 表名; (truncate语句会比delete的性能好)
删除过程不同
truncate 删除数据,过程先将整个表删除,再重新创建一张空表
delete 删除数据,逐行删除记录
truncate 效率要好于 delete
语言定义不同
truncate 属于DDL (数据找不回来),
delete 属于DML(有可能找回来)
事务:
回滚:rollback;
提交:comment;
排序:
<wiz_code_mirror>
select * from 表名 where 条件语句 order by 列名 desc/asc;
分组:select * from 表名 group by 列名;
<wiz_code_mirror>
select * from 表名 where group by having order by ASC/DESC ;
添加外键约束:
<wiz_code_mirror>
alter table 从表名称 add foreign key(外键列的名称) references 主表名称(主键);
总结:
库的操作
创建库:create database 库名 character set 编码表;
删除库:drop database 库名;
查询库:show databases;
查看库的编码表:show create database 库名;
更改库:use 库名;
查看当前正在使用的库:select database();
修改库的编码表:alter database 库名 character set 编码表;
表本身的操作
创建表:create table 表名( 列名 列的类型(长度) 类的约束 ,列名 列的类型(长度) 类的约束...... );
删除表:drop table 表名;
查询表:show tables;
查看表的结构:desc 表名;
查看表的编码表:show create table 表名;
修改表:alter table 表名 增/删/改 列名 列的类型(长度) 约束;
add/drop/change/modify
修改表名:rename table 旧表名 to 新表名;
记录的操作:
增:insert into 表名(列名) values(值);
删:delete from 表名 where 条件; truncate
改:update 表名 set 列名=值 ,列名=值 where 条件 ;
查:select 列名 as 别名 ,列名 as 别名… from 表名 where 条件;
查询排重:select distinct 列名 from 表名 where 条件;
聚合函数:
count 统计个数、sum求和、avg 平均值、max、min
在使用这几个函数进行数据的统计分析时,有时需要对数据表中的列进行数据的分组处理。group by
分组 group by :
排序:order by 列名 asc | desc;
--创建存储过程
create procedure getStuById(IN stuId int(11),OUT stuName VARCHER(255),out stuAge() int(11))
DELIMITER //
comment 'query students by their id '
SQL SECURITY DEFINER
BEGIN
SELECT NAME,AGE,INTO STUName,stuAge from t_student where id=stiId;
end //
delimiter;
--存储过程
SHOW PROCEDURE STATUS LIKE 'g%'
--调用存储过程
call study.getStuById(1,@name,@age);
select @name AS stuName,@age AS stuAge;
call study.getStuById(2,@name,@age)
select @name AS stuName,@age AS stuAge;
--创建方法
create function queryResuorceParentInfo(queryById varcher(32))
returns varcher(21845)
begin
declare sTemp varcher();
内连接:
select * from a,b where a.id=b.id;
select * from a inner join b on a.id=b.id;
左外连接(outer可以省略):
select * from a left outer join b on a.id=b.id;
右外链接(outer可以省略):
select *from a right outer join b on a.id=b.id;
全外连接(mysql不支持全外链接):
select * from a full outer join b on a.id=b.id;
mysql可以用union达到全外连接(union可以去掉重复的内容):
select * from a left outer join b on a.id=b.id
union
select * from a right outer join b on a.id=b.id;