SQL学习笔记(一) MySQL数据库的创建和使用(上)

这篇笔记介绍了《SQL学习指南》中关于MySQL数据库的创建、使用命令行工具、数据类型(字符型、数值型、时间型)以及如何创建表和使用约束(主键、外键)等内容。学习了如何通过source命令导入脚本,使用mysql命令行工具连接数据库,以及各种数据类型的特性,如char与varchar的区别,数值型的unsigned关键字。此外,还探讨了外键约束的概念和用途。
摘要由CSDN通过智能技术生成

本文为《SQL学习指南》一书的学习笔记,供自己记录查找使用。如有侵权可私信删除。

《SQL学习指南》Chap 2  MySQL数据库的创建和使用(一)


目录

一、创建MySQL数据库

二、使用MySQL命令行工具

三、数据类型

1.字符型

2.数值型

3.时间型

四、表的创建

创建表:create table语句.

CONSTRAINT 约束

外键

今天学到的命令小结:


一、创建MySQL数据库

数据库的创建:

 若要使用脚本,可以使用source语句将其导入:

mysql> source c:\temp\learningsql.sql;

二、使用MySQL命令行工具

可以同时指定用户名和所要使用的数据库,如下:

mysql -u Eileen -p bank

之后提示输入密码,再输入密码即可.

mysql>标记出现后可以运行SQL语句并查看结果,如果是->语句可以使用ctrl+c中止当前语句。

三、数据类型

1.字符型

char(20)      定长字符串( < 256 bites)

varchar(20)   变长字符串( < 65536 bites)

char与varchar的区别【面试】:

区别一,定长和变长

char 表示定长,长度固定,varchar表示变长,即长度可变。char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储,插入多长就存多长。因为其长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,以空间换取时间效率。varchar则刚好相反,以时间换空间。

区别之二,存储的容量不同

对 char 来说,最多能存放的字符个数 255,和编码无关。而 varchar 呢,最多能存放65535个字符。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65535字节。

如要存储更多,则要使用tinytext / text / mediumtext / longtext.

2.数值型

常用数据类型:

1.numeric  数值型

2.boolean  布尔型

3.整数:

4.浮点数:

在类型后可加入UNSIGNED关键字,来限制数值非负.对于整数来说,这个限制会改变存储数据的范围(如上表),而浮点数只是不允许存储负数,数值范围不改变.

如果规定了unsigned但存放了一个负数就会出现警告,得到的结果是字节数(所能存储最大整数+1,18446744073709551616)加上这个负数的值。

3.时间型

常用类型有:year   date    datetime    timestamp

timestamp和datetime存储的数据形式相同,但是timestamp有一个额外的好处:可以自动为当前列产生当前日期/时间,用以记录用户何时修改表中特定行.与此同时,其允许存储的时间数据范围比datetime小一些.

四、表的创建

创建表格.   设计→精化→构建SQL语句.

创建表:create table语句.

例:

CREATE TABLE person

(person_id  SMALLINT  UNSIGNED /*关键字,表明所存储的数据大于等于0 */,

fname VARCHAR(20),

iname VARCHAR(20),

gender CHAR(1),

birth_date DATE,

CONSTRAINT pk_person PRIMARY KEY (person_id)

);

最后这一行的constraint (约束)表明  以person_id作为表的主键.

CONSTRAINT 约束

        上一个语句中的约束成为主键约束(主键:primary key),它被创建在person_id这一列上,并被命名为pk_person.

        注意到还有一种类型的约束也非常有用。person表中,第三列只接受特定值(‘M’或‘F’),此时可增加一个检查约束,以限制该列仅存放被允许的值.在定义列时可以关联一个检查约束:

gender CHAR(1) CHECK (gender IN (‘M’,‘F’)),

        外键约束在后文进行介绍.

        MySQL中还有一种名叫enum的字符数据类型,将检查约束与数据类型定义融合在了一起:

gender ENUM (‘M’,’F’)

        当服务器返回消息‘Query OK, 0 rows affected’时,表明该语句没有语法错误.如下图所示.

        如果想查看这个表的各项属性,可以使用describe(desc)命令检查表的定义.

        describe产生的表展示了person表的属性。为这个表加入一些解释:

· Null列:表示该列是否允许在插入数据时被省略。

某些时候无法在插入数据时为表中某一列提供具体值,例如,在增加一条客户订单数据时,ship_date列还不能确定,则这列被设置为NULL(注意:设置为NULL与说它等于NULL有根本上的不同),以指明该列在插入数据时的缺失。NULL被用于各种不能赋值的情况,例如:a.业务上不可行;b.不知道应赋何值;c.集合为空。设计表时,默认各列允许为null, 对于不允许的列在类型后面加上not null关键字即可。

· Default列:如果在插入数据时忽略该列,是否向其提供默认值。这个表中person_id一列的默认值为0,但是只能起一次作用,因为这一列作为主键每一行的值都必须唯一。

外键

        对于使用外键,我们再创建一个food表进行说明,该表用以表示各人最喜爱的食物。

CREATE TABLE food

(person_id SMALLINT UNSIGNED,

food VARCHAR(20),

CONSTRAINT pk_person PRIMARY KEY (person_id,food),

CONSTRAINT fk_fav_food_person_id FOREIGN KEY(person_id)

REFERENCES person(person_id)

);

· 外键约束:限制了food表中person_id的值只能来自于person表。这种约束限制了无法向food表中添加person_id不在person表中的人的食物数据。而food列也因此成为主键。


今天学到的命令小结:

指定用户名和所要使用的数据库        mysql -u Eileen -p bank

创建表    create table xxx ( a  var(20) , b  smallint  unsigned);

constraint约束的使用:

主键约束    CONSTRAINT pk_person PRIMARY KEY (person_id),

检查约束    gender CHAR(1) CHECK (gender IN (‘M’,‘F’)),

                    可以用ENUM替代:gender ENUM (‘M’,’F’),

外键约束    CONSTRAINT fk_fav_food_person_id FOREIGN KEY(person_id)/*这个是food表中的列*/  REFERENCES person(person_id)/*参考person表中的person_id列,即表明把主键连接到哪里去*/

数值型,unsigned关键字表示非负


今天就是这些啦!一会儿出去散个步回来看嘉伦新剧《周生如故》,Byeヾ(•ω•`)o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值