一.数据库的创建与删除
#创建数据库
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数据库的自动提交