day2-mysql基本命令和数据类型

库和表

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

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 TABLE student (
  stu_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  stu_name varchar(20) NOT NULL COMMENT '学生姓名',
  stu_age int(3) NOT NULL DEFAULT NULL COMMENT '学生年龄',
  stu_weight decimal(5,2) DEFAULT '0.00' COMMENT '体重',
  create_time datetime 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 from student;
#删除符合条件字段
delete from student where id = 1;

  查询语句

#查询所有表数据
select * from student;  
#查询指定字段的所有数据
select stu_name, stu_age from student;
#条件查询
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         两位数字表示的年份

 

 

 

posted on 2019-05-16 00:42  李双龙  阅读(1290)  评论(0编辑  收藏  举报

导航