标签:variables 表格 命名 stun 选择 col text add 标识
方式1:
insert into 表名(列名1,......)
values(值1,......)
方式2:
insert into 表名(列名1,......)
values(值1,......),
values(值1,......),
......
方式3:
insert into 表名()(
select ....;
)
方式4:
insert into 表名
set 列名=值,
......
update 表名
set 列名=值,......
[where 筛选条件]
sql92语法:
update 表1 别名,表2 别名
set 列=值,..: ..
where 连接条件 and 筛选条件;
sql99语法:
update 表1 别名
[inner/left/right] join 表2 别名 on 连接条件
set 列=值,......
where 筛选条件;
delete from 表名
[where 筛选条件]
不加筛选条件即删除整表
多表删除 和更新类似
删除全表:truncate table 表名
truncate和delete对比:
关键字 | 说明 |
---|---|
create | 创建 |
rename | 重命名 |
alter | 修改 |
drop | 删除 |
if/if not exists | 判断存在 |
选择数据库:
use 数据库名;
创建数据库:
create datebase 库名
create datebase if not exists 库名 先判断数据库是否存在
修改库:
rename database 旧库名 to 新库名 5.1.7存在,已废弃
更改库字符集:
alter database 库名 character set 字符集
删除库:
drop database if exists 库名
创建表:
create table 表名(
列名 类型 [约束] [约束] ...,
....,
)
修改表名:
alter table 旧表名 rename to 新表名
删除表:
drop table 表名
表复制:
# 仅仅复制表结构
create table 表名 like 被复制的表名;
# 复制表结构和数据,加where可限定复制部分数据
create table 表名 select * from 被复制的表名;
# 复制表的某些字段
create table 表名 select 字段1,... from 被复制的表名 where 0;
格式:alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;
修改列名:
alter table 表名 change column 旧列名 新列名 [类型]
修改列的类型或约束:
alter table 表名 modify column 列名 新类型
添加新列:
alter table 表名 add column 列名 类型
删除列:
alter table 表名 drop column 列名
创建表时定义字段类型说明:
整型:Tinyint、Smallint、editmint、Int/Integer、Bigint
小数:
浮点数: Float(M,D)、Double(M,D)
定点数: DEC(M,D)/DECIMAL(M,D)
选择类型原则:所选择的类型越简单越好,能保存数值类型越小越好
短文本:Char(M)、Varchar(M)
长文本:Text(文本)、Blob(较大的二进制)
其他:Binary、Varbinary、Enum、Set
Binary、Varbinary用于保存较短的二进制
Enum即枚举,Set即集合,在创建表格时指定只能插入的数据
日期:Date、Datetime、Timestamp(时间戳)、Time、Year
Datetime范围1000-9999,Timestamp范围1970-2038
Datetime不受时区影响,Timestamp受时区影响,
更换时区:
set time_zone = 时区
关键字 | 约束名 | 说明 |
---|---|---|
NOT NULL | 非空 | 保证该字段不能为null。如:姓名、学号 |
DEFAULT | 默认值 | 如果插入没规定其他值,会添默认值。如:性别 |
UNIQUE | 唯一 | 保证值唯一性,可为空。如:座位号 |
PRIMARY KEY | 主键 | 本表主要的列可做主键 |
FOREIGN KEY | 外键 | 关联其他表格,限制两表关系,本表字段值必须是其他表字段值(一般是其他表的主键列) |
CHECK | 检查 | 自定义检查约束限制条件(mysql不支持)。 |
添加约束时机:
列级约束:
表级约束:
例如:创建表添加约束
# 添加列级约束
CREATE TABLE stuinfo (
id INT PRIMARYKEY, # 主键 主键默认必须非空,唯一
stuName VARCHAR(20) NoT NULI, # 非空
gender CHAR(1) CHECK(gender=‘男‘ OR gender =‘女‘),# 检查
seat INT UNIQUE, # 唯一
age INT DEFAULT 18, # 默认约束
majorid INT FOREIGN KEY REFERENCEs major(id) # 外键 引入major表的id字段
)
# 添加表级约束 格式:字段下面添加 [constraint约束名] 约束类型(字段名)
CREATE TABLE stuinfo (
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,
CONSTRAINT pk PRIMARY KEY(id),# 主键
CONSTRAINT uq UNIQUE(seat), # 唯一键
CONSTRAINT ck CHECK(gender=‘男‘OR gender=‘女‘),# 检查
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) # 外键
);
列级约束和表级约束有什么区别?
约束范围不一样
列级约束是定义在列属性中的,而表级约束是定义在列之后的,两者本质上没什么区别
如果约束需要同时对多列进行约束那么就只能采用表级约束,因为表级约束面向的是表(当然就包括所有列)
列级约束只能针对该列进行约束。如:gender字段中check约束
什么时候用列级,什么时候用表级?通用写法:
修改表时删除约束
# 1.期制除非空约束
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
# 2.删除默认约束
ALTER TABLE stuinfo MODIFY COLUMN age INT ;
# 3.册除主键
AITER TABLE stuinfo DROP PRIMARY KEY;
# 4.册除唯一
AITERT ABLE stuinfo DROP INDEX seat;
# 5.删除外键
AITER TABLE stuinfo DROP FOREIGN KEY 外键名
标识列又称自增长列。
可以不用手动插入值,系统提供默认的序列值。
# 建表时设置标识列
CREATE TABLE tab_identity(
id INT PRIMARY KEY AUTO_INCREMENT, # AUTO_INCREMENT标识自增长
name VARCHAR(20)
);
# 查看系统自增量,每次增加步长的值
SHOW VARIABLES LIKE ‘%auto_inerement%‘;
标识列必须和主键搭配吗?
标签:variables 表格 命名 stun 选择 col text add 标识
原文地址:https://www.cnblogs.com/xiaoaiying/p/14349882.html