数据库:一种可以存储数据单元的产品
- 库 databases- 表 tables- 字段 columns- 数据 data1、多库。多种数据库,为了实现多产品开发存在库中有多表。2、多表。多张表。为实现多模块开发所存在的,,表里面有数据。比如用户模块,user, user_coin, user_play , user_log,注意:表的命名方 式, 通常为:产品前缀_模块名_用处,比如:dz_user_plog。,不推荐大写,不推荐简短缩写。
3、字段。通常情况下是存在表中的,一般字段可以表示在这个表里所有相关的事物的行为。比如 tb_user 。字段可以有: user_id ,user_name , user_password , user_sex, user_coin , user_regtime, user_logintime一旦实现功能以后,表中的字段将会有数据。注意:字段可以有多种数据类型,包括:整型(tinyint smallint int bigint)、字符型( char varchar text)、日期型( date datetime )每一种的数据类型都会对应特定的字段业务。4、数据。数据的来源都会是外界的,MySQL只负责存储,查询,修改,删除数据,不会自动产生数据,除非写一些必要的语句。如存储过程。字段类型:=====》整型:
很小的整数。带符号的范围是-128到127。无符号的范围是0到255。smallint SMALLINT[(M)] [UNSIGNED] [ZEROFILL]小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。int INT[(M)] [UNSIGNED] [ZEROFILL]普通大小的整数。带符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。bigint [UNSIGNED] [ZEROFILL]大整数。带符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。====》字符型:
char 固定长度字符串,当保存时在右侧填充空格以达到指定的长度。M表示列长度。M的范围是0到255个字符。注释:当检索CHAR值时尾部空格被删除。如果想要将某个CHAR的长度设为大于255,执行的CREATE TABLE或ALTER TABLE语句将失败并提示错误.varchar VARCHAR(M) [BINARY]变长字符串。M 表示最大列长度。M的范围是0到65,535。(VARCHAR的最大实际长度由最长的行的大小和使用的字符集确定。最大有效长度是65,532字节)。注释:MySQL 5.1遵从标准SQL规范,并且不删除VARCHAR值的尾部空格。VARCHAR是字符VARYING的简写。BINARY属性是指定列的字符集的二元 校对规则的简写。排序和比较基于数值字符值。VARCHAR保存时用一个字节或两个字节长的前缀+数据。如果VARCHAR列声明的长度大于255,长度前缀是两个字节。text TEXT[(M)]最大长度为65,535(2^16–1)字符的TEXT列。可以给出可选长度M。则MySQL将列创建为最小的但足以容纳M字符长的值的TEXT类型。===》日期类型:
DATE日期。支持的范围为'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式显示DATE值,但允许使用字符串或数字为DATE列分配值。DATETIME日期和时间的组合。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。TIMESTAMP[(M)]时间戳。范围是'1970-01-01 00:00:00'到2037年。tableTIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。TIMESTAMP值返回后显示为'YYYY-MM-DD HH:MM:SS'格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。
========== 限定符号 ===========
null 表示该字段可以为空not null 表示该字段不能为空default 表示该字段默认值,即不填写的时候的值auto_increment 表示自增长键,一般用于主键,一旦用了该限定符表示主键,那么主键可以不需要自主插入数据,自动增加插入。primary_key 一般表示可以区分该表唯一数据的键。比如身份证号。因此我们可以认为在每一个表里,都需要有至少一个主键。foreign_key 外键。一般用于本表和外表的关联关系的键,比如用户表,和用户日志。现在我如果需要删除这个用户,那么很容易想到,一旦我删除了,我的日志肯定也要删除,这个时候就需要关联到其他的表去操作。注意:外键有一个很大局限性:很慢。==========DDL:数据库定义语言,用于基础数据库去操作的SQL语句。
如:create ,drop , alter
create / drop / alter
- 创建数据库
create database 数据库名;
- 删除数据库
drop database 数据库名;
- 查询数据库
show databases;
- 切换数据库
use 数据库名;
- 创建表
create table 表名(
id int not null primary key,
name varchar(30) not null,
password varchar(32) not null,
regtime datetime not null
);
- 删除表
drop table 表名;
- 查表
show tables;
- 查表的数据结构
desc 表名;
- 删除表中某一列
alter table 表名 drop 列名称;
- 增加列
alter table 表名 add 列名称 修改限定;
- 重命名表
alter table 表名 rename 新表名;
DML:数据库操作语言,用于操作数据库中的表的SQL语句。
如:select ,insert , update ,delete
select 查:select *(或者字段名) from 表名
insert 增: insert into 表名(字段名) values( 值 )
注意:
1、一般表中,主键都是自增长的,因此在插入的时候的不需要填写某个主键,也就是说不需要插入值。
insert into user( name ) values ( 2 );
2、插入数据的时候,如果是整型字段,是不允许其他类型数据插入。如果是字符串,是允许其他类型插入的。
3、多条数据插入。insert into users(字段名) values (值1),(值2) 注意:内存情况!
update 改: update 表名 set 字段名 = 值
delete 删:
1、delete from 表名(自增长ID不会消失记录)
2、truncate table 表名(自增长ID会消失记录)
条件判断:where 。用于操作某一区间的数据。
比如:
1、update 表名 set 列 = 新值 where 列 = 值
2、select * from 表名 where 列 = 值
3、delete from 表名 where 列 = 值
NOW() 显示现在时间
as 别名
select NOW() as ''
聚合语句:
1、group by 分组。 一般用于分组数据查看。比如:select * from user group by regtime;
2、order by 排序。一般用于数据排序,也经常用于分页业务( 与limit 混合使用 )
比如:select * from user order by id desc(倒序,asc) limit 从第几个开始,每页显示几个。
1、limit 一般要放在SQL最后。
2、order by 和 group by 他们之间有仇,一定要分开。