库和表
库是用来存表的。一个数据库管理系统中可能包含若干个数据库。一个库中可以存放多个表,表类似于一个表格,有规律和格式的存储数据。
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 约束名 (字段);
数据类型
整数型
小数型
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 两位数字表示的年份