一、数据库及表的创建
数据库操作-mysql适用:
1、显示所有数据库:Show databases;
2、创建数据库:Create database 数据库名;
3、删除数据库:Drop database 数据库名;
表操作:
CREATE TABLE 表名( 属性名 类型 [完整性约束条件],.....);
约束条件 | 说明 |
PRIMARY KEY | 标识该属性为该表的主键,可以唯一的标识对应的记录 |
FOREIGN KEY | 标识该属性为该表的外键,与某表的主键关联 |
NOT NULL | 标识该属性不能为空 |
UNIQUE | 标识该属性的值是唯一的 |
AUTO_INCREMENT | 标识该属性的值自动增加 |
DEFAULT | 为该属性设置默认值 |
注: UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。简单来说:unique=primary key+not null
区别:1、primary key只能有一个,unique可以有多个同时存在;
2、primary key不能为空,而unique可以为空;
primary key一般在设计逻辑中用作记录标识,而unique只是用来保证唯一性
UNIQUE (bookId)//新建表时将bookId设为唯一
//添加唯一约束
ALTER TABLE Persons ADD UNIQUE (Id_P) //改变Id_P为唯一
CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)//设置Id_P和LastName都为唯一并命名为uc_PersonID
建表时创建外键
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)//设置本表Id_p字段和Persons表的Id_p主键关联
查看表结构:
1,查看基本表结构:
DESCRIBE(或DESC) 表名;//返回表字段及其详细信息表格
2,查看表详细结构:
SHOW CREATE TABLE 表名;//返回结果是创建表的sql
删除/清空 表:
1、 drop table 表名; //彻底删除表格,删除字段数据,释放内存空间
2、 truncate 表名; //删除表格数据,不删除字段,释放内存空间
3、 delete from 表名;或delete * from 表名;// 删除内容不删除定义,不释放空间,系统一行一行地删,效率较truncate低
修改表:
1,修改表名 ALTER TABLE 旧表名 RENMAE 新表名 ;
2,修改字段 ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型
3,增加字段 ALTER TABLE 表名 ADD 属性名 数据类型 [完整性约束条件] [FIRST | AFTER 属性名 2]
4,删除字段 ALTER TABLE 表名 DROP 属性名
二、增删改
插入数据
- 给表的所有字段插入数据
INSERT INTO 表名 VALUES(值 1,值 2,值 3,...,值 n);
- 给表的指定字段插入数据
INSERT INTO 表名(属性 1,属性 2,...,属性 n) VALUES(值 1,值 2,值 3,...,值 n);
- 同时插入多条记录
INSERT INTO 表名 [(属性列表)] VALUES(取值列表 1),(取值列表 2) ..., (取值列表 n);
更新数据
UPDATE 表名 SET 属性名 1=取值 1,属性名 2=取值 2, ..., 属性名 n=取值 n WHERE 条件表达式;
删除数据
DELETE FROM 表名 [WHERE 条件表达式]
三、查询语句(单表)
条件查询 WHERE:
SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] IN (元素 1,元素 2,元素 3);//查找属性(不为)为元素1、元素2和元素3的结果
SELECT 字段 1,字段 2...FROM 表名 WHERE 条件表达式 1 AND 条件表达式 2 [...AND 条件表达式 n] //and多条件查询
SELECT 字段 1,字段 2...FROM 表名 WHERE 条件表达式 1 OR 条件表达式 2 [...OR 条件表达式 n] //or多条件查询
范围查询 BETWEEN AND:
SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] BETWEEN 取值 1 > 指定值;//大于小于等符号
SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] BETWEEN 取值 1 AND 取值 2;//两端都包含
模糊查询 LIKE:
SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 [NOT] LIKE ‘字符串’;
“%”代表任意字符; “_” 代表单个字符;
空值查询 NOT NULL:
SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 字段 IS [NOT] NULL;
去重复查询 DISTINCT :
SELECT DISTINCT 字段名 FROM 表名;
排序 ORDER BY
SELECT 字段 1,字段 2...FROM 表名 ORDER BY 属性名 [ASC|DESC] //ASC升序(默认) DESC降序
分组查询 GROUP BY
GROUP BY 属性名 [HAVING 条件表达式][WITH ROLLUP]
1,单独使用(毫无意义);
2,与 GROUP_CONCAT()函数一起使用;
3,与聚合函数一起使用;
4,与 HAVING 一起使用(限制输出的结果);
5,与 WITH ROLLUP 一起使用(最后加入一个总和行);
分页查询 limit:
SELECT 字段 1,字段 2...FROM 表名 LIMIT 初始位置,记录数;
聚合函数查询:
一,COUNT()函数
COUNT()函数用来统计记录的条数; 与 GOUPE BY 关键字一起使用;
二,SUN()函数
SUM()函数是求和函数; 与 GOUPE BY 关键字一起使用;如:
SELECT stuName,SUM(score) FROM t_grade GROUP BY stuName;//根据学生姓名分组算出每个学生的分数总和
注意:当用group by 分组查询时只能查出分组的字段和聚合函数的结果,其他字段无法查出
三,AVG()函数
AVG()函数是求平均值的函数; 与 GOUPE BY 关键字一起使用;
SELECT stuName,AVG(score) FROM t_grade WHERE stuName="张三";//算出张三的平均分
四,MAX()函数
MAX()函数是求最大值的函数; 与 GOUPE BY 关键字一起使用;
MIN()函数是求最小值的函数; 与 GOUPE BY 关键字一起使用;