MySQL的SQL语句
SQL语句分类
DDL
(Data Definition Language): 定义数据库对象,也就是创建、修改、删除:数据库,表,列。关键字: create、alter、drop。
DML
(Data Manipulation Language):更新数据库中表的记录。关键字:update、delete、insert。
DCL
(Data Control Language):对用户的权限和安全级别进行控制。
DQL
(Data Query Language):查询表记录。关键字: select、from、where。
SQL通用语法:
-
SQL语句可以单行或多行书写,结尾用分号。
-
可以使用空格和缩进增强语句的可读性。
-
MySQL 数据库的 SQL语句 不区分大小写,关键字建议使用大写。
-
注释可以使用 /**/
DDL数据库操作:
1.创建数据库
格式:
create database 数据库名;
create database 数据库名 character set 字符集;
2.查看数据库
查看数据库MySQL服务器中所有的数据库
show database;
查看数据库MySQL服务器中某个数据库
show create database 数据库名;
3.删除数据库
drop database 数据库名称;
4.使用数据库
查看正在使用的数据库
select database();
切换数据库
use 数据库名;
DDL表操作:
1.1创建表
create table 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
...
);
类型:
varchar(n) 字符串
int 整形
double 浮点
date 时间
timestamp 时间戳
约束:
primary key 主键,被主键修饰字段中的数据,不能重复、不能为null。
1.2查看表
查看数据库中的所有表:
格式:show tables;
查看表结构
格式:desc 表名;
例如:desc sort;
1.3.删除表
格式:drop table 表名;
1.4 修改表结构格式
-
alter table 表名 add 列名 类型(长度) [约束];
作用:修改表添加列.
例如:
为category表添加一个新的字段desc为分类描述 varchar(20) ALTER TABLE category ADD `desc` VARCHAR(20);
-
alter table 表名 modify 列名 类型(长度) [约束];
作用:修改表修改列的类型长度及约束.
例如:
为category表的描述字段desc进行修改,类型varchar(50) 添加约束 not null ALTER TABLE category MODIFY `desc` VARCHAR(50) NOT NULL;
-
alter table 表名 change 旧列名 新列名 类型(长度) [约束];
作用:修改表修改列名.
例如:
为category表的分类名称字段desc进行更换更换为 snamesname varchar(30) ALTER TABLE category change desc snamesname VARCHAR(30);
-
alter table 表名 drop 列名**;**
作用:修改表删除列.
例如:
ALTER TABLE category DROP description;
-
rename table 表名 to 新表名**;**
作用:修改表名
例如:
rename TABLE category TO category2;
-
alter table 表名 character set 字符集**;**
作用:修改表的字符集
例如:
alter table category character set gbk;
DML 数据操作语言
插入表记录:insert
-
语法
-- 向表中插入某些字段 insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..); --向表中插入所有字段,字段的顺序为创建表时的顺序 insert into 表 values (值1,值2,值3..);
-
注意
-
值与字段必须对应,个数相同,类型相同
-
除了数值类型外,其他的字段类型的值必须使用引号引起(建议单引号)
-
值的数据大小必须在字段的长度范围内
-
如果要插入空值,可以不写字段,或者插入 null.
例如:INSERT INTO category(cid,cname) VALUES('c001','电器'); INSERT INTO category(cid,cname) VALUES('c002','服饰'); INSERT INTO category(cid,cname) VALUES('c003','化妆品'); INSERT INTO category(cid,cname) VALUES('c004','书籍'); INSERT INTO category(cid) VALUES('c002'); INSERT INTO category(cname) VALUES('耗材');
更新表记录:update
-
-
语法
--更新所有记录的指定字段 update 表名 set 字段名=值,字段名=值,...; --更新符号条件记录的指定字段 update 表名 set 字段名=值,字段名=值,... where 条件;
-
注意
- 列名的类型与修改的值要一致
- 修改时不能超过最大长度
- 除了数值类型以外,其他的字段类型的值必须使用引号引起
删除记录:delete
-
语法
-
删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
删除方式:delete 一条一条删除,不清空auto_increment记录数。
truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。
DQL数据查询语言
-
语法:
*select [distinct] |列名,列名 from 表 where 条件
条件查询:
比较运算符 > < <= >= = <> != 大于,小于,小于(大于)等于,不等于 between …and… 某一区间的值,(含头含尾) like ‘…’ 模糊查询,**%代表零个或多个任意字符,_**代表一个字符,例如:first_name like ‘_a%’; is null 是否为空 逻辑运算符 and 多个条件同时成立 or 多个条件任一成立 not 不成立,例: where not(salary>100)
查询语句重点语法
select [distinct]
*| 列名,列名
from 表
where 条件
distinct: 去重
from: 从 …
where: 条件连接符
order by :排序
ASC: 升序
DESC: 降序
-
count:指定列不为null的记录行数
-
sum: 指定列的数值和
-
max: 指定列的最大值
-
min: 指定列的最小值
-
avg: 指定列的平均值
group by 列名 以 XXX列分组
SELECT 字段1,字段2... FROM 表明 LIMIT M,N M: 整数,表示从第几条索引开始,计算方式 (当前页-1)*每页显示条数 N: 整数,表示查询多少条数据 SELECT 字段1,字段2... FROM 表明 LIMIT 0,5 SELECT 字段1,字段2... FROM 表明 LIMIT 5,5