USE vain;
CREATE TABLE copy LIKE stu;#仅仅只能复制表的结构
CREATE TABLE copy2 (SELECT * FROM stu);#复制表的结构+数据
CREATE TABLE copy3 (SELECT sno,sname FROM stu WHERE 1=0);#只复制部分结构不复制数据
ALTER TABLE copy3 DROP COLUMN sname;
/*
数值型:
整形
浮点型
定点型
字符型:
较短的
*/
/*日期型
date只保存日期
time 只保存时间
year 只保存年
datetime 保存日期+时间
timestamp保存日期+时间
特点:
字节 范围 时区等影响
datetime 8 1000-9999 不受
timestamp 4 1970-2038 受
*/
CREATE TABLE tab_data(
t1 DATETIME,
t2 TIMESTAMP
);
INSERT INTO tab_data VALUES(NOW(),NOW());
SELECT * FROM tab_data;
#常见约束
/*
含义:一种限制,用于限制表中的数据,为了最终保证表中的数据的准确性
分类:六大约束
NOT NULL: 非空,用于包装
比如姓名,学号等
default:默认,用于保证该字段有默认值
比如性别
primary key:主键约束,用于保证该字段值具有唯一性,并且非空
比如学号,员工编号等
unique:唯一,用于保证该字段的值具有唯一性,可以为空
比如座位号
check:检查约束【mysql中不支持】
比如年龄性别
foreign key外键:用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值
在从表加个外键约束,用于引用主表中某列的值
比如学生表的专业编号,员工表的部门编号
*/
#创建表时添加约束
#1.添加列级约束
USE vain;
CREATE TABLE stuinfo (
id INT PRIMARY KEY,
#主键
stuName VARCHAR (20) NOT NULL,
#非空
gender CHAR(2) CHECK (gender = '男'
OR gender = '女'),
#检查约束
seat INT UNIQUE,
#唯一
age INT DEFAULT 18
#默认约束
) ;
#2.添加表级约束
/*
语法:在各个字段的最下面
【constraint 约束名(约束名可以不起)】 + 约束类型 (约束字段)
*/
DROP TABLE IF EXISTS `stuinfo`;
CREATE TABLE major
(
id INT PRIMARY KEY,
majorName VARCHAR(20)
);
CREATE TABLE IF NOT EXISTS stuinfo (
id INT,
stuname VARCHAR (20),
gender CHAR(2),
seat INT,
age INT,
majorid INT,
CONSTRAINT pk PRIMARY KEY (id),
#主键
CONSTRAINT uq UNIQUE (seat),
#唯一
CONSTRAINT ck CHECK (gender = '男'
OR gender = '女'),
#检查
CONSTRAINT fk FOREIGN KEY (majorid) REFERENCES major (id) #外键
) ;
SHOW INDEX FROM stuinfo;
#主键和唯一的区别
/* 保证唯一性 是否为空 一个表中可以有多少个 是否运行组合
主键 1 0 至多有一个 可以,但不推荐
唯一 1 1 可以有多个 可以,但不推荐
*/
MySQL 基础+高级篇- 数据库 -sql -尚硅谷 111-128章
猜你喜欢
转载自blog.csdn.net/yangzijiangac/article/details/106960737
今日推荐
周排行