Mysql学习笔记-----DayOne

来源:互联网 发布:东莞seo公司 编辑:程序博客网 时间:2024/06/05 09:38

一、修改Mysql的提示符

参数                   描述\D                  完整的日期\d                  当前数据库\h                  服务器名称\u                  当前用户名

有两种方法:1、在未登录mysql的情况下:
在LInux下:

root@localhost$:mysql -u root -p xxxxx --prompt  \h  (注意是反斜杠)

在windows下:

root@localhost$:mysql -uroot -pxxxx --prompt \h   (\h表示本地主机名)

2、已登陆到mysql中,

mysql> prompt \u@\h \d>      表示当前用户名@服务器名称 数据库名   

二、Mysql常用命令

Mysql语句的规范:

  • 关键字和函数名全部大写
  • 数据库名称、表名称、字段名称全部小写
  • SQL语句以分号结尾

    常用命令:

  • 显示当前服务器版本: SELECT VERSION(); 不要忘记小括号

  • 显示当前日期时间:SELECT NOW();
  • 显示当前用户: SELECT USER();

三、操作数据库
1、创建数据库:CREATE DATABASE t1;
2、查看当前数据库创建时使用的指令(一般查看其的字符编码和数据库引擎是什么):
SHOW CREATE DATABASE t1;
3、修改数据库字符编码:ALTER DATABASE t1 CHARSET=utf8;
4、删除数据库:DROP DATABASE t1;
5、查看warning内容:SHOW WARNINGS;
四、数据类型
所有类型总结:
http://www.runoob.com/mysql/mysql-data-types.html
补充:
1、要选择适合的数据类型,而不是盲目选择最大的。。比如年龄用TINYINT就可以,BIGINT比TINYINT多了7个字节,如果用BIGINT,成千上百万的数据则会浪费很多空间。所以做数据库优化,数据类型也是不可忽略的。
2、浮点型 FLOAT[(M,D)] DOUBLE[(M,D)]
其中,M是数字总位数,D是小数点后面的位数。若MD被省略,根据硬件的限制来保存值。
3、Time类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个过去的时间或两个事件的时间间隔(可以大于24小时,或者未负)。
4、当一个字符串能确定长度时尽量用CHAR(身份证号),性能好。
5、CHAR是定长类型,未到达长度,余下的用空格来补齐进行保存。
VARCHAR是变长类型,存多少就是多少,多余的也不会再存储。
注意集合SET,它的存储不固定。根据成员的数目来定,values是随机排列组合的,如
SET(‘a’,’b’,’c’),它会随机组合,a,b,c,ab,ac,abc,bc等。

除此之外,还要注意:

为TIME列分配简写值时应注意。
没有冒号,MySQL解释值时假定最右边的两位表示秒。(MySQL解释TIME值为过去的时间而不是当天的时间)。
例如,你可能认为’1112’和1112表示’11:12:00’(11点过12分),但MySQL将它们解释为’00:11:12’(11分,12 秒)。
同样,’12’和12被解释为 ‘00:00:12’。相反,TIME值中使用冒号则肯定被看作当天的时间。也就是说,’11:12’表示’11:12:00’,而不是’00:11:12’。
超出TIME范围但合法的值被裁为范围最接近的端点。
例如,’-850:00:00’和’850:00:00’被转换为’-838:59:59’和’838:59:59’。
无效TIME值被转换为’00:00:00’。请注意由于’00:00:00’本身是一个合法TIME值,只从表内保存的一个’00:00:00’值还不能说出原来的值是 ‘00:00:00’还是不合法的值。

五、操作数据表
1、列—–>字段; 行—–>记录。
2、打开数据库: USE 数据库名;
查看当前数据库:SELECT DATABASES;
创建数据表:
CREATE TABLE 表名(字段列表),
详细为:
CREATE TABLE 表名(
字段名 数据类型 约束,
字段名 数据类型 约束,
字段名 数据类型 约束
)数据库引擎 默认字符编码;

注意:
①、char类型必须加上长度 char(x);
②、如果给某个字段设置了自增属性,那么在添加时可以不去添加该字段的值,会默认自增。
③、一个表只能有一个主键,且不能重复。否则会报错:

1068 - Multiple primary key defined

