1. 启动mysql
a. windows服务管理器
搜索框搜索services.msc寻找mysql后改为自动
b. dos方式 启动
启动 | 关闭 |
---|---|
net start mysql | net stop mysql |
注意: 这里启动最好看一下服务中的名称 如sql80
2. 数据库基本操作
创建数据库
create database xxgc
查看已创建的数据库
show create database 数据库名称
修改数据库
ALTER DATABASE 数据库名称
DEFAULT CHARACTER SET 编码方式
COLLATE 编码方式_bin ; (写在一行)
(注:编码方式指压缩方式不同,结果也不同,常见的字符下型编码方式有GBK、ASCLL、UTF-8等等)
删除数据库
DROP DATABASE 数据库名称;(如数据库不存在报错)
DROP DATABASE IF EXISTS 数据库名称;(不报错)
3. 数据表基本操作
注意:这里对数据表的操作需要 先创建数据库,再使用激活数据库,然后创建数据表
创建数据库(见上方)
使用数据库
use 数据库名称
创建数据表
CREATE TABLE 表名
(
字段名1 数据类型 [完整性约束条件]
字段名2 数据类型 [完整性约束条件]
……….
字段名n 数据类型 [完整性约束条件]
);
查看数据表
SHOW CREATE TABLE 数据表名称 查看指定表
SHOW TABLES; 查看数据库中所有表
DESCRIBE 表名;(或DESC 表名;)
修改数据表(名)
ALTER TABLE 旧表名 RENAME [TO] 新表名; [to]可加可不加
修改数据表(字段名)
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型(约束性条件);
约束性条件:如valchar(5)
修改属性表(字段数据类型)
ALTER TABLE 表名 MODIFY 字段名 新数据类型;
修改属性表(添加字段)
ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件][FIRST|ARTER 已存在字段名];
FIRST可选参数,用于将新添加得字段设置为表的第一个字段
ALTER可选参数,用于将新添加的字段添加到指定得字段后边
修改属性表(删除字段)
ALTER TABLE 表名 DROP 字段名;
修改属性表(修改字段位置)
ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER字段名2;
删除数据表
DROP TABLE 表名
4. 数据表的约束(防止数据库插入错误的数据)
约束条件 | 说明 |
---|---|
PRIMARY KEY | 主键约束,用于唯一标识对应的记录 |
FOREING KEY | 外键约束 |
NOT NULL | 非空约束 |
UNIQUE | 唯一性约束 |
DEFAULT | 默认值约束,用于设置字段默认值 |
主键约束
A.单字段主键(可做列级约束、也可做表级约束)
B.多字段主键(只可做表级约束)
C.外键约束(用来在两个表的数据之间建立关联,可为一个列或多个列,一个表可以由一个或多个外键。)
D.
CONSTRAINT fk_emp_dept【fk_从表名_主表名】FOREIGN KEY(dept_id【从表字段/外键】) REFERENCES dept(id)【主表字段】
例.创建表dept和员工表emp,在员工表上创建外键。
E.非空约束(字段不为NULL)
字段名 数据类型 NOT NULL;
F.唯一约束(用于保证数据表中字段的唯一性,即表中的值不能重复出现)
字段名 数据类型 UNIQUE;
G.默认约束(用于给数据表中字段指定默认值,在表中插入一条新纪录时,如没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。默认值通过defaylt关键字定义的)
字段名 数据类型 DEFAULT 默认值;
设置表字段值自动增加
利用AUTO_INCREMENT约束(可以是任何整数类型,默认情况下,该字段从1开始自增)
字段名 数据类型 AUTO_INCREMENT
5. 记录的操作
向数据表中插入数据
- 向表中所有字段都插入数据
INSERT[INTO] 表名(字段名1,字段名2,……)必须列出所有字段,[]不写
VALUES(值1,值2,……); 与字段相匹配
- 向部分字段插入数据
- 插入多条记录
INSERT [INTO] 表名[(字段名1,字段名2,字段名3,…,字段名n)]
VALUES(值1,值2,…,值n),
(值1,值2,…,值n),
……
(值1,值2,…,值n);
[]表示可省略
修改数据表的记录
UPDATE 表名
SET 列名=新数值[…]
[WHERE 子句];
注:where子句指定要修改的数据条件,不写改所有,写改满足条件的
将张翠华性别男改为女
数据表记录的删除
DELETE FROM 表名
[WHERE 子句];
注:如不写子句,则将默认整列删除(清除所有语句/清空数据表)
TRUNCATE TABLE 表名;
删除丽萍的班级信息
6. 查询
基本查询(两个部分:查询字段以及查询的数据表)
SELECT 字段名1,字段名2,……
FROM 表名;
*代表所有列 select * from 表名
2.为列取别名
A.列名 AS 别名
B.列名 别名
例.查询studentinfo表,输出所有学生学号、姓名以及此次查询日期和时间,并分别使用“学生学号”,“学生姓名”,“查询日期”作为别名
3.使用distinct关键字取消重复查询结果
SELECT DISTINCT 字段 FROM 数据表;
4.使用where语句
SELECT 字段名1,字段名2,……FROM 表名
WHERE 条件表达式;
5.使用模式匹配字符串进行模糊查询(条件不明确)
A.列名 [NOT] LIKE ‘模式字符串’
注:模式字符串…一般字符串或有通配符字符串
通配符 | |
---|---|
% | 匹配任意长度的字符串 |
_ | 匹配任意单个字符 |
例.查询姓张同学的信息
B.条件and连接
姓张的女同学信息
6.使用ORDER BY子句(对结果集中的数据行按指定列排序)
SELECT [ALL|DISTINCT] 要查询的内容
FROM 表名列表
[WHERE 条件表达式]
ORDER BY 列名[ASC|DESC]; ASC为升序,DESC为降序。(不写默认ASC)
7.对数据表进行统计查询
A.使用集合函数(用于查询结果集中指定列进行统计,输出统计值)
集合函数 | 功能描述 |
---|---|
COUNT([DISTINCT |ALL]列表达式|*) | 计算一列中值的个数/COUNT(*)返回行数/不能与DISTINCT一起使用 |
SUM([DISTINCT|ALL]列表达式) | 计算一列数据的总合 |
AVG([DISTINCT|ALL]列表达式) | 计算一列数据的平均值 |
MAX([DISTINCT|ALL]列表达式) | 计算一列数据的最大值 |
MIN([DISTINCT|ALL]列表达式) | 计算一列数据的最小值 |
例 查询studentinfo表,统计学生总人数。
SELECT COUNT(*) AS 学生总人数 FROM 数据表;
例 查询姓张同学的总人数
例.选出学号最大的女学生
B.分组统计/使用GROUP BY子句(对查询结果集按指定的列的值进行分组,列值相同的一组)
SELECT [ALL|DISTINCT]要查询的内容
FROM 表名
[WHERE 条件表达式]
GROUP BY 列表列名
[HAVING 条件表达式];
例 查询信息表,统计男女人数。
显示语文成绩大于70小于90的学生姓名和学号
7. 多表链接查询
内连接
SELECT 列名列表
FROM 表名1[INNER] JOIN 表名2
ON表AS.列名 比较运算符 表名2.列名;
或
SELECT 列名列表
FROM 表名1,表名2
WHERE 表名1.列名 比较运算符 表名2.列名`在这里插入代码片`
外连接(表有主从之分)
SELECT 列名列表
FROM 表名1 LEFT|RIGHT|FULL JOIN 表名2
ON 表名1.列名 比较运算符 表名2.列名
自连接(一个表两个副本之间内连接,必须制定不同别名以区别)
对数据表进行子查询
-
批量比较子查询(子查询结果不止一个,且父查询与子查询之间需要比较运算符连接,需在子查询前加上all或any的谓词)
注:all 所有为true,表达式为true
Any 只要一次为true,表达式为true
-
IN子查询(父查询与子查询之间用IN或NOT IN 进行连接,判断剖个属性列的值是否在子查询查找的集合中)
-
-
EXISTS子查询(子查询前面加上EXISTS运算符或NOT EXISTS运算符
-