库和表

库是用来存表的。一个数据库管理系统中可能包含若干个数据库。一个库中可以存放多个表,表类似于一个表格,有规律和格式的存储数据。

mysql安装好后系统自带的库有

information_schema:是一个信息数据库,它保存着关于MySQL服务器所维护的所有其他数据库的信息。(如数据库名,数据库的表,表栏的数据类型与访问权 限等。)

mysql:mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。(常用的,在mysql.user表中修改root用户的密码)。

performance_schema:主要用于收集数据库服务器性能参数。

sys:Sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容。让DBA更快的了解DB的运行情况。

操作库的命令

查询库

show databases;

新增库

create database ;

删除库

drop database ;

使用库

use ;

操作表命令

查询库中的表

show tables;

创建表

CREATE TABLEstudent (

stu_idint(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,

stu_namevarchar(20) NOT NULL COMMENT '学生姓名',

stu_ageint(3) NOT NULL DEFAULT NULLCOMMENT '学生年龄',

stu_weightdecimal(5,2) DEFAULT '0.00' COMMENT '体重',

create_timedatetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间') ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 COMMENT='学生信息表';

相关字段描述

NOT NULL

字段不能为空

AUTO_INCREMENT

自动增长

PRIMARY KEY

主键,唯一用来标识数据行的,它是不能为空的,最好每个表都要设置一个主键

COMMENT

字段描述

DEFAULT

默认值

CURRENT_TIMESTAMP

当前时间戳

ENGINE=InnoDB

数据库储存引擎

UNIQUE

数据内容不能重复

UNSIGNED

无符号,主要是用在数值字段上修饰,不能为负数

查看表结构信息

desc ;

查看表创建

show create table ;

删除表

drop table ;

表重命名

RENAME TABLE 原名 TO新名;ALTER TABLE原名 RENAME 新名;ALTER TABLE 原名 RENAME TO 新名;

修改表字段

#添加一列ALTER TABLE 表名字 ADD列名字 数据类型 约束;

#删除一列ALTER TABLE 表名字 DROP列名字;

#修改一列ALTER TABLE表名字 CHANGE 原列名 新列名 数据类型 约束;

#改变数据类型ALTER TABLE 表名字 MODIFY 列名字 新数据类型;

操作数据命令

添加数据

#根据列插入数据

insert into student (stu_name, stu_age) values (’李贵’,20);

#根据表字段插入输入insert into student values (1,’李贵’,20,60.70,’2019-05-16 00:26:16’);

删除数据

#删除所有字段delete fromstudent;

#删除符合条件字段delete from student where id = 1;

查询语句

#查询所有表数据select * fromstudent;

#查询指定字段的所有数据select stu_name, stu_age fromstudent;

#条件查询select * from student where stu_sex = '男';select * from student where stu_age > 20;

注意:* 代表所有字段

修改数据

update student set stu_age=20,stu_name='张三' where id = 1;

注意:没有where条件会将该表所有数据都修改

添加约束

添加主键约束

alter table 表名 add constraint pk_student primary key 表名(主键字段);

删除主键约束

alter table 表名 drop primary key;

添加唯一约束

alter table 表名 add unique key 约束名 (字段);

数据类型

整数型

mysql 一个数据库一个用户 mysql一个数据库多少个表_表名

小数型

float         浮点型,数值范围为-3.4E38~3.4E38(7个有效位)

double     双精度实型,数值范围-1.7E308~1.7E308(15个有效位)

decimal    数字型,128bit,不存在精度损失,常用于银行帐目计算。(28个有效位)

例如:price decimal(5,2) 该表达式的取值范围是-999.99~999.99

字符串类型

char         长度255

varchar    长度65535

CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。 CHAR列的长度固定为创建表时声明的长度。当保存CHAR值时,

在它们的右边填充空格以达到指定的长度,而varchar是根据字符串实际长度保存。如果varchar都不够存可以使用text和longtext

时间类型

时间类型DATE, DATETIME

MySQL以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值

比较日期的大小可以使用比较运算符

select * from student where s_begin > '2004-01-01';

select sysdate() '系统时间';select now()    '当前时间';select curdate() '当前日期';select curtime() '当前时分秒';

sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

select now(), sleep(3), now();select sysdate(), sleep(3), sysdate ();

被格式化的时间

select DATE_FORMAT(now(),'%Y/%m/%d %T') ;

根据format字符串格式化date值:

%S, %s   两位数字形式的秒( 00,01, ..., 59)

%I, %i     两位数字形式的分( 00,01, ..., 59)

%H          两位数字形式的小时,24 小时(00,01, ..., 23)

%h          两位数字形式的小时,12 小时(01,02, ..., 12)

%k          数字形式的小时,24 小时(0,1, ..., 23)

%l           数字形式的小时,12 小时(1, 2, ..., 12)

%T         24 小时的时间形式(hh:mm:ss)

%r          12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)

%p         AM或PM

%W        一周中每一天的名称(Sunday, Monday, ..., Saturday)

%a         一周中每一天名称的缩写(Sun, Mon, ..., Sat)

%d         两位数字表示月中的天数(00, 01,..., 31)

%e         数字形式表示月中的天数(1, 2, ..., 31)

%D        英文后缀表示月中的天数(1st, 2nd, 3rd,...)

%w        以数字形式表示周中的天数( 0 = Sunday, 1=Monday, ..., 6=Saturday)

%j          以三位数字表示年中的天数( 001, 002, ..., 366)

%U        周(0, 1, 52),其中Sunday 为周中的第一天

%u         周(0, 1, 52),其中Monday 为周中的第一天

%M        月名(January, February, ..., December)

%b         缩写的月名( January, February,...., December)

%m        两位数字表示的月份(01, 02, ..., 12)

%c         数字表示的月份(1, 2, ...., 12)

%Y        四位数字表示的年份

%y         两位数字表示的年份