数据定义语言DDL:
定义数据库对象:database、table、column
操作结构:create、alter、drop
数据操作语言DML:对表中记录操作
操作数据:insert、delete、update(增删改)
数据查询语言DQL:查询表中记录
select、from、where
数据控制语言DCL:定义访问权限和安全级别、创建用户
Redis中,关键字grant
create database 库名
create database 库名 character set 编码
UTF-8对中文采用3个字节,对英文采用1个字节,GBK对中英文都采用2个字节。
主要处理中文用GBK,主要处理英文用UTF-8
show databases; 查看所有数据库
show create datebase; 查看某个数据库的定义
drop database 库名;
use 库名; 切换数据库
select database(); 查看正在使用的数据库
create table 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
字段名 类型(长度) [约束]
);
show tables; 查看数据库中所有表名
desc 表名; 查看表的结构
drop table 表名;
rename table 表名 to 新表名;
alter table 表名 add 字段名 类型(长度) [约束];
alter table 表名 drop 列名;
alter table 表名 modify 要修改的字段名 类型(长度) [约束];
alter table 表名 change 旧列名 新列名 类型(长度) [约束];
alter table 表名 character set 编码;
show create table 表名;
insert into 表名(列名1,列名2,列名3……) values(值1,值2,值3……)
insert into 表名 values(值1,值2,值3……)
插入数据中文乱码问题解决办法
set names gbk;
update 表名 set 字段名=值, 字段名=值, 字段名=值……
update 表名 set 字段名=值, 字段名=值, 字段名=值…… where 条件
delete from 表名 where 条件
delete from 表名;
delete与truncate的区别?
delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回(rollback)。(uid不会重置)
truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。(uid会重置)truncate table 表名 where 条件
语法: select [distinct] *| 列名,列名 from 表名 [where条件]
查询所有商品:select * from product;
查询商品名和商品价格:select pname,price from product;
查询所有商品信息使用表别名(as可省略):select * from product as p;
查询商品名,使用列别名(as可省略): select pname as p from product
去掉重复值(按照价格):select distinct(price) from product;
将所有的商品的价格+10进行显示:select pname,price+10 from product;
查询商品名称为"aaa"的商品信息:select * from product where pname=‘aaa‘;
查询商品名称含有"a"字的商品信息:select * from product where pname like ‘%a%‘;
查询价格>60元的所有商品信息:select * from product where price>60;
查询商品id在(3,6,9)范围内的所有商品信息:select * from product where pid in??,6,9>;
查询id为2或者6的商品信息:select * from product where pid=2 or pid=6
查询商品名称含有"a"字并且id为6的商品信息:select * from product where pname like ‘%a%‘ and pid=6;
查询所有的商品,按价格进行排序(升序、降序):select * from product order by price asc/desc
查询名称有"士"的商品信息并且按照价格降序排序:select * from product where pname like ‘%士%‘ order by price desc
获得所有商品的价格的总和:select sum(price) from product;
获得所有商品的平均价格:select avg(price) from product;
获得所有商品的个数:select count(*) from product;
根据cid字段分组,分组后统计商品的个数:select cid, count(*) from product group by cid
根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元:select cid,avg(price) from product group by cid having avg(price) > 20000;分组后带条件只能having
一共8条数据,分成每页三条,查第3页数据
select * from product limit 6,3 (6是起始位置,根据第三页3-1,乘每页三条3 =6)(3是每页几条)
alter table 从表名 add constraint 外键名以_fk结尾 foreign key (从表外键字段名) references
主表 (主表主键字段名);
alter table product add constraint product_fk foreign key (category_id) references
category (cid);
alter table 从表名 drop foreign key 外键名
ALTER TABLE product DROP FOREIGN KEY product_fk;
特殊情况:添加外键时忘记添加外键名
解决办法:SHOW CREATE TABLE 从表名; 查看外键名
在多的一方(从表)创建一个字段,作为外键指向一的一方(主表)的主键
一个分类对应多个商品:alter table product add constraint cno_fk foreign key(cno) references category(cid)
两张表(主表)的多对多,需要创建第三张表(从表),中间表至少有两个字段,两个字段分别作为外键指向两个表的主键
学生选课:
alter table stu_course constraint sid_fk foreign key(sid) references stu(sid);
alter table stu_course constraint cid_fk foreign key(cid) references course(cid);
唯一外键对应
主键对应
select * from A,B;
两个表的交集
隐式内连接: select * from A,B where 条件;
显示内连接: select * from A inner join B on 条件;
左外连接: 左表全部及两个表的交集
select * from A left outer join B on 条件;
右外连接: 右表全部及两个表的交集
select * from A right outer join B on 条件;
一条 select 语句结果作为另一条 select 语法一部分( 查询条件, 查询结果, 表等)。
SELECT * FROM product WHERE category_id=(SELECT cid FROM category WHERE cname=‘化妆品‘);
原文:https://www.cnblogs.com/xiangyu97/p/14480696.html