MySQL数据库操作

SQL语句

SQL分类

  1. 数据定义语言DDL

    定义数据库对象:database、table、column

    操作结构:create、alter、drop

  2. 数据操作语言DML:对表中记录操作

    操作数据:insert、delete、update(增删改)

  3. 数据查询语言DQL:查询表中记录

    select、from、where

  4. 数据控制语言DCL:定义访问权限和安全级别、创建用户

    Redis中,关键字grant

1.对数据库的操作 database

创建数据库

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(); 查看正在使用的数据库

2.对表操作 table

创建一张表

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 表名;

3.对数据库表记录进行操作(修改)

3.1插入记录

insert into 表名(列名1,列名2,列名3……) values(值1,值2,值3……)

insert into 表名 values(值1,值2,值3……)

插入数据中文乱码问题解决办法

set names gbk;

3.2修改表记录

不带条件的

update 表名 set 字段名=值, 字段名=值, 字段名=值……

带条件的

update 表名 set 字段名=值, 字段名=值, 字段名=值…… where 条件

3.3删除表记录

带条件的

delete from 表名 where 条件

不带条件的

delete from 表名;

delete与truncate的区别?

delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回(rollback)。(uid不会重置)

truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。(uid会重置)truncate table 表名 where 条件

3.4查询操作

语法: 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;

内连接查询(使用的关键字 inner join -- inner 可以省略)

两个表的交集

隐式内连接: select * from A,B where 条件;
显示内连接: select * from A inner join B on 条件;

外连接查询(使用的关键字 outer join -- outer 可以省略)

左外连接: 左表全部及两个表的交集
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=‘化妆品‘);

MySQL数据库操作

上一篇:MySQL介绍及安装环境配置


下一篇:关系型数据库和非关系型数据库