CREATE DATABASE test
SHOW DATABASES
DROP DATABASE test
USE test //选择数据库
CREATE TABLE t_book(
id INT PRIMARY KEY,
b_name VARCHAR(50) NOT NULL,
price DECIMAL(4,2)
)
show tables //查看所有表
DESC t_book //展示表的结构
SHOW CREATE TABLE t_book //查看表的创建时的详细语句
SELECT * FROM t_book1 //使用查询语句展示表中所有语句
DROP TABLE t_book1
ALTER TABLE t_book RENAME t_book1
ALTER TABLE t_book1 ADD descri VARCHAR(50) //增加字段descri VARCHAR(50)
ALTER TABLE t_book1 ADD de VARCHAR(50) FIRST //在最开始添加字段
ALTER TABLE t_book1 ADD hah VARCHAR(10) AFTER id //在ID后添加字段
ALTER TABLE t_book1 DROP de
ALTER TABLE t_book1 MODIFY descri CHAR(40)
ALTER TABLE t_book1 CHANGE descri descrip CHAR(40)
ALTER TABLE t_book1 CHANGE descrip descri VARCHAR(50)
DESC t_book1
ALTER TABLE t_book1 MODIFY descri VARCHAR(50) AFTER b_name
PRIMARY KEY (PK)
标识该字段为该表的主键,可以唯一的标识记录
FOREIGN KEY (FK)
标识该字段为该表的外键
NOT NULL
标识该字段不能为空
UNIQUE KEY (UK)
标识该字段的值是唯一的
AUTO_INCREMENT
标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT
为该字段设置默认值
UNSIGNED
无符号
ZEROFILL
使用0填充
1,在表的创建时期,添加于字段之后
2,在表创建过后添加,使用alter
ALTER TABLE book_order ADD book_id INT NOT NULL UNIQUE;
ALTER TABLE book_order ADD CONSTRAINT FOREIGN KEY (book_id) REFERENCES book(book_id)
CREATE TABLE user4(
id INT UNSIGNED KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
)
p1
create table tb1(
nid int not null defalut 2,
num int not null
);
p2
create table st(
sid int primary key ,
name varchar(30) not null,
age int(3) unsigned not null default 18,
sex enum('male','female') default 'male',
hobby set('play','study','read','music') default 'play,music'
);
2.在表创建完以后修改/添加完整性约束
ALTER TABLE t_book1 ADD unique(b_name);
索引类似于书的目录,可以提高从表中检索数据的速度。索引创建在表上,由一个或多个字段生成的键组成。
由索引的存储类型,可以分为B型树索引(BTREE)和哈希索引(HASH)
MYSQL 支持的索引:普通索引,唯一索引,全文索引,单列索引,多列索引和空间索引。
索引的优点是提高了查找速度,缺点是过多的索引会占用磁盘空间。以下几种情况适合创建索引:
INDEX | KEY [别名] ( 属性名 【长度】【ASC|DESC 】) ;
eg:
CREATE TABLE t_pre (
id INT AUTO_INCREMENT ,
PRIMARY KEY (id),
t_name VARCHAR(50) NOT NULL UNIQUE,
descrip VARCHAR(50) DEFAULT 'null',
INDEX index_name (t_name) //创建索引
)
DESC t_pre
CREATE INDEX t_id ON t_pre(id ASC) //创建索引,并使其升序排列
ALTER TABLE t_pre ADD UNIQUE INDEX index_name (t_name)
DROP INDEX index_name ON t_pre;
除了通过查询语句以外,还可以通过查看创建表格时的语句
SHOW CREATE TABLE t_pre;
视图,从本质上是一种虚拟表,视图并不在数据库中以存储数据的形式存在,行和列数据来自自定义视图的查询所引用的基本表。
数据库中存储的是视图的定义。
而对视图内容的更新(增加,删除,修改)直接影响的是基本表。
当视图的数据来自多个基本表时,不允许添加和删除基本表。
CREATE VIEW v1(i,n) AS SELECT id,t_name FROM t_pre;
CREATE VIEW v2(b,p) AS SELECT bookname,booktypename FROM t_book,t_booktype WHERE t_book.id= t_booktype.id
DESCRIBE v_id
DESC v_id //查看视图设计信息
SHOW TABLE STATUS LIKE 'v_id' //显示视图的详细信息
SHOW CREATE VIEW v_id //查看视图定义信息
DROP VIEW view_name [,view_name2 、、]
1、先先删除,再重新创建
2、直接使用alter修改
ALTER VIEW v_id(b,bt,p) AS SELECT bookname,booktypename,price FROM book,booktype WHERE book.id = booktype.id;
先介绍一下,视图在某些情况下,是不可以更新的,比如:
第一种情况:
SELECT ** FROM view_name;
第二种情况:
用view操作基本表的数据
INSERT INTO v4(id,b_name,price,order_id)
VALUES (11,'all is well',22.3,23)
DELETE FROM v4 WHERE b_name='all is well' ;
UPDATE v4 SET price=32.5 WHERE b_name='pear1'
触发器类似于编程语言中的函数,均需要声明、执行,但是它是由事件触发的。
一般触发事件是 delete/insert/update
CREATE TRIGGER trigger_name
BEFORE|AFTER trigger_even
ON table_name FOR EACH ROW
trigger_STMT
eg.
CREATE TRIGGER tri_test
AFTER INSERT
ON t_book FOR EACH ROW
INSERT INTO t_test VALUES(1,'t_book')
DELIMITER $$
CREATE TRIGGER trigger_name
BEFORE|AFTER trigger_even
ON table_name FOR EACH ROW
BEGIN
trigger_STMT;
END
$$
DELIMITER
SHOW TRIGGERS
USE information_schema;
SELECT * FROM TRIGGERS
select * from triggers where trigger_name = ' tri_num '
DROP TRIGGER tri_name