MySQL总结
时间:2021-07-01 10:21:17
帮助过:20人阅读
1.1SQL 包含以下 4 部分:
- 数据定义语言(DDL):DROP、CREATE、ALTER 等语句。
- 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
- 数据查询语言(DQL):SELECT 语句。
- 数据控制语言(DCL): GRANT、REVOKE、COMMIT、ROLLBACK 等语句。
1.2数据库访问接口:
不同的程序设计语言会有各自不同的数据库访问接口,程序语言通过这些接口,执行 SQL 语句,进行数据库管理。主要的数据库访问接口主要有 ODBC、JDBC、ADO.NET 和 PDO。
MySQL 数据库管理系统具有以下系统特性:
- 使用 C 和 C++ 编写,并使用多种编译器进行测试,保证源代码的可移植性。
- 支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统。
- 为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
- 支持多线程,充分利用 CPU 资源。
- 优化的 SQL 查询算法,有效地提高查询速度。
- 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入其他的软件中。
- 提供多语言支持,常见的编码如中文的 GB 2312、BIG 5,日文的 Shift_JIS 等都可以用作数据表名和数据列名。
- 提供 TCP/IP、ODBC 和 JDBC 等多种数据库连接途径。
- 提供用于管理、检查、优化数据库操作的管理工具。
- 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- 支持多种存储引擎。
1.3MySQL字符集和校对规则
- 字符
- 字符集(Character set):定义字符和二进制的额对应关系。
- 字符编码 (Character encoding):规定字符的编码如何存储到计算机。
- 校对规则(Collation)也可以称为排序规则,是指在同一个字符集内字符之间的比较规则。字符集和校对规则是一对多的关系,每个字符集都有一个默认的校对规则。字符集和校对规则相辅相成,相互依赖关联。
SHOW VARIABLES LIKE ‘character%‘; 命令查看当前 MySQL 使用的字符集
SHOW VARIABLES LIKE ‘collation\_%‘;命令查看当前 MySQL 使用的校对规则
校对规则命令约定如下:
- 以校对规则所对应的字符集名开头
- 以国家名居中(或以 general 居中)
- 以 ci、cs 或 bin 结尾,ci(Case insensitive) 表示大小写不敏感,cs (Case sensitive)表示大小写敏感,bin 表示按二进制编码值比较。
1.4MySQL注释与大小写问题
-- 单行注释
#单行注释
/*多行注释*/
MySQL 在 Windows 系统下不区分大小写,但在 Linux 系统下默认区分大小写。因此,数据库名、表名和字段名,都不允许出现任何大写字母,避免节外生枝。
一般建议统一使用小写字母,并且 InnoDB 引擎在其内部都是以小写字母方式来存储数据库名和表名的。这样可以有效的防止 MySQL 产生大小写问题。
2.MySQL常用语句
2.1操作数据库
查询MySQL中所有数据库 SHOWDATABASESLIKE[‘数据库名‘];
查询数据库结构 SHOWCREATEDATABASE<数据库名>;
创建数据库
CREATDATABASE[IFNOTEXISTS]<数据库名>
[DEFAULTCHARACTERSET<字符集名>]
[DEFAULTCOLLATE 校对规则名];
修改数据库
ALTERDATABASE[数据库名]{
[DEFAULT]CHARACTERSET<字符集名>
[DEFAULT]COLLATE<校对规则名>}
删除数据库 DROPDATABASE[IFEXISTS]<数据库名>
选择数据库 USE<数据库名>
2.2操作数据表
创建表 CREATETABLE<表名>([<列名1><类型1>[,…]<列名n><类型n>])[表选项][分区选项];
查询数据库中可用的表 show tables;
查看表结构 DESCRIBE<表名>;DESC<表名>;
查看创建表时的CREATETABLE语句,还可以查看存储引擎和字符编码
SHOWCREATETABLE<表名>\G;
修改数据表
ALTERTABLE<表名>[修改选项]
修改选项的语法格式如下:
{ADD[COLUMN]<列名><类型>AFTER<已经存在的字段名>;
|CHANGE[COLUMN]<旧列名><新列名><新列类型>
|ALTER[COLUMN]<列名>{SETDEFAULT<默认值>|DROPDEFAULT}
|MODIFY[COLUMN]<列名><类型>
|DROP[COLUMN]<列名>
|RENAME[TO]<新表名>
|CHARACTERSET<字符集名>
|COLLATE<校对规则名>}
删除表
DROPTABLE[IFEXISTS] 表名1[,表名2, 表名3...]
2.3操作表中数据
数据查询
SELECT
{*|<字段列名>}
[
FROM<表 1>,<表 2>…
[WHERE<表达式>
[GROUPBY<group by definition>
[HAVING<expression>[{<operator><expression>}…]]
[ORDERBY<order by definition