#库的管理
#CREATE DATABASE 库名
#创建books
CREATE DATABASE books;
#库的修改
RENAME DATABASE books to book;#不能用了,再文件里面修改
#库的删除
DROP DATABASE IF EXISTS books;
#表的管理
#表的创建
/* CREATE table 表名
列名 列的类型[长度] ,
列名 列的类型 ,
列名 列的类型 ,
...
列名 列的类型
*/
#创建表book
CREATE table book(
id INT,
bookname VARCHAR(20),
bookprice DOUBLE,
author_id VARCHAR(20),
publish_date datetime
);
desc book;
#创建表author
CREATE table author
(
id INT,
au_name VARCHAR(20),
nation VARCHAR(20)
);
desc author;
#表的修改
#修改列名
ALTER table book CHANGE COLUMN publish_date pubdate datetime;
#修改列的类型或约束
ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;
#添加新列
ALTER TABLE author ADD COLUMN annual DOUBLE;
#删除列
ALTER table author DROP COLUMN annual;
#修改表名
ALTER TABLE author RENAME book_author;
#表的删除
DROP TABLE boo_author;
SHOW TABLES;#查看当前库的所有表
#通用的写法
DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
CREATE table jj
(
id INT,
au_name VARCHAR(20),
nation VARCHAR(20)
);
DROP TABLE IF EXISTS jj;
CREATE TABLE 表名(
);
#表的复制
INSERT INTO book_author VALUES
(1,'书上春树','日本','1000'),
(2,'莫言','中国','1000'),
(3,'金庸','中国','1000');
desc book_author;
#复制表的结构
CREATE TABLE copy1 like book_author;
#复制表的结构和数据
CREATE TABLE copy2
SELECT *
FROM book_author;
#复制表的部分数据
CREATE TABLE copy3
SELECT id,au_name
FROM book_author
WHERE nation='中国';
#复制某些列
CREATE TABLE copy4
SELECT id,au_name
FROM book_author
WHERE 0;
ues books;
CREATE TABLE dept1
(
id int(7),
d_name VARCHAR(29)
);
#跨库复制
#将 departmaents中的数据插入新表dept2
CREATE TABLE dept2
SELECT department_id,department_name
FROM myemployees.departments;
#——、整型
/*
分类:
tinyint、 smallint、 mediumint、 int/integer. bigint
特点:
1.如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned22.关键字如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
3.如果不设置长度,会有默认的长度
长度代表显示的最大宽度,如果不够会用0在左边填充,但必须又 ZEROFILL 搭配
*/
#如何设置无符号和有符号
CREATE TABLE tab
(
t1 int(7) ZEROFILL ,
t2 INT(7) ZEROFILL
);
DESC TABLE tab;
INSERT INTO tab VALUES (123,123);
SELECT * FROM tab;#0000123 0000123
#二、小数
/*
分类:1.浮点型float (M,D)double(M,D)
2.定点型dec (M,D) decimal(M,D)特点:
特点
1
M:整数部位+小数部位
D:小数部位
如果超过范围,则插入临界值
2
M和D都可以省略
如果是decimal,则M默认为10,D默认为0
如果是float和double,则会根据插入的数值的精度来决定精度
3定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用
*/
#字符型
/*
较短的文本:char varchar
较长的交本:text
blob(较大的二进制)
L*/
/*
写法 M的意思 特点 空间的耗费 效率
char char (M) 最大的字符数可省略,为1固定长度的字符 比较耗费 高
varchar varchar (M) 最大的字符数 可变长度的字符 比较节省 低
*/
CREATE TABLE tab_char (
c1 enum ('a', 'b','c')
);
INSERT INTO tab_char VALUES ( 'a' );
INSERT INTO tab_char VALUES ( 'b') ;
INSERT INTO tab_char VALUES ( 'c') ;
INSERT INTO tab_char VALUES ( 'm' ) ;
INSERT INTO tab_char VALUES( 'A') ;
SELECT *
FROM tab_char ;
#日期型
#分类
/*
date 保存日期
time 保存时间
year 保存年
datetime \ TIMESTAMP 保存日期和时间
*/
CREATE table tab_date(
t1 datetime,
t2 TIMESTAMP
);
INSERT INTO tab_date VALUES(NOW(),NOW());
SELECT *
FROM tab_date;