MySQL总结
Posted a19960101
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL总结相关的知识,希望对你有一定的参考价值。
mysql总结
1.MySQL
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>]
[LIMIT[<offset>,]<row count>]
]
查询数据去重
SELECTDISTINCT<字段名>FROM<表名>;
设置别名
<表名>[AS]<别名><字段名>[AS]<别名>
限制查询个数
select field from table limit 5; 查询0开始的5个数据
select field from table limit 5,10; 查询5+1开始的10个数据
查询数据排序
1.select field from table order by field; 默认升序 多字段排序
2.select field from table order by field desc; 倒序
根据limit 和order by 查询一列最大值 select prod_price from product order by prod_price desc limit 1;
过滤数据
1.范围查询 select field from table where field between 5 and 10;
--通配符LIKE%匹配0/1/多个字符 _匹配一个字符
SELECT*FROM t_customerinfo WHERE custname LIKE‘_万%‘;
操作表中的数据
SELECT*FROM 表名 SELECT 字段 FROM 表名
SELECTDISTINCT 字段1、2FROM 表名
使用 DISTINCT 关键字时需要注意以下几点:
DISTINCT 关键字只能在 SELECT 语句中使用。
在对一个或多个字段去重时,DISTINCT 关键字必须在所有字段的最前面。
如果 DISTINCT 关键字后有多个字段,则会对多个字段进行组合去重,也就是说,只有多个字段组合起来完全是一样的情况下才会被去重。
SELECTCOUNT(DISTINCT name,age)FROM student;
SELECT*FROM student LIMIT3,5 返回从第 4 条记录开始的行数为 5 的记录
SELECT*FROM student ORDERBY height DESC,name ASC
GROUPBY 与 GROUP_CONCAT()
GROUPBY 关键字可以和 GROUP_CONCAT() 函数一起使用。GROUP_CONCAT() 函数会把每个分组的字段值都显示出来。
2.4数据库用户管理
CREATEUSER‘songjin‘@‘127.0.0.1‘IDENTIFIEDBY‘12345‘;
SELECTPASSWORD(‘12345‘);
DROPUSER‘songjin‘@‘127.0.0.1‘;
???企企csvcsvcsvcsvcsv
csv
以上是关于MySQL总结的主要内容,如果未能解决你的问题,请参考以下文章