数据库和数据表管理

本文主要介绍了如何在MySQL环境中进行数据库的创建以及数据表的建立,详细讲解了相关操作过程和约束设置。
摘要由CSDN通过智能技术生成
创建数据库和创建表
-----------------------
-- 数据定义语言
-- alter create drop
---------------------------
-- 创建数据库
-- create database 数据库名
create database test2
-- create database if not exists 数据库名
create database if not exists test2

-- drop database 数据库名
drop database test1

-- 表时数据库中的一个对象,是用来存放数据的

CREATE TABLE 表名(
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],[其他约束条件],
[其他约束条件]
)其他选项(例如存储引擎、字符集等选项)

-- mysql的数据类型
	-- 数据值类型
		-- 整型
			 -- BIT 位
			 -- INT -2147483648~2147483647
			
		-- 浮点型
			-- float:单精度  xxxx.0000
			-- double:双精度 xxxx.0000 0000
			-- DECIMAL: 定点数类型
	
	-- 字符类型 
			-- char :定长的字符串,用于已经规定长度的数据
			-- varchar:不定长的字符串
			-- text :大文本类型
	
	-- 日期类型
		-- DATE 年月日 例如'2012-01-01'
		-- DATETIME  日期和时间类型,例如'2012-01-01 12:00:00
		
	--  MySQL特殊字符序列
  -- \"中国好,真好\"
	


-- 创建表person表
	列名	     数据类型   长度
	用户编号	  int       10
	身份证     varchar		20
  姓名	     varchar 	  10
	年龄 				int       3
	性别				char      1
	身高 				DECIMAL   7,2
	生日				date
	状态 				INT				1			默认值 1						(是否是黑名单,0是黑名单  1可用)
	
	
	create table person(
		pid 				int(10),
		identifyid 	varchar(20),
		pname				varchar(10),
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)
	select * from person;
	
	-- 删除表
	-- drop table 表名
	drop table person;
	
	
	
  • 约束


		
	-- 约束:数据库的一个对象
	-- 约束: Constraint,是定义在表上的一种强制规则。
	-- 当为某个表定义约束后,对该表做的所有SQL操作都必须满足约束的规则要求,否则操作将失败。
	-- 定义约束: 在创表时给表中的列添加约束或者创完表之后追加约束
	
	-- 约束的分类:
		-- 非空约束:非空约束,指定某列的所有行数据不能包含空值
		-- 唯一约束:唯一性约束,指定列或者列的组合 的所有行数据必须唯一
		-- 主键约束:一个表的主键,一个表只能有一个主键,UNIQUE+not null
		-- 外键约束

		
		
		-- 非空约束:非空约束,指定某列的所有行数据不能包含空值
		create table person(
		pid 				int(10) not null,
		identifyid 	varchar(20),
		pname				varchar(10),
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)
	
	-- 唯一约束:唯一性约束,指定列或者列的组合 的所有行数据必须唯一
	-- ①给某列添加唯一约束后,默认为该列调加索引,优化查询速度:select * from person where pname='xxx'
	-- ②可以创建组合约束
	-- ③唯一约束的字段可以为空值(NULL),可以有多个null
	-- ④每一张数据表可以存在多个唯一约束字段。
	
		create table person(
		pid 				int(10) not null,
		identifyid 	varchar(20),
		pname				varchar(10) UNIQUE,
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)
-- 可以创建组合约束
create table person(
		pid 				int(10) not null,
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP,
		UNIQUE(identifyid,pname)
	)
	-- 主键约束:一个表的主键,一个表只能有一个主键,UNIQUE+not null
	-- 给某列添加唯一约束后,默认为该列调加索引,优化查询速度:select * from person where pname='xxx'
create table person(
		pid 				int(10) PRIMARY key,
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)
	
	-- AUTO_INCREMENT 字段 默认自增1 
	-- 注意:只有主键才能使用AUTO_INCREMENT
	create table person(
		pid 				int(10) PRIMARY key AUTO_INCREMENT,
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)
	
	-- 要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:
	create table person(
		pid 				int(10) PRIMARY key,
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)
	-- 外键约束:表与表之间的关联,一个表的列的数据来自于另一张表
	-- ①有外键约束的列的数据一定来至于主表,如果添加或更新的数据不再范围内会出现:未找到父项关键字
	-- ②一个表中可以有多个外键
	-- ③能作为外键的列一定是主键表中的主键或者唯一键
	-- ④有外键关联的主表不能被删除:已找到子类记录
		create table person(
		pid 				int(10) PRIMARY key,
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP,
		deptno      int(4),
		dname       varchar(14),
		empno 			int(4),
		FOREIGN key (deptno) REFERENCES dept(deptno),
		FOREIGN key (empno) REFERENCES emp(empno)
		
	)
	-- check 约束:检查性约束,添加或者更新的值必须在指定的范围内
	-- CHECK语句会被忽略,也意味着MySQL被没有实现这个功能
		create table person(
		pid 				int(10) PRIMARY key,
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3) check(page<100),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)
	-- check中使用in 
	create table person(
		pid 				int(10) PRIMARY key,
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3),
		psex				char(1) check(psex in ('男','女')),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP
	)

-- 复制表
-- 复制一个表结构的实现方法有两种。
-- 方式一:CREATE TABLE 新表名  LIKE 源表   约束不会被复制
	create table emp_bak like emp;
  select *from emp_bak;
	-- 方式二:CREATE TABLE 新表名 SELECT - FROM 源表
	create table emp_bak select * from emp where 1=0;
	-- 复制表结构和数据
	create table emp_bak select * from emp where 1=1;
	create table emp_bak select ename,empno from emp where 1=1;
	create table emp_bak select ename,empno from emp where deptno=10;
	--  表的重命名
	-- RENAME TABLE 旧表名 TO 新表名
	rename table emp_bak to emp_A
	-- 该命令等效于:ALTER TABLE 旧表名 RENAME 新表名
	
	-- 追加约束 
	-------------------
	-- alter table table_name add UNIQUE(column_name);
	------------------
	create table person(
		pid 				int(10),
		identifyid 	varchar(20) ,
		pname				varchar(10) ,
		page				int(3),
		psex				char(1),
		pheight     decimal(7,2),
		pbirthday		date,
		pstatus			int(1) default 1,
		time1 			DATETIME,
		time2       TIMESTAMP,
		deptno      int(4)
	)
	-- 追加唯一约束
	alter table person add UNIQUE(pname);
	-- 追加主键约束
	alter table person add PRIMARY KEY (pid);
	-- 追加外键约束
	alter table person add FOREIGN KEY(deptno) REFERENCES dept(deptno);
	
	----------------------
	-- 修改表
	-- alter table 表名 modify column 列名 数据类型 DEFAULT 默认值;
	------------------------
	-- 追加非空约束 :注意数据类型必须有
	alter table person modify column psex int(3) not null;
	-- 删除约束
	-- alter table table_name drop PRIMARY KEY;
	------------------------------------------
	alter table person drop index pname;
	-- 删除外键
	alter table person drop foreign key person_dept_fk;
	-- 删除非空约束
	alter table person modify column psex int(3);
	show create table person;
   drop table person;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值