数据库的简单操作

创建数据库
CREATE DATABASE 1707DB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
查看创建好的数据库的定义
show create database 1707DB;
查看所有存在的数据库
show databases;
删除数据库
drop database dabase_name;
drop table if exists dabase_name;
创建数据表
create table s_emp(
    id int(4) not null auto_increment,
    name varchar(8) not null,
    age int(3),
    primary key (id)
);
使用主键
  • 主键,又称主码,是表中一列或多列的组合.主键约束(primary key constraint)要求主键列表唯一,并且不允许为空。主键能够唯一的标识表中的一条记录,可以结合外检来定义不同数据表之间的关系。并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,他们之间是一一对应的。主键分为两种,单字段主键和多字段联合主键
  1. 单字段主键

主键由一个字段组成,SQL语句格式分为以下两种。

(1)在定义的同时制定主键,语法规则

字段名 数据类型 PRIMARY KEY[默认值]
create table tb_emp2(
   id int(11) primary key,
   name varchr(25),
   deptId int(11),
   salary float
);

(2)在定义完所有的列之后指定主键

[CONSTRAINT<约束名>]|PRIMARY KEY
create table s_emp(
    id int(4) not null auto_increment,
    name varchar(8) not null,
    age int(3),
    primary key (id)
);
  1. 多字段联合主键

主键由多个字段联合组成,语法规则如下:

PRIMARY KEY[字段1, 字段2] 

定义数据表tb_emp,假设表中没有id,为了唯一确定一个员工,可以把name、deptId联合起来作为主键

create table tb_emp4(
    name VARCHAR(25),
    deptId INT(11),
    salary FLOAT,
    PRIMARY KEY(name, deptId)
);

使用外键约束

外键用来在两个表之间建立连接,他可以是一列或者多列。一个表可以有一个或者多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空,则么一个外键值则必须等于另一个表中的主键的某个值。

外键:首先他是表中的一个字段,他可以不是本表中的主键,但对应另外一个表的主键。外键主要作用就是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有与关联的行。

创建外键的语法规则:

[CONSTRAINT<外键名>]FOREING KEY 字段名1 [,字段名2] REFERENCES<主表名> 主键列1 [,主键列2,。。。]
使用非空约束
NOT NULL
唯一约束

(1)定义完列之后直接定义约束

字段名 数据类型 UNIQUE

(2)在定义完所有列之后指定唯一约束

[CONSTRAINT<约束名>] UNIQUE(<字段名>)

==使用默认约束==

字段名 数据类型 DEFAULT 默认值

==设置表的属性值自动增加==

字段名 数据类型 ATUO_INCREMENT

默认的自增字段id的值从1开始,每次添加一条新纪录,该值就会增加1.

查看数据表结构

DESCRIBE/DESC语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。语法规则:

DESCRIBE 表名; 或者 DESC 表名;
+--------+-------------+------+-----+---------+-------+

| Field  | Type        | Null | Key | Default | Extra |

+--------+-------------+------+-----+---------+-------+

| id     | int(11)     | NO   | PRI | NULL    |       |

| name   | varchar(25) | YES  |     | NULL    |       |

| deptId | int(11)     | YES  | MUL | NULL    |       |

| salary | float       | YES  |     | NULL    |       |

+--------+-------------+------+-----+---------+-------+
  • NULL表示该列是否可以为空
  • key表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多洗
  • Default表示该列是否有默认值
  • Extra表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等

==查看表详细结构语句==

SHOW CRATE TABLE<表名\G>;

如果不加“\G”参数,显示的结果可能非常混乱,加上参数“\G"之后,可使显示结果更加直观,易于查看

修改数据表

==修改表名==

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

==修改字段数据类型==

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

==修改字段名==

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>

==添加字段==

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];

FIRST或者AFTER已存在的字段名,用于指定新增字段在表中的位置,如果SQL语句中没有这两个参数,则默认将新增将的字段设置为数据表的最后列

==删除字段==

ALTER TABLE <表名> DROP <字段名>

==修改字段的排列位置==

ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>

==更改存储引擎==

ALTER <表名> ENGINE=<更改后的存储引擎名>

==删除表的外键约束==

ALTER TABLE <表名> DROP FOREIGN KEY <外键约束>

==删除没有关联的表==

DROP TABLE [IF EXISTS] 表1,表2.。。

数据类型和运算符

数据类型 说明 存储需求 有符号 无符号
TINYINT 很小的整数 1个字节 -128~127 0~255
SMALLINT 小的整数 2个字节 -32768~32767 0~65535
MEDIUMINT 中等大小的整数 3个字节 -8388608~8388607 0~16777215
INT(INTEGER) 普通大小的整数 4个字节 -2147482648~2147483647 0~4294967295
BIGINT 极大整数值 8个字节 -9233 372036854775808~9223372036 854775807 0~18446744073709551615
FLOAT 单精度浮点数 4个字节 -3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38)
DOUBLE 双精度浮点 8个字节 -1.797 693 134 862 315 7 E+308 ~2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E-308 0 和 2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308

日期和时间

类型 大小(字节) 范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符串数据类型

数据类型 说明 存储需求
CHAR(M) 固定长度非二进制字符串 M字节,1<=M<=255
VARCHAR(M) 边长非二进制数字 L+1字节,在此L<=M和1<=M<=255
TINYTEXT 非常小的非二进制字符串 L+1字节,在此L<2^8
TEXT 小的非二进制字符串 L+2字节,在此L<2^16
LONGTEXT 大的非二进制字符串 L+4字节,在此L<2^32
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容