1.数据库操作
创建数据库: create database 数据库名;
create database 数据库名 default character set 字符集;查看数据库MySQL服务器中的所有的数据库: show databases;
查看某个数据库的定义的信息: show create database 数据库名;
删除数据库 drop database 数据库名称;
切换数据库: use 数据库名;
查看正在使用的数据库: select database();
2.表结构DDL相关语句
创建表: create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束);
创建表的时候约束后面加auto_increment。主键:primary key。
删除主键: alter table 表名 drop primary key;
查看数据库中的所有表:show tables;
查看表结构: desc 表名;
删除表: drop table 表名
alter table 表名 add 列名 类型(长度) 约束;
作用:修改表添加列.
alter table 表名 modify 列名 类型(长度) 约束;
作用:修改表修改列的类型长度及约束.
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
作用:修改表修改列名.
alter table 表名 drop 列名;
作用:修改表删除列.
rename table 表名 to 新表名;
作用:修改表名
alter table 表名 character set 字符集;
作用:修改表的字符集
3.表内容操作的DML相关语句
插入表记录:
insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
insert into 表 values (值1,值2,值3..); --向表中插入所有列
更新表记录:
update 表名 set 字段名=值,字段名=值;
update 表名 set 字段名=值,字段名=值 where 条件;
删除表记录:
delete from 表名 [where 条件];
truncate table 表名;
面试题:
删除表中所有记录使用delete from 表名; 还是用truncate table 表名????
删除方式:delete 一条一条删除,不清空auto_increment记录数。
truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
4.查询操作的DQL相关语句
查询指定字段信息 select 字段1,字段2,...from 表名;
查询表中所有字段 select * from 表名;
distinct用于去除重复记录 select distinct 字段 from 表名;
5.关联查询
CROSS JOIN 是让两个表交叉连接,就是让第一个表的数据跟另外一个表的数据都对应一遍。
inner join on 内连接,需要在on后面放条件。
natural join 自然连接,会将两个表的主键自动关联。
left join 左外连接 A表左外连接B表,A表会按照顺序全部显示出来
right join 右外连接 B表左外连接A表,B表会按照顺序全部显示出来
full join 全外连接 没有条件,就交叉连接,
1.交叉连接
select * from emp1 cross join dept1;
2.内连接
select * from emp1 inner join dept1 on emp1.deptid=dept1.deptid;
3.自然连接
select * from emp1 natural join dept1;
4.左外连接
select * from emp left join dept on emp.deptid=dept.deptid;
5.右外连接
select * from emp right join dept on emp.deptid=dept.deptid;
6.全外连接
select * from emp1 full join dept1;
7.自连接
select * from dept1 d1,dept1 d2;
select * from dept1 d1,dept1 d2 where d1.deptaddr=d2.deptaddr and d1.deptid<>d2.deptid;
6.函数
常用函数:
limit函数:select * from student limit a,b;的意思是,从student表中数据,第a+1行开始,输出b行数据。