Mysql数据库学习记录
1、创建数据表
CREATE TABLE IF NOT EXISTS 'runoob_tbl'(
'runoob_id' INT UNSIGNED AUTO_INCREMENT,
'runoob_title' VARCHAR(100) NOT NULL,
'runoob_author' VARCHAR(40) NOT NULL,
'submission_data' DATE,
PRIMARY KEY('runoob_id')
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
分析:
(1)不想字段为NULL可以设置字段属性为NOT NULL
(2)AUTO_INCREMENT定义为自增的属性,一般用于主键,数值会自动加1
(3)PRIMARY KEY关键字用于定义列为主键,可以使用多列来定义主键,列间用逗号分隔
(4)ENGINE设置存储引擎
2、插入数据
INSERT INTO table_name(field1,field2,.....fieldN)
VALUES
(value1,value2,.....valueN)
3、修改数据库数据update
UPDATE table_name SET field1=new-value1,field2=new-value2 [where Clause]
(1)可以同时更新一个活多个字段
(2)可以在where字句中指定任何条件
4、连接两个以上的select语句的结果组合到一个结果集合中
SELECT expression1,expression2......expression_n FROM tables [where conditions] UNION [ALL|DISTINCT] SELECT expression1,expression2......expression_n FROM tables [where conditions];
(1)DISTINCT:可选,删除结果集合重复的数据,默认情况UNION操作符已删除重复数据
(2)ALL:可选,返回所有结果集,包含重复数据
5、GROUP BY:根据一个或多个列对结果集进行分组
6、mysql连接的使用
(1)INNER JOIN(内连接或等值连接):获得两个表中字段匹配关系的记录

(2)LEFT JOIIN(左连接):获取左表所有记录,即使右表没有对应匹配记录
(3)RIGHT JOIN(右连接):获取右表所有记录,即使左表没有对应匹配记录
7、MYSQL处理NULL使用IS NULL 和IS NOT NULL运算符,不能用=或!=运算符
8、(1)事务满足的4个条件:原子性、一致性、隔离性、持久性
(2)事务控制语句:
BEGIN或START TRANSACTION显式的开启一个事务
COMMIT也可以使用COMMIT WORK
ROLLBACK也可以使用ROLLBACK WORK,回滚
SAVEPOINT identifier,SAVEPOINT允许在事务中创建一个保存点,一个事务中可以有多个SAVEPOINT
RELEASE SAVEPOINT identifier删除一个事务的保存点,当没有指定保存点时,执行该语句会抛出一个异常
ROLLBACK TO identifier把事务回滚到标记点
SET TRANSACTION用来设置事务的隔离级别
(3)事务处理两种主要方法:
a、用BEGIN ,ROLLBACK,COMMIT实现
b、用SET来改变MYSQL自动提交模式:SET AUTOCOMMIT=0禁止自动提交;SET AUTOCOMMIT=1开启自动提交
9、MYSQL的ALTER命令
(1)删除,添加,修改表字段
ALTER TABLE 表名 DROP 表字段(删除表字段)
ALTER TABLE 表名 ADD 表字段 类型(添加表字段
ALTER TABLE 表名 ADD 表字段 类型 FIRST(可用FIRST或AFTER设定表字段位置)
(2)修改字段类型及名称
ALTER TABLE 表名 MODIFY 表字段 新类型
ALTER TABLE 表名 CHANGE 原表字段名称 新表字段名称 新类型
(3)修改默认值
ALTER TABLE 表名 ALTER 表字段 SET DEFAULT 新默认值
ALTER TABLE 表名 ALTER 字段 DROP DEFAULT(删除默认值)
(4)修改表名
ALTER TABLE 表名 RENAME TO 新表名
10、创建数据库
CREATE DATABASES [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE 校对规则名]、
(1)数据库名称不能以数字开头,不区分大小写
(2)[DEFAULT] CHARACTER SET :指定字符集名,不指定则使用默认规则
(3)[DEFAULT] COLLATE:指定字符集默认校对规则
11、修改数据库:只能对数据库字符集及校对规则进行修改
ALTER DATABASE [数据库名] { [DEFAULT] CHARACTER SET <字符集名> | [DEFAULT] COLLATE <校对规则名>}
12、删除数据库:DROP DATABASE
DROP DATABASE [IF EXISTS] <数据库名>
(1)安装数据库后系统自动创建information_schema 和 mysql 两个系统数据库,删除了这两个数据库,mysql将无法工作
(2)删除数据库中的所有表格及数据库
13、选择数据库: USE <数据库名>;
14、注释:
(1)单行注释: # 和 --都可以单行注释,但#后面直接加注释内容,而 --后面加一个空格再加注释内容
(2)多行注释用 /* */
15、大小写规则

Mysql数据库和表明的默认大小写取决于服务器主机的操作系统命名方面的规定:windows文件名不区分大小写,因此windows系统上mysql是不区分的;Linux系统则区分;
16、查询帮助的命令 是 HELP : HELP 查询内容
例如查询帮助文档的目录列表: HELP contents
17、关系(一张表),属性(一列),元组(一行)
18、数据库设计的图像表达方式(E-R图)
属性:实体的特征;联系:两个或多个实体之间的联系
E-R图的组成:
(1)矩形表示实体集
(2)椭圆形表示属性
(3)棱形表示联系集
19、三大范式:
(1)第一范式
A、要求数据库表的每一列都是不可分割的基本数据项,同一列不能有多个值
B、若同一列有多个值,需要将该列单独拆分成一个实体,新实体和原实体是一对多的关系
C、在任何一个关系型数据库中,第一范式(1NF)是对关系模型的基本要求,不满足第一范式的数据库就不是关系数据库
(2)第二范式
A、满足第二范式(2NF)必须先满足于第一范式(1NF)
B、第二范式要求实体中每一行的所有非主属性都完全依赖与主键
C、第二范式在第一范式的基础上更进一步,第二范式需要确保数据库表中的每一列与主键相关,而不能只与主键的某一部分相关(针对联合主键而言)
(3)第三范式
A、满足第三范式必须先满足第二范式
B、实体中的属性不能是其他实体中的非主属性/若出现非主属性,使用外键关联
C、确保每列与主键直接相关,而不是间接相关
20、MYSQL数据类型
(1)数值类型

(2)字符类型

(3)日期类型

21、显示表结构:DESC 表名;
22、查看数据表的相关信息:除了查看数据库有哪些数据表外,还可以利用MYSQL提供的SQL语句查看数据表的相关信息,如数据表的名称,存储引擎,创建时间等
SHOW TABLES STATUS FROM <数据库名> LIKE "% %"
23、\G是Mysql客户端可以使用的结束符的一种,用于将结果纵向排列
24、修改数据表名称
1、alter table tbl_name rename [to| as ] new_tble_name 2、rename tabel tbl_name to new_tbl_name[,tbl2_name to new_tbl2_name]
rename只能使用to修改名称,可修改多个表名称
25、修改表选项:
ALTER TABLE 表名 表选项[=]值
25、DESCRIBE语句可以查看数据表中所有字段或指定字段的信息,包括字段名,字段类型,可简写为DESC
{DESCRIBE | DESC} 表名
{DESCRIBE | DESC} 表名 字段名
26、查看数据表的创建语句
SHOW CREATE TABLE 表名
27、查看数据表结构
SHOW [FULL] COLUMNS FROM 数据库名.表名
FULL表示显示详细信息,不添加时候查询结果与DESC一致;添加后显示字段comment注释信息以及字段权限等
28、修改字段名称---CHANGE
ALTER TABLE 数据表名 CHANGE [COLUMN] 旧字段名 新字段名 字段类型[字段属性]
字段类型表示新字段名的数据类型,不能为空,即使与旧字段的数据类型相同,也必须重新设置
28、修改字段类型----MODIFY
ALTER TABLE 表名 MODIFY [COLUMN] 字段名 新类型 [字段属性];
29、修改字段位置---MODIFY
ALTER TABLE 表名
MDOIFY [COLUMN] 字段1 数据类型[数据属性] [FIRST | AFTER 字段2];
first:表示将字段1 调整为数据表的第一个字段
AFTER 字段2:将字段1 调整到 字段2 后
28、新增字段
(1)新增一个字段
ALTER TABLE 表名 ADD [COLUMN]
新字段名 字段类型 [ FIRST | AFTER 字段名]
(2)增加多个字段
ALTER TABLE 表名
ADD [COLUMN] (新字段1 字段类型,新字段2 字段类型,新字段3 字段类型,)
不指定字段位置时默认添加到表后面
29、删除字段
ALTER TABEL 数据表名 DROP [COLUMN] 字段名
30、删除数据表
DROP TABLE [IF EXISTS] 数据表1[,数据表2]
31、字段属性
(1)Unsigned:无符号的;声明了该列不能为负数
(2)ZEROFILL:零填充
(3)Auto_InCrement:自增
(4)NULL和NOT NULL:NOT NULL表示该列必须有值
(5)DEFAULT:用于设置默认值
32、不设置字符集编码的话,会使用Mysql默认的字符集编码Latin1,不支持中文,可以再My.ini中修改
33、MYSQL数据表以文件方式存储在磁盘中
34、如果一个公共关键字在一个关系中是主关键字,那么该公共关键字在另一个关系中就是外键,外键表示了两个关系之间的相互联系,以另外一个关系的外键作为主关键字的表叫做主表,另一个关系叫做主表的从表
35、外键的作用是保持数据的一致性,完整性,外键只能引用外表中的列的值或者使用空值
36、常见的6种约束:主键,外键,唯一约束,检查约束,非空约束,默认值约束
37、主键的原则
(1)单一主键:具有唯一性,不能重复,不能为Null
(2)联合主键:不能包含非必要的字段,最小化原则
38、修改表时添加主键约束
ALTER TABLE <数据表名> ADD PRIMARY KEY(<字段名>)
39、删除主键
ALTER TABLE <表名> DROP PRIMARY KEY;
40、AUTO_INCREMENT初始值是1,必须有唯一所以;NOT NULL属性,整数类型
(1)可设置初始值
41、外键可以为空,但主键不允许为空;主键与外键的数据类型必须一致
42、在创建表时指定外键
[CONSTRAIN <外键名>] FOREIGN KEY 字段名[,字段2,.....]
REFERENCE <主表名> 主键列1[,主键列2,....]
43、修改表时增加或删除外键
删除外键:不需要外键约束时就需要杀出,从表中的外键一旦删除,就会解除主表和从表之间的关系
ALTER TABLE <表名> ADD [CONSTRAIN <外键名>] FOREIGN KEY(字段名) REFERENCE <主表名>(主键列)
ALTER TABLE <表名> DROP FOREIGN KEY <外键名>
44、唯一约束:指所有记录中字段值不能重复,可为空,通常设置在主键以外的列上:UNIQUE
定义过程增加唯一约束: <字段名> <字段类型> UNIQUE 修改过程添加 ALTER TABLE <表名> ADD CONSTRAIN <唯一约束名> UNIQUE(字段名)
删除!!!INDEX
ALTER TABLE <表名> DROP INDEX <唯一约束名>
45、检查约束
CHECK(<检查约束>)
增加/删除检查约束
ALTER TABLE <表名> ADD CONSTRAIN <检查约束名> CHECK(<检查约束>)
ALTER TABLE <表名> DROP constrain <检查约束名>
46、创建表时可以使用DEFAULT关键字设置
<字段名> <数据类型> DEFAULT <默认值>;
修改表过程增加或删除默认值
ALTER TABLE <表名> CHANGE COLUMN <字段名> <字段名><数据类型> DEFAULT <默认值> *删除* ALTER TABLE <表名> CHANGE COLUMN <字段名> <字段名><数据类型> DEFAULT null
47、非空约束:NOT NULL
ALTER TABLE <表名> CHANGE COLUMN <字段名>
<字段名><数据类型> NOT NULL;
ALTER TABLE <表名> CHANGE COLUMN <字段名>
<字段名><数据类型> NULL;
48、查看表中的约束
SHOW CREATE TABLE <表名>
49、DISTINCT 关键字的主要作用是对数据表中一个或多个字段重复的数据进行过滤,只返回其中一条数据给用户;只返回目标字段,无法返回其他字段,常使用DISTINCT返回不重复字段的条数
select count(distinct name,age) from user;
50、limit指定初始位置:
limit 初始位置 条数
limit 记录数 offset 初始位置
5
浙公网安备 33010602011771号