DDL语句
连接到MySQL服务器
mysql -uroot -p
创建数据库 create database dbname;
create database test;
查看系统中存在的数据库
show databases;
选择数据库test
use test
查看test1数据库中创建的所有数据表
show tables;
删除数据库
drop database test;
创建表
create table tablename(
column_name_1 column_type_1 constrains,
column_name_2 column_type_2 constrains,
…
column_name_n column_type_n constrains,);
constrains是约束条件。
create table user(name varchar(10),id int(10),sal decimal(10,2));
查看表 desc tablename;
desc user;
查看创建表的SQL语句
show create table user \G;
删除表
drop table user;
修改表中字段ename的类型
alter table tablename modify ename [typename]
alter table user modify name varchar(20);
增加表字段
alter table tablename add column columnname type(3);
alter table user add column age int(10);
删除表字段
alter table emp drop column column_name;
alter table user drop column age;
将age字段改名age1
alter table emp change age age1 int(1);
将新增字段birth类型date 加在name后
alter table user add birth date after name;
修改字段age,放到最前面
alter table user modify age int(4) first;
更改表名emp1
alter table emp rename emp1;
DML语句
向表user中插入以下记录:name:chen,birth:2021-01-01,id:007,sal:750,age:18
insert into user(name,birth,id,sal,age)values('chen','2021-01-01',007,750,18);
也可以不用指定字段名称,但是values后面的顺序应该跟字段排列顺序一致
insert into user values('chen','2021-01-01','750',18);
查看表 user内容
select * from user;
一次插入多条记录
insert into user values('duan','2020-01-01',008,1000,17),('huang','2019-01-01',009,2000,20);
将表user中huang的sal改为1500
update user set sal=1500 where name='huang';
删除记录
delete from user where name='duan';
不加where条件会把表的所有记录都删除。
查询某字段
select name from user;
查询多个字段
select name,sal from user;
将符合条件的记录列出来
select * from user where sal=750;
排序
select * from tablename order by field1 DESC/ASC, field2 DESC/ASC,…
DESC:降序 ASC:升序(如果不写该关键字默认是升序)
如果第一个排序字段的值一样,则按第二个排序字段,以此类推。
select * from user order by sal DESC;
聚合
select [field1,field2,…,fieldn] fun_name
from tablename
[where where_contition]
[group by field1,field2,…,fieldn
[with rollup]]
[having where_contition];
fun_name:表示要进行的分类操作,常用的有sum(求和),count(记录数),max,min
having是对聚合后的结果进行条件的过滤,where是在聚合前就对记录进行过滤。
select count(1) from user;
select sum(sal),max(sal),min(sal) from user;
表连接
内连接
select name,deptname from user,dept where user.deptnum=dept.deptnum;
将两个表的数据按照一定的查询条件查询出来,将结果合并到一起显示出来
select deptnum from user
union all
select deptnum from dept;
union all 是把结果集直接合并在一起,而union是将union all后的结果进行一次过滤,去除重复记录后的结果。
select deptnum from user
union
select deptnum from dept;
DCL语句
DCL语句主要是DBA用来管理系统中的对象权限时使用,一般的开发人员很少使用。
帮助的使用
?contents
进一步查看functions
数值类型
对于整数类型,MySQL支持在类型名称后的小括号内指定显示宽度,如int(5)
对于小数的表示,MySQL分为:浮点数(float,double)和定点数(decimal).定点数在内部以字符串形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。
浮点数和定点数都可以用类型名称后加(M,D)来表示,意思是一共显示M位数字,(整数位+小数位),其中D位位小数点后面。M和D又被称为精度和标度。
日期时间类型
DATE:年月日
DATETIME:年月日时分秒
TIME:时分秒
insert into t values(now(),now(),now());
TIMESTAMP的插入和查询都受当地时区的影响,DATETIME只能反映出插入时时区。
采取不同格式将日期存到DATETIME中
insert into t2 values('2021-1-1 12:10:10');
insert into t2 values('2021/1/1 12+10+10');
insert into t2 values('20210903121010');
insert into t2 values(20210708121010);