【数据库】sql语句汇总(二)

/*创建视图*/

1.创建视图:对应的输入语句为:

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

[DEFINER = { user | CURRENT_USER }]

[SQL SECURITY { DEFINER | INVOKER }]

VIEW 视图名 [(列名 ... )]

AS SELECT语句

[WITH [CASCADED | LOCAL] CHECK OPTION];

所以创建视图v_dp和v_em时,只需注意里面的限制条件即可,向里面导入数据要某表某列;

2.删除视图

DROP VIEW [IF EXISTS]

view_name [, view_name] ...

[RESTRICT | CASCADE];

注意:DROP可以删除整个视图中的数据,使用DELETE可以删除较少量的数据;

3.查询视图:

使用SELECT语句,通配符*表示查询视图中所有的数据,仅查询单个列的数据就只写出该列的列名;

4.更新视图时,原来的表也会随之变动。

①向视图中插入一行数据,使用的语句为INSERT INTO;

②修改视图中的数据时要用UPDATE语句;

##关于不可更新视图

如果视图包含下述结构中的一种,则视图不可更新

1)聚合函数;2)DISTINCT关键字;3)GROUP BY子句; 4)ORDER BY子句;5)HAVING子句;6)UNION运算符; 7)位于选择列表中的子查询;8)FROM子句中包含多个表; 9)SELECT语句中引用了不可更新视图; 10)WHERE子句中的子查询,引用FROM子句中的表;

#创建视图
CREATE VIEW 视图名 AS select 列名 from 表名(+条件);
如下两种方式:

create view v_dp AS
select * from department;
create view v_em AS
select employee.employeeID,name,income 
from employee,salary where employee.employeeID=salary.employeeID;

对视图进行增删改查都可以按照普通表的sql语句那样;

#如果视图关联了一个表中的所有字段,而该表中添加了新字段,视图中是否能查询到新字段?
:不能,必须重新创建视图才能查询到新字段。
#视图v_em中无法插入和删除数据,为什么?
:因为视图v_em中的字段实际收入是基本表列通过计算所得的列,所以无法修改。 

 /*创建索引*/

1.索引分类:
  B-TREE索引 
  普通索引(INDEX):最基本索引,没有唯一性限制 
  唯一性索引(UNIQUE):索引列的所有值只能出现一次 
  主键(PRIMARY KEY):创建表的时候指定,每个表只能有一个主键 
  HASH索引(当表类型为MEMORY或HEAP时可用) 
2.创建索引
使用CREATE INDEX语句在已有表上创建索引;
语法格式如下: 
CREATE [UNIQUE|FULLTEXT] INDEX 索引名 [索引类型] ON 表名 (索引列名) [索引选项]; 
索引列名=列名[(长度)][ASC|DESC] 
索引类型=USING {BTREE|HASH}

①唯一性索引就是利用unique这一个关键词,索引名这里用in_departName;

②复合索引就是表名后面跟着多个列,这里是(name,address),索引名为in_nameaddress;

③建表的时候做索引就是在主键位置加一个索引关键词,这里表示为INDEX(departmentID),当然是建立一个新表的情况下,这里创建一个表department1;

④HASH索引就是特点为精确到散列,使用语句就是using hash,索引名为hash_ID,
可以用SHOW INDEX FROM 表名 显示已经创建的索引信息
删除索引 
使用DROP INDEX语句删除索引,语法格式如下: 
DROP INDEX 索引名 ON 表名; 
注:

①也可以用ALTER TABLE来删除索引,如:
ALTER TABLE tbl_name DROP INDEX index_name;
②MySQL中给字段创建索引的一种方式:
添加普通索引:ALTER TABLE tbl_name ADD INDEX index_name (col_list);

1.创建唯一性索引:

create unique index in_departName on department(departName);

2.创建复合索引:

create index in_nameaddress on employee(name,address);

3.创建HASH索引:
创建一个包含(employeeID, name, education)等字段的临时员工表(tmpEmployee),并在该表的员工编号字段上创建一个HASH索引:

create index hash_ID using hash on tmpEmployee(employeeID);

4.查看表中的索引语句:
show index from 表名;
如以下三条语句:

show index from department;

show index from employee;

show index from temEmployee;

#使用CREATE INDEX语句能创建主键吗?添加主键与添加普通索引有什么区别?
:不能,从上述例子可看出,添加主键会自动创建主键索引,普通索引会需要自己手动添加和指定,表中效率最高的索引就是主键索引。
#如果删除基本表的一个列或者多个列,该列上的索引会受怎样的影响?
:该列上的索引会被删除。

数据库SQL语句大全实例是指包含了数据库管理系统所有常用的SQL语句的一个完整列表。以下是一些常见的SQL语句的实例: 1. 创建表格:CREATE TABLE语句可以创建一张的表格,其定义了表格的字段和属性。 示例:CREATE TABLE employees (id INT, name VARCHAR(50), age INT); 2. 插入数据:INSERT INTO语句可以将数据插入到指定表格的特定字段。 示例:INSERT INTO employees (id, name, age) VALUES (1, 'John', 25); 3. 更数据:UPDATE语句用于更表格的数据。 示例:UPDATE employees SET age = 26 WHERE id = 1; 4. 删除数据:DELETE FROM语句用于删除表格的数据。 示例:DELETE FROM employees WHERE id = 1; 5. 查询数据:SELECT语句用于从一个或多个表格检索数据。 示例:SELECT * FROM employees; 6. 条件查询:SELECT语句可以结合WHERE子句以特定的条件检索数据。 示例:SELECT * FROM employees WHERE age > 30; 7. 排序数据:SELECT语句可以使用ORDER BY子句对数据进行排序。 示例:SELECT * FROM employees ORDER BY age ASC; 8. 聚合函数:SELECT语句可以使用聚合函数对数据进行汇总计算。 示例:SELECT COUNT(*) FROM employees; 9. 连接表格:SELECT语句可以使用JOIN子句将多个表格连接起来。 示例:SELECT * FROM employees JOIN departments ON employees.department_id = departments.id; 以上只是一些SQL语句的简单示例,实际上SQL语句的应用非常广泛,并且可以根据业务需求进行灵活的组合和调整。掌握常用的SQL语句可以帮助开发者有效地操作和管理数据库的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值