Mysql常用简单语句
基本操作
//查看数据库
show databases;
//创建数据库
create database A;
//使用数据库
use A;
//删除数据库
drop database A;
遇到问题:使用administrator执行cmd,创建数据库时出现ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'a'提示,因为需要使用mysql的默认用户名root登陆
//-u:数据库用户名,localhost表示本地
//-h:服务器名,root是默认用户名
//-p:密码
mysql -h localhost -u root -p
表的操作
//查看数据库中所有表
show tables
//创建表
create table student
(
列 数据类型,
·······
列 数据类型
);
//删除表
drop table 表名
//显示表的结构
describe 表名
//查询表的具体结构
show create table 表名;
基本数据类型:
数值类型
-
整型
tinyint:1字节,范围(-128~127)
smallint:2字节,范围(-32768-32767)
mediumint(m):3字节 范围(-8388608~8388607)
int(m) :4字节 范围(-2147483648~2147483647)
bigint(m) :8字节 范围(+-9.22*10的18次方
取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 -
浮点型
float(m,d):单精度浮点型,8位精度(4字节),m总个数,d小数位
double(m,d):双精度浮点型,16位精度(8字节),m总个数,d小数位 -
定点数
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。
字符串类型
char(n):固定长度,最多255个字符
varchar(n):固定长度,最多65535个字符
char和varchar差异
- char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
- char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),
所以varchar(4),存入3个字符将占用4个字节。 - char类型的字符串检索速度要比varchar类型的快。
时间日期类型
date:日期 '2008-12-2'
time:时间 '12:25:36'
datetime :日期时间 '2008-12-2 22:06:44'
timestamp:自动存储记录修改时间
//插入数据
insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);
//更新数据
update 表名 set 字段1=值1 (where 条件表达式);
//查询信息
select * from 表名 (where 条件表达式) (group by 列名 ASC/DESC) (order by 列名 ASC/DESC)(having 分组条件)(limit 限制条数);
//删除信息
delete from 表名 (where 条件表达式);
//删除全部数据
truncate 表名;
truncate与delete删除表信息区别:
1.truncate只能删除全部信息,delect可以添加条件语句
2.truncate删除时没有记录,delete则会有日志记录
3.使用truncate删除数据后,再添加数据时,自动增加字段的默认值会从1开始,delete则N+1
//修改表名
rename table A to A1;
alter table A rename A1;
//添加列
alter table student add (column) 列名 数据类型;
//修改列名称及定义
alter table student change (column) 列名1 列名2 数据类型;
//删除列
alter table student drop (column) 列名;
//别名使用,as
select 列名1 as 列名2 from 表名;
子查询
select * from 表名 where 列名=
[all|some|any|not]
select 列名 from 表名 where 条件表达式;
表的连接
内连接:(inner)join A on B,相当于等值关系,取得是两表的交集
左连接:left join A on B ,以左边的表为基础,因此存在右边表对应内容为NULL的情况
右连接:right join A on B,以右边的表为基础,因此存在左边表对应内容为NULL的情况
左连接,右连接使用场景:
如,部门表,员工表(非强绑定关系)
如果使用左连接,则可能会存在部门中没有员工的情况
如果使用右连接,则可能会存在员工不属于任一部门的情况
having与where的区别
where针对表中的列来查询数据(只能是表中字段),目的:过滤特定行
having针对查询结果中的列来筛选数据(可以不是表中的字段),目的:过滤特定组
group by
根据指定数据列的成员对查询结果进行分组统计
在group by子句前使用where子句
在gruop by子句后使用having
聚合函数
sum:求和
max:最大值
min:最小值
avg:平均数
count:统计记录数