创建表

create table 表名(
id int,
name char(18),
字段名3 类型[(宽度) 约束条件]
);

注意:

  • 在同一张表中,字段名是不能相同
  • 宽度和约束条件可选
  • 字段名和类型是必须的
  • 放在中括号里面的内容是可以不写的

创建一张学生表

create table student(id int,name char(18));

写入数据的方式
插入数据:插入一条数据

insert into student values(1,'alex');

插入数据:插入多条数据

insert into student values(2,'wusir'),(3,'大壮');

插入数据:指定写入某一个字段

insert into student (name) values('语文杨');
insert into student (id) values(4);

插入数据:另一种写法

insert into student (id,name) values(5,'语文杨');
insert into student (字段1,字段3) values(值1,值3);

查表中的数据

select * from 表名;

查看表结构

desc 表名;
能够查看到有多少个字段/类型/长度,但是看不到表编码,引擎,具体的约束信息也只能看到一部分
show create table 表名;
能够查看到字段/类型/长度/编码/引擎/约束。 但是格式不太直观

数据库03---数据库的常见操作和数据类型_数据库

mysql中的数据类型

数字
    TINYINT:(1个字节)简洁的整形,一个字节就能表示.一个字节就是8位(00000000-11111111)
    能表达256种情况。单纯的表示正整数。如果第一位表示符号了,那就剩下7位了。7位就能表示128种情况了。
    所以:TINYINT用一个字节,如果是有符号的整数,他能表示从(-128,127),如果是无符号的整数,他就能表示(0,255)
    如果想表示年龄,用TINYINT就行了。为了最节省空间,也严谨一点。

    SMALLINT:(2个字节)
    MEDIUMINT:
    INT或INTEGER:一般用这个就能表达了
    BIGINT:8个字节

    上面这些数字都是有符号的,就是有负数的。如果想没有负数。建表的时候,加unsigned约束一下就行

创建一张表
id是int类型的,age是tinyint 类型的且没有符号,都是正数。
默认是有符号的,如果需要定义无符号的使用unsigned

create table t1(id int,age tinyint unsigned);

插入数据

insert into t1 values(1,1);

插入完之后,是可以正常看到数据的

插入数据

insert into t1 values(-1,-1);

数据库03---数据库的常见操作和数据类型_数据库_02

插入边界数据

insert into t1 values(256,256);

数据库03---数据库的常见操作和数据类型_数据库_03

小数

Float:精确到小数点后面4,5差不多了
    float(255,30):小数点后面30位,一共255位
    float(5,2):小数点后面2位,一共5位。如:234.32
Double:可以精确到小数点后面更多的位数

创建一个表

create table t2(
    f1 float(5,2),      #保留两位小数,并四舍五入
    f2 float,
    f3 double(5,2),
    f4 double
);

插入数据

insert into t2 values(5.2336,5.2336,5.2336,5.2336);
select * from t2;

数据库03---数据库的常见操作和数据类型_数据库_04

insert into t2(f2,f4) values(5.1254789654545646,5.1254789654545646);

数据库03---数据库的常见操作和数据类型_数据库_05
大部分的时候用float的就可以了

创建一张表

create table t3(f1 float,d1 double,d2 decimal(30,20),d3 decimal);

数据库03---数据库的常见操作和数据类型_数据库_06
decimal默认是10位整数:decimal(10,0)

insert into t3 values(5.1254789654545646,5.1254789654545646,5.1254789654545646,5.1254789654545646);

数据库03---数据库的常见操作和数据类型_数据库_07

总结:
数据库03---数据库的常见操作和数据类型_数据库_08

int 不约束长度,最多表示10位数
float(m,n)
    m 一共多少位
    n 小数部分多少位

时间格式

前3个最多
data    20190620
time    231520(23点15分20秒)
datatime    20200331231520
year    范围:1901/2155
timestamp   1970-01-01 00:00:00/2038(几乎现在没人用了,时间快到期了)

创建一张表

create table t4(
    dt datetime,
    y year,
    d date,
    t time,
    ts timestamp
);

数据库03---数据库的常见操作和数据类型_数据库_09

insert into t4 values(now(),now(),now(),now(),now());

数据库03---数据库的常见操作和数据类型_数据库_10

insert into t4 values(20180808080808,2018,20180808,080808,20180808080808);

数据库03---数据库的常见操作和数据类型_数据库_11

insert into t4 (dt,d) values('2018-8-8 8:21:08','2018-8-8');

数据库03---数据库的常见操作和数据类型_数据库_12

update t4 set y=2016 where y=2020;

数据库03---数据库的常见操作和数据类型_数据库_13
这样就有一个好处,就是总是记录最后一次操作的时间
但是timestamp这个时间类型,快到期了,不用了。要是datetime有这个功能就好了
有办法:
数据库03---数据库的常见操作和数据类型_数据库_14

如下:

create table t5(
    id int,
    dt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
    #NOT NULL(不为空) DEFAULT CURRENT_TIMESTAMP(默认是当前时间) ON UPDATE CURRENT_TIMESTAMP(在更新的时候使用当前时间更新字段)

数据库03---数据库的常见操作和数据类型_数据库_15

字符串

char
varchar

char(18) 最多能表示255个字符(中英文最多能写255个)

  • 定长存储:比如存一个 alex 在库里是 alex后面加14个空格

  • 节省时间,但是浪费空间

varchar(18) 最多能表示65535个字符(中英文最多能写65535个)

  • 变长存储:比如存一个 alex 在库里是 alex4 后面4是这个字符的长度

  • 这个更节省空间,但是存储速度慢。(因为总是先计算多长才能取,先计算一下多长才能存进去)

什么时候适合用char

身份证号
手机号码
qq号(因为QQ有5位,6,7,8,9...)
username
password
银行卡号

适合用varchar的

评论
朋友圈
微博

创建一张表

create table t6(
    c1 char,
    v1 varchar(1),
    c2 char(8),
    v2 varchar(8)
);
insert into t6 values('alex        q','alex        q','alex        q','alex        q');

数据库03---数据库的常见操作和数据类型_数据库_16

数据库03---数据库的常见操作和数据类型_数据库_17

enum/set

  • enum 单选行为

  • set 多选行为

enum 单选行为
性别,国籍

create table t8(
    id int,
    name char(18),
    gender enum("male","female")    #限定只能写入"male"或"female"
);
insert into t8 values(1,"alex","不详");

数据库03---数据库的常见操作和数据类型_数据库_18
是写不进去的

set 多选行为

create table t9(
    id int,
    name char(18),
    hobby set("抽烟","喝酒","烫头")
);
insert into t9 values(1,"太白","喝酒,烫头");      #多选的时候,只能在引号里面,用逗号隔开
insert into t9 values(1,"太白","喝酒,喝酒,喝酒,烫头,打游戏");    #存的时候,会先去重,将不再里面的所有内容去掉

数据库03---数据库的常见操作和数据类型_数据库_19