数据库和表的概念
1,数据库的概念:存储数据的容器(对比仓库去理解),、
2,表的概念:真正的存储单元
3,数据库与表的关系:一对多的关系,一个库里通常维护了多个表
MySQL是关系型数据库(每个表都存在关联)开源免费
Oracle:付费软件
SQL:
概念
SQL:结构化查询语言,Structured Query Language。
SQL是用于访问和处理数据库的标准计算机语言
SQL是弱语法,不区分大小写和单双引号
SQL能做什么?
1,创建数据库,表,视图,存储过程等数据库对象
2,数据库记录的增删改查
1,打开数据库
语法:service mysqld start;
2,退出数据库
语法:quit/exit/Ctrl+C,
3,查看所有数据库
语法:show databases;
4,创建数据库
语法:create database 数据库名称
示例:创建数据库
create database future;
create database if not exists python_ai_test default charset utf8 collate utf8_general_ci;
5,使用某个数据库
语法:use 数据库名称;
示例:use mysql; 使用名为mysql的数据库
6,创建表
语法
create table<表名>
(
<字段名1><类型1>
<字段名2><类型2>
.....
<字段名n><类型n>
) DEFAULT CHARSET =utf8;(可省略不写,为了防止中文乱码)
解释
①,create:创建
②,table:表
③,字段名:用来标示表的一列
④,字段类型:用来声明每一个字段存储数据的类型,因为在mysql中,数据是有类型的(整型,小数,字符,时间)
⑤,字符集:UTF8,用来指定表支持中文数据存储
示例:创建项目对应的会员表:member(切记不可用中文输入法!!!)
主键
主键是什么?它有什么特征
1,主键字段存储的值不能重复,因此主键可以唯一标识一行数据。
2,一个表只能有一个主键
3,主键自动设置为NOT NULL(非空)
补充 :
NULL ,字段值可为空
NOT NULL,字段值不为空
同一个字段不可能既为NULL,又为NOT NULL。
在创建数据表的时候,如果字段值为空,可以写NULL,也可省略,不写的话默认为空(如果为空可赋值也可不赋值)
4,主键是非必须的,也就是说一个表可以不声明主键字段
语法
<字段名><类型>primary key
补充:
1,自动编号: AUTO_INCREMENT(INCREMENT:增加,增长)
(1)必须与主键PRIMARY KEY组合使用,否则会报错。
(2)默认情况下,起始值为1,每次的增量为1,可不进行赋值,可保证记录唯一性)
但是一旦数据手动更改为指定数字,那么下一个的排序是从指定数字的下一位开始,切记!!!
(3)而PRIMARY KEY 可以不和AUTO_INCREMENT一起使用,可以被赋值但是不允许有相同值的出现
(4)COMMENT:备注,后面可以跟双引号,也可以跟单引号
7,查看帮助
语法:help xxx;
例:help create;
常见的字段类型
每个字段都有自己的类型,如整数型,字符型,时间类型,日期类型,浮点型等。下面介绍常用的数据类型。
整型
int:整数,取值范围为:-2147483648~2147483647
扩展:无符号的数不能为负数,有符号的可以为负数
有符号值(位):数字的最高位用0或1来表示数字是正数还是复数。
无符号值(位):不存在复数的情况,永远是正数。
无符号位的存储范围是有符号位的两倍。
要选择合适的数据类型,而不是最大的数据类型。如年纪选TINYINT即可,也省去字节。
字符串型
char(n):n个字符,最多255个字符,固定长度(没达到指定长度后面用空格来补齐)
例:char(5),但是写值的时候只写了abc,在存储时除了将abc存好,后面还补充了2个空格
varchar(n)['vɑːkə]:可变长度,最多65535个字符(存什么就是什么,会根据保存字符去调整长度)
例:varchar(10),但是写值得时候只写了abc,在存储的时候就只保存 3个字符
时间和日期
data:日期,格式(yyyy-mm-dd,例如:2016-08-22)
支持2位或者4位(默认4位),默认1970年到2069年之间的一个日期
time:时间,格式(hh:mm:ss,例如:18:40:37)
datatime:日期时间,格式(yyyy-mm-dd hh:mm:ss,例如:2016-08-12 18:31:23,可用来保存注册日期)
浮点型
float(m,d):单精度浮点型,32bit(4字节),m代表总位数,d小数位,如99.99声明类型为:float(4,2)
double(m,d):双精度浮点小,64bit(4字节),m代表总位数,d小数位。
区别:双精度类型能表示的小数的精确度更高。
decimal(m,d)[ˈdesɪml]:数字型,128bit,m代表总位数,d小数位(一般公司不用,金融类公司用的较多)
decimal数据类型用于精度要求非常高的计算中,比如语句DECIMAL(7,3)规定了存储的值不会超过7位数字,并且小数点后不超过3位。(用前两个可能会丢失精度)
补充:
1字=2字节(1 word = 2 byte)
1字节=8位(1 byte = 8bit) ,8bit就是8位,最大存储范围就是8个1,8个1的存储范围就是255,就是2的8次方
unsigned表示无符号,也就是非负数,只能用于整型数据。