一、DDL(数据定义语言)
1、查看所有数据库show databases;
2、选择数据库use 数据库名;
3、创建数据库create database [if not exists(添加这句后如果数据库存在也能正确执行sql语句,但是并不会有任何效果,如果不加且数据库已经存在就会报错)] 数据库名 [charset=utf8(指定数据库的编码方式,默认是utf8)];
中括号中的是可选的,
4、删除数据库drop database [if exists(如果存在该数据库,就删除,如果不存在,就不进行操作,但sql语句不报错误)] 数据库名;
5、修改数据库编码alter database 数据库名 character set 编码方式;
6、创建表
create table [if not exists] 表名(
列名 列类型,
列名 列类型,
列名 列类型
);
7、查看当前数据库中所有表的名称show tables;
8、查看指定表的创建语句show create table 表名;
9、查看表结构desc 表名;
10、删除表drop table 表名;
11、修改表之添加列
alter table 表名 add (
列名 列类型,
列名 列类型
);
12、修改之修改列类型(如果没修改的列一存在数据,那么修改后可能会影响前数据)alter table 表名 modify 列名 列类型;
13、修改之修改列名alter table 表名 change 原列名 新列名 列类型;
14、修改之删除列alter table 表名 drop 列名;
15、修改表名字alter table 原表名 rename to 新表名;
二、DML(数据操作语言)
1、插入数据insert into 表名 (列名1,列名2,....) values (列值,列值2,....);
列值的顺序是按照列名的顺序,如果给出列名,则该列的值为null
,也可以省略列名直接给列值,这样就必须按照顺序给出全部的数据。
2、修改数据update 表名 set 列名=列值 [where 约束条件]
;,如果没有给约束条件就会把所有数据修改。
3、删除数据delete from 表名 [where 约束条件];
如果没有给约束条件就会把所有数据删除。
三、DCL(数据控制语言)
1、创建用户create user 用户名@ip地址 identified by 密码;
,用户只能在指定的ip地址上登录。create user 用户名@'%' identified by 密码;
用户可以在任意ip上登录。
2、给用户授权grant 权限1,....,权限n on 数据库.* to 用户名@ip地址;
3、撤销权限revoke 权限1,....,权限n on 数据库.* from 用户名@ip地址;
4、查看权限show grant for 用户名@ip地址;
5、删除用户drop user 用户名@ip地址;
四、DQL(数据查询语言)
1、查询所有列select * from 表名 [约束条件];
2、查询指定列select 列名1,...,列名n from 表名 [约束条件];
3、完全重复的记录只出现一次select disinct [*]或[列名1,...,列名n] from 表名;
4、列运算
- 数字类型的列可以做加、减、乘、除运算
select 列名*1.5 from 表名;
- 字符串类型可以做连接运算
select concat('字符串',列名) from 表名;
- 转换null值,有些数据可能会和null运算,这样的结果会是null,而我们希望将null的值当做0进行运算,可以
select 列名+ifnull(列名,替换值) from 表名;
- 给列起别名
select 列名 as 新名字 from 表名;
五、控制条件
1、条件控制
where 列名 运算符 条件 [and 列名 运算符 条件];
例子:
where age > 5 and age <10;
这个约束是年龄大于5且小于10
where 列名 between 条件 and 条件
例子:
where age between 5 and 10;
这个约束是年龄大于等于5且小于等于10(包含边界)
where 列名 in (条件,条件);
例子:
where age in (5,10);
这个约束是年龄为5岁或者10岁
2、模糊查询
where 列名 like 条件
例子:
where name like '张__';
匹配名字为张某某的人,_
可以匹配任意一个字符,%
可以匹配0~n字符
3、排序
select * from 表名 order by 排序列名;
将数据按照排序列名的数据排序。默认是升序
,如果想降序可以在排序列名后加desc
。
六、聚合函数
1、count
:
select count(列名) from 表名;
查询表中该列的记录数量,注意不包括数据为null
的记录。
2、max min
select max | min(列名) from 表名;
查询该列中最大(或最小)的数据
3、sum
select sum(列名) from 表名;
查询该列的所有数据的和,自动把null
当做0
4、avg
select avg(列名) from 表名;
查询该列的平均数据。
七、分组查询
select 分组列,聚合函数 from 表名 group by 分组列;
将数据按照分组列分组,将聚合函数的结果和分组列输出。
分组后的约束条件用的关键字是having
八、limit子句(只能用于mysql)
select * from 表名 limit 起始值 行数;
起始值从第零行开始,行数是查询的记录的数量