④、mysql中自增的属性必须设置为主键,否则会报错:

1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

3、查看数据表:

SHOW TABLES FROM mysql    // 查看myql数据库中的所有列表。 

如图:
这里写图片描述
4、查看数据表结构:

 SHOW COLUMNS FROM 表名;

如图:
这里写图片描述

5、记录的插入与查找
插入:INSERT INTO 表名(字段列表) VALUES(值列表),
查找: SELECT exptr...... FROM 表名
6、空值和非空 :NULL和 NOT NULL

六、约束
其目的检查数据是否符合要求,分为列级约束和表级约束。
列级约束:约束一个字段。
表级约束:约束两个或两个以上的字段。
1 、主键 — 每一条记录的一个身份证号 不重复 主键会有一个默认索引,还有一点就是,AUTO_INCREMENT必须和主键组合使用,但是单有主键,不加自动编号也可以。

id SMLLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT

另一种写法:

CONSTRAINT 主键名 PRIMARY KEY(字段名,字段名)

有这种方式的原因是:在实际开发中,可能会把多个列组合起来加主键,而主键在一个表里只能有一个,但是一个主键并不限于一个列,为了满足更多的需求,会让多个列组合起来加主键,来约束多个列。
比如:两个字段组合作为主键,单独一个可以重复,组合之后不可以重复

2、 非空 — 禁止该字段存放null
3 、默认约束 DEFAULT
当插入记录时,没有明确为字段赋值,则自动赋予默认值。
Eg:

CREATE TABLE(  id SMLLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,  name VARCHAR(20) NOT NULL UNIQUE KEY)ENGINE=INNODB DEFAULT CHARSET=UTF8;   //(小写utf8也可以。)

4、 唯一约束 unique,(保证记录的唯一性)它和主键类似。
它俩区别:
①、每张数据表可以存在多个唯一约束,但是主键只能存在一个。
②、主键自带索引,而UNIQUE没有。
如果误操作,会报错:

insert into Student(id,name) values(19,'dssd')1062 - Duplicate(复制) entry 'dssd' for key 'name'

注意
唯一约束的字段可以NULL。因为,如果这个字段允许为空的话就代表两条或两条以上的记录,这个字段都可以为空,如果都为空的话,那么这两个值是相同的,而相同又和保证唯一性相互背离,但实际上它们在存储的时候,即使存储多个值,它最终保留的空值只有一个,所以说它也只能有一个空值,这就保证了唯一性。

5、检查约束 –检查字段的值 是否符合规范
Mysql中 检查约束可以创建 但是没有作用

6、外键约束 – –两表关联的时候 一个表中的字段要参照另一个表的字段

FOREIGN KEY(字段) REFERENCES 要参照的表(要参照的字段)。
参照列:被参照的列
外键列:还有FOREIGN KEY的列
外键约束的要求:
①、父表和子表必须使用使用的存储引擎,而且禁止使用临时表。
②、数据表的存储引擎只能为INNODB.
③、外键列和参照列必须具有相似的数据类型。其中数字的长度或 是否有符号伪必须相同;而字符的长度则可以不同。
④、外键列和参照列必须创建索引。如果外键列不存在索引的话,MySql将自动创建索引。
作用:
作用是保持数据一致性,完整性;实现一对一或一对多关系。这也是为什么很多数据库被称为关系性数据的根本原因。
值得注意的是,在添加数据时,必须先添加参照列,再添加外建列;删除表时,先删除外键列,再删除参照列。
事实上,很多公司宁愿产生脏数据也不愿用外键,因为处理起来很麻烦,比如添加、删除、修改。
7、自动编号 (自增)—-AUTO_INCREMENT

 id SMALLINT PRIMARY KEY AUTO_INCREMENT  

为了让数据唯一性,很多情况下,主键是不参与业务的,它只是作为一个标识。

自增属性还可以理解为有原子操作,因为在高并发情况下,多个线程会抢占资源,如果上次数据保存到第100个,下次保存时逻辑上从第101个开始。如果没有自增,多个线程同时抢到了第100个的资源,那么数据就保存错了。加了自增属性后,每次录入数据都会自增1,就能保证每个线程都是抢占到不同的记录资源,就不会出错。
值得注意的是,自增属性只对主键设置!

原创粉丝点击