mysql数据库操作(九)

版权声明:版权由我个人所有,未经允许不得用于除学习外的其他用途,望周知。 https://blog.csdn.net/weixin_44515563/article/details/89473071

#DDL

数据定义语言

库和表的管理
一、库的管理
创建、修改、删除
二、表的管理
创建、修改、删除

创建:create
修改:alter
删除:drop

一、库的管理 1、库的创建

语法:

	create database 库名;

#案例:创建库Books;

CREATE DATABASE IF NOT EXISTS books;

#2.库的修改

库名的修改有可能造成其他问题,一般不修改。

#更改库的字符集

ALTER DATABASE books CHARACTER SET gbk;

#3.库的删除

DROP DATABASE IF EXISTS books;

#二、表的管理

#1.表的创建

create table 表名(
	列名 列的类型【(长度)约束】,
	列名 列的类型【(长度)约束】,
	列名 列的类型【(长度)约束】,
	.............
	列名 列的类型【(长度)约束】  【注意最后没有分号,是个坑】
)

#案例:创建表Book

CREATE TABLE book(
	id INT,#编号
	bName VARCHAR(20),#图书名
	price DOUBLE,#价格
	authorId INT,#作者编号
	publishDate DATETIME#出版日期
);

DESC book;

#案例:创建表author
CREATE TABLE IF NOT EXISTS author(
id INT,
au_name VARCHAR(20),
nation VARCHAR(10)

扫描二维码关注公众号,回复: 6165307 查看本文章

);
DESC author;

#2.表的修改

alter table 表名 add|drop |modeify|change column 列名 【列类型 约束】;

#1.修改列名
ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME

#2.修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;

#3.添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;

#4.删除列名
ALTER TABLE author DROP COLUMN annual;

#5.修改表名

ALTER TABLE author RENAME TO book_author;

DESC book_author;

#3.表的删除、

DROP TABLE IF EXISTS book_author;
	
SHOW TABLES;

#通用的写法:

DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;

DROP TABLE IF EXISTS 旧表名;
CREATE TABLE 表名();

DESC author;

#4.表的复制

INSERT INTO author VALUES
(1,'村上春树','日本'),
(2,'莫言','中国'),
(3,'冯唐','中国'),
(4,'金庸','中国');

SELECT * FROM author;

#1.仅仅复制表的结构

CREATE TABLE copy LIKE author;

#2.复制表的结构+数据

CREATE TABLE copy2
SELECT * FROM author;

#3.只复制部分数据

CREATE TABLE copy3
SELECT id,au_name
FROM author
WHERE nation='中国';

SELECT * FROM copy3;

#4.仅仅复制某些字段

CREATE TABLE copy4
SELECT id,au_name
FROM author
WHERE 0;

SELECT * FROM copy4;

#1.创建表dept1

USE test;

CREATE TABLE dep1(
	id INT(7),
	NAME VARCHAR(25)
);

#2.将表departments中的数据插入新表dept3中

CREATE TABLE dept3
SELECT department_id,department_name
FROM myemployees.`departments`;

SELECT * FROM dept3;

#3.创建emp5

CREATE TABLE emp5(
	id INT(7),
	first_name VARCHAR(25),
	last_naem VARCHAR(25),
	dept_id INT(7)

);

SELECT * FROM emp5;

#4.将last_name 的长度增加到50

ALTER TABLE emp5 MODIFY COLUMN last_naem VARCHAR(50);

#5.根据表employees创建employees2

CREATE TABLE employees2 LIKE myemployees.employees;

#6.删除表

DROP TABLE emp5;

#7.将表employees2重命名为emp5

ALTER TABLE employees2 RENAME TO emp5;

#8.在表dept和emp5中添加新列test_column,并检查所做的操作

ALTER TABLE emp5 ADD COLUMN test_column INT;

#9.直接删除表emp5中的列dept_id

DESC emp5;
ALTER TABLE emp5 DROP COLUMN email;

常见的数据类型

数值型:
	整型
	小数:
		定点数
		浮点数
字符型:
	较短的文本:char、varchar
	较长的文本:text、blob(长的二进制数据)

日期型:

一、整型

在这里插入图片描述

分类:
tinyint  smallint  mediumint  int/integer  bigint
  1         2          3          4           8
  
特点:
	1.如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
	2.如果插入的数值超出了整形的范围,会报out of range 异常,并且插入临界值
	3.如果不设置长度,会有默认的长度,长度代表了显示的最的宽度,如果不够会用0左边填充,但必须搭配zerodill使用!

#如何设置无符号和有符号

DROP TABLE IF EXISTS tab_int;
CREATE TABLE tab_int(
	t1 INT,
	t2 INT UNSIGNED
);

DESC tab_int;

INSERT INTO tab_int VALUES(-12354);

二、小数

在这里插入图片描述

分类:
1.浮点型
float(M,D)
double(M,D)
2.定点型
dec(M,D)
decimal(M,D)

特点:
1.M和D
	M:整数部位+小数部位
	D:小数部位
	如果超过范围,则插入临界值
2.M和D都可以省略
如果是decimal,则M默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度。
3.定点型的精确度较高,如果要求插入的精度较高如货币运算等则考虑使用


CREATE TABLE tab_float(
	f1 FLOAT(5,2),
	f2 DOUBLE(5,2),
	f3 DECIMAL(5,2)
);
SELECT * FROM tab_float;

#原则:

所选择的类型越简单越好,能保存数值的类型越小越好

三、字符型

在这里插入图片描述

较短的文本
char
varchar

binary 和 varbinary用于保存较短的二进制
enum用于保存枚举
set用于保存集合

较长的文本
text
blob(较大的二进制)

特点:	
	写法		M的意思				  特点			空间的耗费	效率	
char 	char(M)		最大的字符数,可以省略,默认为1   固定长度的字符        比较耗费	高

varhar	varchar(M)      最大的字符数,不可以省略 	  可变长度的字符 	比较节省 	低

CREATE TABLE tab_char(
c1 ENUM(‘a’,‘b’,’’)
);

日期型

在这里插入图片描述

/*

分类:
date 只保存日期
time 只保存时间
year 只保存年

datetime 保存日期+时间
timestamp 保存日期+时间


特点:        字节	范围  		时区等的影响
datetime   	8	1000-9999	不受
timestamp	4	1970-2038	受

*/

CREATE TABLE tab_date(

	t1 DATETIME,
	t2 TIMESTAMP
);

INSERT INTO tab_date VALUES(NOW(),NOW());

SELECT * FROM tab_date

SHOW VARIABLES LIKE 'time_zone';
#修改时区为东9区
SET time_zone='+9:00';

猜你喜欢

转载自blog.csdn.net/weixin_44515563/article/details/89473071
今日推荐