mysql总结

一.数据库的创建与删除

#创建数据库

CREATE DATABASE 数据库名;

#删除数据库

DROP DATABASE 数据库名;

#展示数据库

SHOW DATABASE 数据库名;

二.表的增删改查

1.

#创建表

CREATE TABLE 表名(

列名(字段名)  列类型(长度)  属性(非空约束 自增约束 DEFAULT )  索引(PRIMARY KEY  UNIQUE  INDEX )  注释(COMMENT),

........,

#创建表时添加外键

CONSTRAINT 外键名 FOREIGN KEY  (从表的列) REFERENCES 主表名(主表的列);

#创建表时添加索引

INDEX/KEY   `ind`  (``, `subjectNo`)

) [  表类型 ] [ 表字符集 ] [注释] ;

2.

#删除表

DROP删除

DROP TABLE 表名1,表名2;

DROP TABLE [ IF EXISTS ] 表名
IF EXISTS 为可选,判断是否存在该数据表
如删除不存在的数据表会抛出错误
DROP为整个删除,是将表中数据与表结构完全删除的一种方式

TRUNCATE删除
TRUNCATE只对表中数据进行删除,不会对表定义进行删除 TRUNCATE 速度更快

DELETE删除
根据条件逐行删除

3.

#修改表数据

#修改表名字

ALTER TABLE 旧表名 RENAME AS 新表名;

#添加字段

ALTER TABLE 表名 ADD 字段名 列类型 [属性 修改字段];

修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型 [属性];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [属性];
删除字段
ALTER TABLE 表名 DROP 字段名;

4.

#显示表结构
DESC 表名;
显示表创建语句
SHOW CREATE TABLE 表名;

三.数据库内容的增删改查

1.

#添加数据
INSERT INTO 表名 [(字段名1,字段名2,……..)] values (值1,值2,值3,………);

2.
#修改数据
UPDATE 表名 SET column_name = value [ , column_name2 = value2, …. ] [ WHERE condition ];

3.
#删除数据
DELETE FROM 表名 [ WHERE condition ];

4.

(1)#查询

#根据字段名查询语句
select 字段名1,字段名2,......字段名n from 表名

#查询表中所有信息
select * from 表名 (不推荐,效率低下)
一般通过列出所有查询的字段方式来查询内容

#通过as子句可将表名数据列名取一个新的别名
select 字段名 as "别名" from 表名
select 别名.字段名 from 表名 as 别名

#通过distinct去掉表中相同内容字段
select distinct(字段名) from 表名

#在返回列中使用表达式
select 字段名*10 from 表名

(2)

#WHERE 条件语句的使用

逻辑操作符
操作符名称       语法            描述
AND或&&       a AND b 或 a && b       逻辑与,同时为真结果才为真
OR或|| a      OR b 或 a||b          逻辑或,只要一个为真,则结果为真
XOR或^ a      XOR b            逻辑异或,不同为真,相同为假
NOT或!       NOT a 或 !a            逻辑非,若操作数为假,结果则为真
比较操作符
操作符名称     语法              描述
IS NULL        a IS NULL           若操作符为NULL,则结果为真
IS NOT NULL    a IS NOT NULL        若操作符不为NULL,则结果为真
BETWEEN      a BETWEEN b AND c      若a范围在b与c之间则结果为真
LIKE        a LIKE b            SQL模式匹配,若a匹配b,则结果为真
IN          a IN (a1,a2,a3,….)                   若a等于a1,a2…中的某一个,则结果为真

BETWEEN
SELECT * FROM SUBJECT WHERE ClassHour BETWEEN 110 AND 120;
SELECT * FROM SUBJECT WHERE ClassHour>=110 AND ClassHour<=120;
IN
SELECT * FROM subject where ClassHour=100 OR ClassHour=110 OR ClassHour=120;
SELECT * FROM SUBJECT WHERE ClassHour IN (100,110,120);
LIKE
SELECT * FROM SUBJECT WHERE SubjectName LIKE "%数学%";
SELECT StudentNo,StudentName FROM student WHERE StudentName LIKE "李__";
_匹配一个任意字
%匹配多个任意字符

(3)

#Group by分组函数
SELECT studentno,SUM(studentresult) AS `sum` FROM result GROUP BY studentno;

(4)

#通过having对分组后数据进行筛选
select studentno,avg(studentresult) as `sum` froby studentno having AVG(studentresult)>90;

(5)

#Order by排序
select * from result order by StudentResult;
默认升序,使用desc进行降序排列

(6)

#Limit
限制SELECT返回结果的行数
m 指定第一个返回记录行的偏移量
n 指定返回记录行的最大数目
注意
m不指定则偏移量为0,从第一条开始返回前n条记录
LIMIT 常用于分页显示
例子:
SELECT * FROM `result` LIMIT 3 #返回前3条记录
SELECT * FROM `result` LIMIT 2,3 #返回2-3条记录

(7)

子查询

(8)

连接查询

四.管理索引和外键

#创建索引
CREATE TABLE `result` (
//省略一些代码
INDEX/KEY `ind` (`studentNo`, `subjectNo`)
)
ALERT TABLE 表名 ADD 索引类型(数据列名)

#创建外键

ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY  (从表的列) REFERENCES 主表名(主表的列);

#删除索引或外键
DROP INDEX 索引名 ON 表名
ALTER TABLE 表名 DROP INDEX 索引名

ALTER TABLE 表名 DROP PRIMARY KEY;

#查看索引或外键
SHOW INDEX(或KEYS) FROM 表名

五.事务

SET AUTOCOMMIT = 0; # 关闭自动提交模式
SET AUTOCOMMIT = 1; # 开启自动提交模式
mysql默认自动提交

START TRANSACTION / BEGIN
开始一个事务,标记事务的起始点
COMMIT
提交一个事务给数据库
ROLLBACK
将事务回滚,数据回到本次事务的初始状态
SET AUTOCOMMIT = 1;
开启MySQL数据库的自动提交

原文地址:https://www.cnblogs.com/jiayiblog/p/10947700.html