-- 创建数据库CREATEDATABASEIFNOTEXISTS bms CHARACTERSET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE bms;
-- 创建用户表CREATETABLEIFNOTEXISTSuser (
idINT AUTO_INCREMENT PRIMARY KEY,
nameVARCHAR(100) NOTNULL,
state TINYINTDEFAULT0COMMENT'0-正常 1-禁用'
);
-- 创建图书表CREATETABLEIFNOTEXISTS book (
idINT AUTO_INCREMENT PRIMARY KEY,
nameVARCHAR(100) NOTNULL,
price DECIMAL(10,2) NOTNULL,
upload_time DATETIME NOTNULL,
state TINYINTDEFAULT0COMMENT'0-可借阅 1-已借出 2-下架',
borrower_id INTNULL,
borrow_time DATETIME NULL,
FOREIGNKEY (borrower_id) REFERENCESuser(id)
);
-- 插入用户数据INSERTINTOuser (name, state) VALUES
('张三', 0),
('李四', 0);
-- 插入图书数据INSERTINTO book (name, price, upload_time, state) VALUES
('Java基础入门(第3版)', 59.00, CURRENT_TIMESTAMP, 0),
('三国演义', 69.00, CURRENT_TIMESTAMP, 2),
('MySQL数据库入门', 40.00, CURRENT_TIMESTAMP, 0),
('JavaWeb程序开发入门', 49.00, CURRENT_TIMESTAMP, 0),
('西游记', 59.00, CURRENT_TIMESTAMP, 2),
('红楼梦', 33.00, CURRENT_TIMESTAMP, 2),
('水浒传', 66.66, CURRENT_TIMESTAMP, 2);
-- 更新数据操作UPDATE book SET state = 0WHEREname = '西游记';
UPDATE book SET price = 66.00WHEREname = '水浒传';
UPDATE book SET price = price * 0.9; -- 所有图书打9折DELETEFROM book WHEREname = '红楼梦';
-- 记录借阅信息UPDATE book SET
borrower_id = (SELECTidFROMuserWHEREname = '张三'LIMIT1),
borrow_time = CURRENT_TIMESTAMP,
state = 1WHEREname = 'MySQL数据库入门';
ALTERTABLE book ADDCONSTRAINT FK_ID FOREIGNKEY(borrower_id)
REFERENCESuser (id);
CREATETABLE dept_index(
idINT,
deptno INT ,
dname VARCHAR(20),
introduction VARCHAR(200),
address GEOMETRY NOTNULL SRID 4326,
PRIMARY KEY(id), -- 创建主键索引UNIQUEINDEX (deptno), -- 创建唯一性索引INDEX (dname), -- 创建普通索引
FULLTEXT (introduction),-- 创建全文索引
SPATIAL INDEX (address) -- 创建空间索引
) ;
CREATETABLE index_multi(
idINTnotnull,
nameVARCHAR(20) NOTNULL,
score FLOAT,
INDEX multi(id,name)
);
SHOWCREATEtable index_multi;
CREATETABLE dept_index02(
idINT,
deptno INT ,
dname VARCHAR(20),
introduction VARCHAR(200)
);
CREATEUNIQUEINDEX unique_id ON dept_index02(id);
-- SHOW CREATE TABLE dept_index02\GCREATEINDEX multi_index ON dept_index02(deptno,dname);
ALTERTABLE book ADDINDEX index_bookname(name);
ALTERTABLE book ADDINDEX index_bookname_state(name(20),state(1));
ALTERTABLE book DROPINDEX index_bookname_state;
STARTTRANSACTION;
DELETEFROM book;
INSERTINTO book(name,price,upload_time,borrower_id,borrow_time,state)
VALUES
('Java基础入门',59.00,CURRENT_TIMESTAMP,NULL,NULL,0),
('三国演义',69.00,CURRENT_TIMESTAMP,NULL,NULL,0),
('MySQL数据库入门',40.00,CURRENT_TIMESTAMP,1,'2021-08-06 11:16:05',1),
('JavaWeb程序开发入门',49.00,CURRENT_TIMESTAMP,NULL,NULL,0),
('西游记',59.00,CURRENT_TIMESTAMP,NULL,NULL,0),
('水浒传',66.66,CURRENT_TIMESTAMP,NULL,NULL,0),
('唐诗三百首',39.00,CURRENT_TIMESTAMP,NULL,NULL,0),
('Python数据可视化',49.80,CURRENT_TIMESTAMP,NULL,NULL,0);
SELECT * FROM book;
COMMIT;
-- SHOW CREATE TABLE book;-- SHOW book;-- SELECT name, price FROM book WHERE price>50;-- SELECT name FROM book WHERE name LIKE '%入门';-- SELECT name,price FROM book WHERE name IN('西游记','红楼梦') ;-- SELECT u.id,u.name borrower,b.name bookname,b.borrow_time FROM book b,user u-- WHERE b.borrower_id=u.id AND u.name='张三';-- SELECT name,price FROM book-- WHERE price>(SELECT price FROM book WHERE name='西游记');-- SELECT name,price FROM book-- WHERE price<(SELECT AVG(price) FROM book);-- SELECT name,price,state FROM book-- WHERE state=(SELECT state FROM book WHERE name='三国演义');-- SELECT name,price,state FROM book-- WHERE state=1 AND price<ANY(SELECT price FROM book WHERE state=0);-- SELECT name,price,state FROM book-- WHERE price>ALL(SELECT price FROM book WHERE state=1);