Mysql学习小结

来源:互联网 发布:hexeditor mac 编辑:程序博客网 时间:2024/05/01 05:10

这篇博文本身没什么多大意义,只是我的个人总结,如果要学习Mysql在此推荐:http://www.w3school.com.cn/sql/index.asp

一.Mysql中的数据类型

 ⑴数值类型

Mysql作为SQL语言的扩展,支持以下整数类型(来自Mysql文档):

Mysql中当然也支持浮点类型,有如下:
  类型说明             取值范围  FLOAT[(M, D)]    最小非零值:±1.175494351E – 38  DOUBLE[(M,D)]    最小非零值:±2.2250738585072014E – 308  DECIMAL (M, D)   可变;其值的范围依赖于M 和D 
M是浮点数的总位数,D是其对应的小数位数,显然有M>=D。
float用4个字节,double需要8个字节。DECIMAL依赖于M和D(length=max{M,D}+2)

 ⑵串类型

串类型包括很多种,下面只列举几种(CHAR 、VARCHAR、ENUM、SET):
CHAR:可在后面用圆括号指定存储的长度,范围为0-255个字符。并且是定长类型,即当某一字符长度不满足其指定的长度时,会默认用空格补全。
VARCHAR:可在后面用圆括号指定存储的长度,范围为0-65535个字节,在不允许非空字段的时候,最大可以到65533,允许的时候只能到65532.
ENUM:后面跟圆括号指定ENUM集,例如ENUM(‘张三’,‘李四’,‘王五’)。ENUM是一个字符串对象。ENUM内可以NULL或者NOT NULL,当ENUM允许NULL时,NULL也作为该列的一个有效值,且为默认值。如果为NOT NULL,那么默认值为第一个元素(例如上例的张三)。
SET:这个举例说明,例如声明为SET('one','two')的列,其值可以为'','one','two','one,two'四个值中的任何一个。

⑶日期时间

这里等到具体使用的时候再补充。

二 数据库的相关操作

创建数据库:CREATE DATABASE 名字;
查看数据库:SHOW DATABASES;
删除数据库:DROP DATABASE 名字;
进入数据库:USE 名字;
查看数据库有关信息:SHOW DATABASE 名字 ;
修改编码:Alter database t2 CHARACTER SET=utf8;
进入数据库后查看当前数据库信息:SELECT DATABASE();

三 表的有关操作

查看数据库已有的表:SHOW TABLES;
建表:CREATE TABLE 名字(列名称 数据类型,列名称 数据类型,·····);
查看一张表的字段属性:SHOW COLUMNS FROM 表名;或者DESC 表名;
插入一条记录:INSERT INTO 表名 (列名称,列名称,·····)VALUES(属性值,属性值,····);
删除一条记录:DROP FROM 表名//以后再补充。
更新一条记录:以后再补充。

四 五种约束

 ⑴主键约束

主键约束用来唯一标识每一行,主键可以用来查询、修改、删除数据等,不能为NULL,每一条记录的主键必须唯一。每个表只能有一个主键。
创建主键约束:CREATE TABLE 表名(列名称 数据类型 PRIMARY KEY,列名称 数据类型);这样,该表的第一个属性就被指定为主键,须满足主键约束条件。

 ⑵唯一约束

唯一约束用于保证该列的所有值都不相同,可以为NULL,每个表可以有多个列为UNIQUE,唯一约束是用来保证记录的唯一性。
创建唯一约束:CREATE TABLE 表名 (列名称 数据类型 UNIQUE KEY,列名称 数据类型 UNIQUE KEY,····);

 ⑶默认约束

默认约束用于在插入一条记录时,如果不指定该属性的值,会采用默认约束的值来给这条记录的这个属性赋值。
创建默认约束:CREATE TABLE 表名(username VARCHAR(20) DEFAULT '张三',·····);这样,当插入一条记录而又没有指定名字的时候,会默认会将其名字赋值为张三进行存储。

 ⑷外键约束

