一、SQL语句分类
-
数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
-
数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
-
数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户
-
数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等
二、数据库操作
-
创建数据库(create)
-
直接创建:
- create database 数据库名;
-
创建特定编码的数据库:
- create database 数据库名 character set 字符集;
-
-
查看数据库
-
查看数据库中:
- show databases;
-
查看数据库定义信息:
- show create database 数据库名;
-
-
使用数据库
-
查看正在使用的数据库:
- select database();
-
其他的数据库操作命令:
- use 数据库名;
-
三、表的操作
-
创建表:
-
create table 表名(字段名 类型(长度) [约束], 字段名 类型(长度) [约束],
...);
-
-
查看表:
-
查看数据库中的所有表:
- show tables;
-
查看表结构:
- desc 表名;
-
-
删除表:
- drop table 表名;
-
修改表结构格式:
-
修改表添加列:
- alter table 表名 add 列名 类型(长度) [约束];
-
修改表修改列的类型长度及约束:
- alter table 表名 modify 列名 类型(长度) 约束;
-
修改表修改列名:
- alter table 表名 change 旧列名 新列名 类型(长度) 约束;
-
修改表删除列:
- alter table 表名 drop 列名;
-
修改表名:
- rename table 表名 to 新表名;
-
修改表的字符集:
- alter table 表名 character set 字符集(了解);
-
-
插入表记录:
-
向表中插入某些字段:
-
insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);
-
insert into 表 values (值1,值2,值3..);
-
-
-
注意:
-
值与字段必须对应,个数相同,类型相同
-
值的数据大小必须在字段的长度范围内
-
除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
-
如果要插入空值,可以不写字段,或者插入 null。
-
-
修改表
-
更新所有记录的指定字段
- update 表名 set 字段名=值,字段名=值,...;
-
注意:
-
列名的类型与修改的值要一致.
-
修改值得时候不能超过最大长度.
-
除了数值类型外,其它的字段类型的值必须使用引号引起.
-
-
-
删除记录
-
单单删除记录
- delete from 表名 [where 条件];
-
初始化表
- truncate table 表名;
-
四、约束
-
主键约束
-
PRIMARY KEY
-
主键必须包含唯一的值。
-
主键列不能包含 NULL 值。
-
每个表都应该有一个主键,并且每个表只能有一个主键。
-
-
添加主键约束
-
创建表时,在字段描述处,声明指定字段为主键
- crtea table 表名 (字段名 字段类型 primary key,字段名 字段类型 ....);
-
创建表时,在constraint约束区域,声明指定字段为主键
- crtea table 表名 (字段名 字段类型,字段名 字段类型 .... ,constraint 主键名 primary key(字段1,字段2...));
-
创建表之后,通过修改表结构,声明指定字段为主键
- alter table 表名 add primary key(字段1,字段2...);
-
-
删除主键约束
- alter table 表名 drop primary key;
-
-
自动增长列
-
auto_increment
-
一般是主键
-
create table 表名 (字段1 字段类型 primary key auto_increment,字段2 字段类型 .....);
-
-
非空约束
-
not null
-
create table 表名 (字段1 字段类型 nut null,字段2 字段类型 .....);
-
-
唯一约束
-
unique
-
方式一
- create table 表名 (字段1 字段类型 unique,字段2 字段类型 .....);
-
方式二
- create table 表名 (字段1 字段类型 ,字段2 字段类型 ..... , constranit 约束名 unique(字段));
-
方式三
- alter table 表名 add constraint 约束名 unique(字段);
-
删除唯一约束
- alter table 表名 drop index 约束名;
-
-
外键约束
-
从表外键的值是对主表主键的引用。
-
从表外键类型,必须与主表主键类型一致。
-
声明外键约束
-
alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
-
[外键名称] 用于删除外键约束的,一般建议“_fk”结尾
-
-
使用外键目的:
- 保证数据完整性
-
五、表数据的查询
-
简单查询
-
select [distinct] * | 列名[as 别名],列名 from 表名 [as 别名] where 条件;
-
distinct 去重
-
as 别名 也可以省略 as
-
查询字段可以当做参数进行运算(字段+1...)
-
-
-
条件查询
-
比较运算符
-
大于、小于、大于(小于)等于、不等于
- 符号:> < <= >= = <> !=
-
-
- 显示在某一区间的值(含头含尾)
- BETWEEN ...AND...
- 显示在in列表中的值
- IN(值1,值2,...)
- 模糊查询,Like语句中,%代表零个或多个任意字符,_代表一个字符
- LIKE '....'
- 判断是否为空
- IS NULL
-
逻辑运算符
-
多个条件同时成立
- and
-
多个条件任一成立
- or
-
不成立
- not
-
-
排序查询
-
SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
-
ASC 升序 (默认) |
-
DESC 降序
-
聚合查询
-
count:统计指定列不为NULL的记录行数;
-
sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
-
max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
-
min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
-
avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
-
SELECT 聚合函数名(字段名) FROM 表名;
-
-
分组查询
-
SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;
-
having与where的区别:
-
having是在分组后对数据进行过滤
-
where是在分组前对数据进行过滤
-
having后面可以使用分组函数(统计函数)
-
where后面不可以使用分组函数
-
-
-
多表查询
-
交叉连接查询(基本不会使用-得到的是两个表的乘积)
- select * from A,B;
-
内连接查询(使用的关键字 inner join , inner可以省略)
-
隐式内连接:select * from A,B where 条件;
-
显示内连接:select * from A inner join B on 条件;
-
-
左外连接:
- left outer join
-
select * from A left outer join B on 条件;
- 右外连接:
- right outer join
select * from A right outer join B on 条件;
网友评论