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