记录一下数据库复习
一、DDL语句
来源https://blog.csdn.net/scbiaosdo/article/details/81561162
数据库模式定义语言DDL(Data Definition Language),主要由
- create(添加)
- alter(修改)
- drop(删除)
- truncate(删除)
1.create:
create table 表名称(字段1 类型,字段2 类型); //在一个数据库中创建一个表
create table hero_table ( id int,name varchar(10)); //创建表
//创建表并增加约束
CREATE TABLE 表名称 (
字段1 类型1 约束1 约束1,
字段2 类型2 约束2 约束2
);
//创建表并增加约束
CREATE TABLE hero_table4 (
id INT(11) NOT NULL PRIMARY KEY,
NAME VARCHAR(10) NOT NULL UNIQUE KEY
)
2.alter:
1、添加字段
alter table 表名 add 字段名 字段约束
alter table 表名 add column 字段名 字段约束
2、添加索引
alter table 表名 add index 索引名称
3、添加主键
alter table 表名 add primary key (字段名)
alter table 表名 add unique key (字段名)
4、添加外键约束
alter table 需要添加外键表名称 add foreign key 外键名(设为外键的字段) REFERENCES 被添加外键表名称(设为被添 加外键的字段)
5、修改字段类型时要注意字段类型的兼容性及精度,除非该列全部数据为null
ALTER TABLE 表名称 CHANGE COLUMN NAME 修改字段 修改为字段类型
ALTER TABLE 表名称 MODIFY COLUMN 修改字段 修改为字段类型
6、修改与删除表中default
/设置default
ALTER TABLE 表名称 ALTER COLUMN 字段名 SET DEFAULT '修改的值'
//删除default
ALTER TABLE 表名称 ALTER COLUMN 字段名 DROP DEFAULT
7、禁用和启用约束
//禁用约束
ALTER TABLE 表名称 DISABLE KEYS
//启用约束
ALTER TABLE 表名称 ENABLE KEYS
8、删除表字段、主键、索引、外键约束
//删除表字段
ALTER TABLE 表名称 DROP COLUMN 字段名
//删除主键
ALTER TABLE 表名称 DROP PRIMARY KEY
//删除索引
ALTER TABLE 表名称 DROP INDEX 索引的字段名
//删除外键约束
ALTER TABLE 表名称 DROP FOREIGN KEY 外键的字段名
9、修改表名
ALTER TABLE 修改前表名称 RENAME 修改后表名称
3.drop关键字
1、删除数据库
DROP DATABASE 数据库名
2、删除表
DROP TABLE 表名称
4.truncate关键字
与drop的区别:truncate只删除数据不删除表的结构(定义),释放空间
drop,truncate和delete分别有什么作用?
TRUNCATE TABLE 不能用于参与了索引视图的表。
delete是DML语句,不会自动提交。drop/truncate都是DDL语句,执行后会自动提交。
安全性:小心使用 drop 和 truncate,尤其没有备份的时候.
速度,一般来说: drop> truncate > delete
删除表
truncate table 表名称;
二、DML语句
来源Sql语句中的DML语句
DML语句就是数据库操作语句。主要有
- Insert
- update
- Delete
- Select
1.insert语句
Delete from 表名名称 [where 条件];
DELETE FROM project WHERE id>11
DELETE FROM project WHERE id=5
1.插入一整条记录:
Insert into 表名称(字段) values(数据);
INSERT INTO student(id,NAME) VALUES(1,'学生1');
INSERT INTO student(id,NAME) VALUES(2,'学生2');
2.一次性插入多条记录:
insert into 表名称(字段1,字段2,字段3) values(数据1,数据2,数据3),(数据1,数据2,数据3);
INSERT INTO project(pid,pname,tijiaoren) VALUES(12,'项目53',5),(13,'项目55',5);
2.update语句
Update 表名称 set 字段名=新值[,列名2=新值,…][where 条件];
//将所有偶数项目id的状态变更为是
UPDATE project SET zt='是' WHERE MOD(id,2)=0
3.delete语句
delete 语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的trigger执行的时候将被触发。
Delete from 表名 [where 条件];
DELETE FROM project WHERE id>11
DELETE FROM project WHERE id=5
4.select语句
Select *|distinct 字段1,字段2,…… 表达式 from 表名称[where 条件]
SELECT Company FROM Orders //表中如果有相同的值,则都会被列
SELECT DISTINCT Company FROM Orders //表中如果有相同的值,这只会显示一个
SELECT * FROM Orders //显示表中所有的值
//子查询作为操作数
SELECT (SELECT id FROM student WHERE id=1) FROM DUAL
//子查询作为条件
SELECT * FROM project WHERE tijiaoren>(SELECT 2 FROM DUAL)
//子查询作为数据表使用
SELECT * FROM (SELECT * FROM project , student WHERE project.tijiaoren=student.id) a WHERE a.name LIKE '%3%'
//多列比较
SELECT (3,2)<(3,4) FROM DUAL
//笛卡尔积
SELECT * FROM 表名称1,表名称2
//内连接(保留两表中on相匹配的值)
SELECT * FROM 表名称1 INNER JOIN 表名称2 ON 表名称1.字段=表名称2.字段;
//左外连接(保留表1中的值给表2补null)
SELECT * FROM 表名称1 LEFT JOIN 表名称2 ON 表名称1.字段=表名称2.字段
//右外连接(保留表2中的值给表1补null)
SELECT * FROM 表名称1 RIGHT JOIN 表名称2 ON 表名称1.字段=表名称2.字段
//全外连接(保留两个表的值,分别补null)
SELECT * FROM 表名称1 LEFT JOIN 表名称2 ON 表名称1.字段=表名称2.字段