外键是用来实现数据关系完整性的KEY,当表Super的主键是表sub的一个字段时,这个字段就成为Subr的一个外键,其中,Super成为父表,即有外键的表称为子表。即一个表的外键是另一个表的主键。
一些规则:
①插入非空值时,如果主键表中没有这个值,那么不能插入。
②更新外键时,不能更新为主键表中不存在的值。
③删除或更改主键时,可以选择在建立外键时级联删除/更改还是拒绝删除/更改。
创建的语法:CREATE TABLE 表名(列名 数据类型,id TINYINT ,····,FOREIGN KEY REFERENCE 表名(表的主键));注意:我们要在构建好我们各字段之后,再在最后指定外键。

  ⑸检查约束

 检查约束是约束能够插入的数据需要满足一定的条件,如数值需要满足在一定的范围内等等。不过目前就我掌握以及搜索的情况来看,mysql中不存在检查约束,如果需要检查约束,需要在添加数据时用正则表达式进行匹配检查。

   关于约束的几个操作以及注意事项:

①根据操作列数的多少,约束分为表级约束和列级约束。当主键约束由多个字段构成的时候,此时主键约束就属于表级约束。表级约束一般有主键约束、外键约束、唯一约束。
列级约束一般有非空约束和默认约束等。
②在创建约束的时候,我们可以在指定列字段的同时给该列指定约束,也可以在所有字段创建完成之后再在最后指定约束。见下列语句:

DROP TABLE IF EXISTS `team`;CREATE TABLE `team` (  `team_id` int(11) NOT NULL AUTO_INCREMENT,  `course_id` int(11) NOT NULL,  `team_leader` int(11) DEFAULT NULL,  `c_teamid` int(11) NOT NULL,  `count` int(11) DEFAULT '0',  `total_time` int(11) DEFAULT '0',  `numcount` int(11) DEFAULT NULL,  PRIMARY KEY (`team_id`),  KEY `fk_course_id_te` (`course_id`),  KEY `fk_teamleader_te` (`team_leader`),  CONSTRAINT `fk_course_id_te` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`),  CONSTRAINT `fk_teamleader_te` FOREIGN KEY (`team_leader`) REFERENCES `user` (`user_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

上述语句就属于创建字段之后再指定约束的情况。注意指定语句如何书写。
③对表的操作:
添加一列或者多列:ALTER TABLE 表名 ADD 列名1 属性1,ADD 列名2 属性2,···;
删除一列或者多列同上:ALTER TABLE 表名 DROP 列名1,DROP 列名2,···;
添加主键约束:ALTER TABLE 表名 ADD CONSTANT 约束名字 PRIMARY KEY(列名1);其中约束名字可自定义,列名1为表内的满足主键约束的一个字段。
添加默认约束:ALTER TABLE 表名 ALTER 列名 SET DEFAULT 值;
例如:ALTER TABLE provinces ALTER leader SET DEFAULT '诸葛';
上述语句添加了默认值为‘诸葛’;
添加外键约束:ALTER TABLE 表名 ADD CONSTANT 约束名字 FOREIGN KEY(列名1) REFERENCES 主表名(主表的主键的列名);
例如:
ALTER TABLE OrdersADD CONSTRAINT fk_PerOrdersFOREIGN KEY (Id_P)REFERENCES Persons(Id_P)
在添加外键约束的时候,我们可以在后面追加 ON DELETE CASCADE 来达到删除主表的一条记录时,其在子表中对应的记录也级联删除。
也可以追加SET NULL 等命令,详情见mysql文档。

更改列的属性:
mysql> ALTER TABLE 表名     -> MODIFY 列名 BIGINT NOT NULL DEFAULT 100;
我们可以使用上述语句更改我们已有列的属性。例如非空约束的修改。

以上是第一阶段的总结。












0 0
原创粉丝点击