数据库系统原理之SQL(三)
数据库系统原理之SQL(三)
1. SQL的组成
1. 数据查询
2. 数据定义
3. 数据操作
4. 数据控制
2. 数据定义语言
-
CREATE创建数据库或数据库对象
-
创建数据库
~~~ CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARSET SET utf8 [DEFAULT] COLLATE utf8_general_ci ~~~
-
创建表
~~~ #创建表并设置主键和索引 CREATE TABLE table_name (id int not null AUTO_INCREMENT,name char(50) not null default "",age int null,PRIMARY KEY(id),INDEX index_age(age)); ~~~
-
查看数据库
~~~ #可以根据正则匹配或者where从句来获取想看到的数据库 SHOW {DATABASES | SCHEMAS} [LIKE’pattern’ | WHERE expr]
-
-
ALTER对数据库或数据库对象进行修改
-
修改数据库
ALTER DATABASE db_name DEFAULT CHARACTER SET gb2312 DEFAULT COLLATE gb2312_chinese_ci;
-
更新表
-
在表中添加一个字段,并在原表的sex字段之后
ALTER TABLE table_name ADD COLUMN city char(50) not null default "" after sex;
-
修改表中的列名或数据类型
修改表table_name中的字段c_name为name,并设置字段类型
ALTER TABLE table_name
CHANGE COLUMN c_name name char(50) not null default "";
~~~-
修改或删除指定列的默认值
ALTER TABLE table_name ALTER COLUMN [drop default | set default "" ]
-
只修改指定列的数据类型,不会干涉它的列名
#first 将此列设为表的第一列 ALTER TABLE table_name MODIFY COLUMN name char(25) not null first;
-
删除表中多余的字段
ALTER TABLE table_name DROP COLUMN name;
-
为表重新命名
ALTER TABLE table_name RENAME TO back_table_name; RENAME TABLE table_name TO back_name;
-
-
-
DROP删除数据库或数据库对象
-
删除数据库
DROP{DATABASE|SCHEMA}[IF EXISTS]db_name
-
删除表
DROP TABLE [IF EXISTS] table_name [,table_name2]
-
-
查看表
SHOW [FULL] COLUMNS {FROM | IN} tbl_name[{FROM | IN} db_name] [LIKE’pattern’ | WHERE expr] {DESCRIBE | DESC} tbl_name [col_name | wild]
3. 数据操纵语言
- SELECT从表中或视图中检索数据(查)
- INSERT将数据插入插入到表或视图中(增)
- UPDATE修改表或视图中的数据(改)
- DELETE删除表或视图中的数据(删)
4. 数据控制语言
- GRANT授予权限
- REVOKE收回权限
5. 索引定义
索引是提高数据文件访问效率的有效方法
- 弊端:
- 索引是以文件的形式存储的,如果有大量的索引,索引文件可能比数据文件更快达到最大的文件尺寸;
- 索引在提高查询速度的同时,会降低更新表的速度。
-
索引类型
- 普通索引(INDEX或KEY)
- 唯一性索引(UNIQUE)
- 主键(PRIMARY KEY)
-
创建索引(CREATE INDEX不能创建主键索引)
#在table_name表上的column字段上创建唯一索引index_name,可设置长度和升序降序 CREATE [UNIQUE] INDEX index_name ON table_name (column [(length)][ASC | DESC]) #为表table_name添加索引index_name ALTER TABLE table_name ADD INDEX index_name(name);
-
查看索引
SHOW {INDEX | INDEXES | KEYS} {FROM | IN} table_name [{FROM | IN} db_name] [WHERE expr]
-
删除索引
DROP INDEX index_name ON table_name ALTER TABLE table_name DROP PRIMARY KEY,DROP INDEX index_name;
6. MySQL内置函数
函数 | 描述 | 示例 |
---|---|---|
CURDATE() | 返回当前日期 | SELECT CURDATE()---- 2018-09-19 |
ABS(X) | 返回X的绝对值 | select ABS(-5) ---返回5 |
AVG(expression) | 返回表达式的平均值 | 返回一个班年龄的平均值---SELECT AVG(age) from class |
COUNT(expression) | 返回记录数量 | 返回A表中的数据量---SELECT COUNT(*) from A |
MAX(expression) | 返回字段中的最大值 | 返回一个班中最大的年龄---SELECT MAX(age) from class |
MIN(expression) | 返回字段中的最小值 | 返回一个班中最小的年龄---SELECT MIN(age) from class |
SUM(expression) | 返回指定字段的总和 | 返回一个班的分数总和---SELECT SUM(fraction) from class |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2018-08-21 开启我的博客之旅