解决Mysql (1064) 错误: 1064 - You have an error in your SQL syntax;

报错信息

起因: 发现问题不要慌,找原因找办法!这个错误是在执行查询语句时发生的,一般这种报错就是语法的问题。通过查阅MYSQL中的保留字发现:" READ " 这个词在mysql中属于保留字,就像JAVA中的关键词一样,所以 必须要用英文的反单引号(`)包裹,就ok了!

错误方式一:无单引号。

 错误方式二:有单引号,but...非反单引号。这种虽不会报错,但是数据无法显示。

总结:一句话就是表中字段尽量不要用mysql中的关键字,如果用了就请用英文中的反单引号(`)给保护起来!!!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mac OS X 10.15 下源码安装 mysql-8.0.20-macos10.15-x86_64 https://my.oschina.net/kinglyphp/blog/4281112 博客地址 下载mysql-8.0.20-macos10.15-x86_64.tar.gz 可以从mysql官网下载,如果比较慢, 从https://download.csdn.net/download/long4512524/12427861 中下载 解压 tar zxvf mysql-8.0.20-macos10.15-x86_64.tar.gz 移动解压后的二进制包到安装目录 sudo mv mysql-8.0.20-macos10.15-x86_64 /usr/local/mysql 在 /usr/local/mysql 目录新建 data目录文件 cd /usr/local/mysql sudo mkdir data 更改 mysql 安装目录所属用户与用户组 cd /usr/local sudo chown -R root:wheel mysql 在启动 mysql 之前,我们先需要指定my.cnf 文件 因为 mysql 5.7 版本开始 my-default.cnf 文件不会自带,需要手动创建。 cd /usr/local/mysql/support-files sudo vi my-default.cnf 在 /usr/local/mysql/support-files 目录下创建 my-default.cnf [mysqld] basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 socket = /usr/local/mysql/data/mysql.sock log-error = /usr/local/mysql/data/mysqld.log [client] socket=/usr/local/mysql/data/mysql.sock 拷贝my-default.cnf到/etc/my.cnf sudo cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf 初始化 mysqld cd /usr/local/mysql sudo bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data 其中: basedir 是指你的mysql安装在哪儿了。 (具体需要换成你自己的路径) datadir 是指MySQL后续的数据存放在哪儿。(具体需要换成你自己的路径) 注意: 这儿执行完会生成mysql root账号的密码,后面在客户端连接时,5.7版本需要用到,自己别忘了记录下 类似这种: 其中 Wt#GeUu_q2oJ 就是root的密码。 [Note] A temporary password is generated for root@localhost: Wt#GeUu_q2oJ 启动MYSQL cd /usr/local/mysql sudo support-files/mysql.server start 如下: kingly@192 data % cd /usr/local/mysql kingly@192 mysql % sudo support-files/mysql.server start Starting MySQL . SUCCESS! 对应mysqld 启动起来接口 ps aux | grep mysqld 见到如下所示,证明mysql安装成功。 kingly@192 mysql % ps aux | grep mysqld kingly 40915 0.6 0.0 4285708 724 s000 S+ 5:47下午 0:00.00 grep --color=auto mysqld _mysql 40907 0.4 2.1 4907248 350300 s000 S 5:46下午 0:00.95 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/mysqld.log --pid-file=/usr/local/mysql/data/192.168.0.103.pid --socket=/usr/local/mysql/data/mysql.sock --port=3306 使用 之前的记住的 Wt#GeUu_q2oJ的密码,测试mysql的链接情况 /usr/local/mysql/bin/mysql -uroot -P3306 -p kingly@192 bin % /usr/local/mysql/bin/mysql -uroot -P3306 -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.20 Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 修改root密码,并为 PASSWORD EXPIRE NEVER 永不过期 mysql> alter user 'root'@'localhost' identified by '12345678' PASSWORD EXPIRE NEVER; mysql> flush privileges; mysql> quit; 设置远程访问 允许root用户在任何地方进行远程登录,并具有所有库任何操作权限。 如果出现 提示”Access denied for user ‘root’@’localhost’ (using password: YES)” mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | epass | % | | epass | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+ 6 rows in set (0.00 sec) mysql> 发现root只有本地权限, 那么, 我们需要给root 加上 127.0.0.1,% 还有指定服务器ip访问的权限, 注意: mysql版本8.0.13,在给新用户授权时,发生了变化 如果出现, 不能直接使用 grant all privileges on *.* to root@'%' identified by '12345678'; //给mysql用户分配远程访问权限 会出现, You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by "12345678"' at line 1 的错误,原因是新版本mysql版本把将创建账户和赋予权限分开了。 应该如下操作: mysql> use mysql; mysql> create user 'root'@'%' identified by 'password'; mysql> grant all privileges on *.* to 'root'@'%' with grant option; mysql> flush privileges; 如果使用 Navicat连接MySQL Server8.0版本时出现Client does not support authentication protocol requested by server; 解决办法: mysql> use mysql; mysql> alter user 'root'@'localhost' identified with mysql_native_password by '12345678'; mysql> flush privileges; 如上即可。 加入环境变量,编辑 /etc/profile,这样可以在任何地方用mysql命令了 sudo vi ~/.bash_profile 添加 export PATH=$PATH:/usr/local/mysql//bin 使~/.bash_profile环境变量生效 source ~/.bash_profile 这个就可以在 任何地方用 mysql 命令了。 mysql -uroot -p 启动、重启与停止,状态 启动 sudo /usr/local/mysql/support-files/mysql.server start 重启 sudo /usr/local/mysql/support-files/mysql.server restart 停止 sudo /usr/local/mysql/support-files/mysql.server stop 查看状态 sudo /usr/local/mysql/support-files/mysql.server status
CHAPTER 1 Introduction to MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Database, Database Server, and Database Language. . . . . . . . . 4 1.3 The Relational Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 What Is SQL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5 The History of SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6 From Monolithic via Client/Server to the Internet . . . . . . . . . . 18 1.7 Standardization of SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.8 What Is Open Source Software?. . . . . . . . . . . . . . . . . . . . . . . . 25 1.9 The History of MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.10 The Structure of This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 CHAPTER 2 The Tennis Club Sample Database . . . . . . . . . . . . . . . . 29 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2 Description of the Tennis Club . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3 The Contents of the Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.4 Integrity Constraints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 CHAPTER 3 Installing the Software . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.2 Downloading MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.3 Installation of MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.4 Installing a Query Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.5 Downloading SQL Statements from the Web Site . . . . . . . . . . 38 3.6 Ready? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 CHAPTER 4 SQL in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.2 Logging On to the MySQL Database Server . . . . . . . . . . . . . . . 41 4.3 Creating New SQL Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4 Creating Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.5 Selecting the Current Database . . . . . . . . . . . . . . . . . . . . . . . . 45 4.6 Creating Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.7 Populating Tables with Data . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.8 Querying Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.9 Updating and Deleting Rows . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.10 Optimizing Query Processing with Indexes. . . . . . . . . . . . . . . 54 4.11 Views. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.12 Users and Data Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.13 Deleting Database Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.14 System Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.15 Grouping of SQL Statements . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.16 The Catalog Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.17 Retrieving Errors and Warnings . . . . . . . . . . . . . . . . . . . . . . . 68 4.18 Definitions of SQL Statements . . . . . . . . . . . . . . . . . . . . . . . . 69 PART II Querying and Updating Data . . . . . . . . . . . . . . . . 71 CHAPTER 5 SELECT Statement: Common Elements . . . . . . . . . . . . 73 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 5.2 Literals and Their Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5.3 Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 5.4 Assigning Names to Result Columns . . . . . . . . . . . . . . . . . . . . 92 5.5 The Column Specification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.6 The User Variable and the SET Statement . . . . . . . . . . . . . . . . 95 5.7 The System Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.8 The Case Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.9 The Scalar Expression Between Brackets . . . . . . . . . . . . . . . . 106 viii Contents 5.10 The Scalar Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.11 Casting of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 5.12 The Null Value as an Expression . . . . . . . . . . . . . . . . . . . . . . 114 5.13 The Compound Scalar Expression . . . . . . . . . . . . . . . . . . . . 115 5.14 The Aggregation Function and the Scalar Subquery. . . . . . . 136 5.15 The Row Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 5.16 The Table Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.17 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 CHAPTER 6 SELECT Statements, Table Expressions, and Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 6.2 The Definition of the SELECT Statement . . . . . . . . . . . . . . . . 145 6.3 Processing the Clauses in a Select Block. . . . . . . . . . . . . . . . . 150 6.4 Possible Forms of a Table Expression . . . . . . . . . . . . . . . . . . . 156 6.5 What Is a SELECT Statement? . . . . . . . . . . . . . . . . . . . . . . . . 159 6.6 What Is a Subquery?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 6.7 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 CHAPTER 7 SELECT Statement:The FROM Clause. . . . . . . . . . . . . 171 7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 7.2 Table Specifications in the FROM Clause . . . . . . . . . . . . . . . . 171 7.3 Again, the Column Specification. . . . . . . . . . . . . . . . . . . . . . . 173 7.4 Multiple Table Specifications in the FROM Clause . . . . . . . . . 174 7.5 Pseudonyms for Table Names. . . . . . . . . . . . . . . . . . . . . . . . . 178 7.6 Various Examples of Joins. . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 7.7 Mandatory Use of Pseudonyms . . . . . . . . . . . . . . . . . . . . . . . 183 7.8 Tables of Different Databases . . . . . . . . . . . . . . . . . . . . . . . . 185 7.9 Explicit Joins in the FROM Clause. . . . . . . . . . . . . . . . . . . . . . 185 7.10 Outer Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 7.11 The Natural Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 7.12 Additional Conditions in the Join Condition. . . . . . . . . . . . . 196 7.13 The Cross Join. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 7.14 Replacing Join Conditions with USING. . . . . . . . . . . . . . . . . 199 7.15 The FROM Clause with Table Expressions . . . . . . . . . . . . . . 200 7.16 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 Contents ix CHAPTER 8 SELECT Statement: The WHERE Clause . . . . . . . . . . . 213 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 8.2 Conditions Using Comparison Operators . . . . . . . . . . . . . . . 215 8.3 Comparison Operators with Subqueries . . . . . . . . . . . . . . . . 222 8.4 Comparison Operators with Correlated Subqueries. . . . . . . . 227 8.5 Conditions Without a Comparison Operator. . . . . . . . . . . . . 229 8.6 Conditions Coupled with AND, OR, XOR, and NOT . . . . . . . 231 8.7 The IN Operator with Expression List. . . . . . . . . . . . . . . . . . . 235 8.8 The IN Operator with Subquery . . . . . . . . . . . . . . . . . . . . . . . 241 8.9 The BETWEEN Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 8.10 The LIKE Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 8.11 The REGEXP Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 8.12 The MATCH Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 8.13 The IS NULL Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 8.14 The EXISTS Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 8.15 The ALL and ANY Operators . . . . . . . . . . . . . . . . . . . . . . . . 281 8.16 Scope of Columns in Subqueries . . . . . . . . . . . . . . . . . . . . . 289 8.17 More Examples with Correlated Subqueries . . . . . . . . . . . . . 294 8.18 Conditions with Negation. . . . . . . . . . . . . . . . . . . . . . . . . . . 299 8.19 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 CHAPTER 9 SELECT Statement: SELECT Clause and Aggregation Functions . . . . . . . . . . . . . . . . . . . . . . . . 315 9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 9.2 Selecting All Columns (*) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 9.3 Expressions in the SELECT Clause . . . . . . . . . . . . . . . . . . . . . 317 9.4 Removing Duplicate Rows with DISTINCT. . . . . . . . . . . . . . . 318 9.5 When Are Two Rows Equal?. . . . . . . . . . . . . . . . . . . . . . . . . . 321 9.6 More Select Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 9.7 An Introduction to Aggregation Functions. . . . . . . . . . . . . . . 324 9.8 COUNT Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327 9.9 MAX and MIN Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 9.10 The SUM and AVG Function. . . . . . . . . . . . . . . . . . . . . . . . . 336 9.11 The VARIANCE and STDDEV Functions. . . . . . . . . . . . . . . . 341 9.12 The VAR_SAMP and STDDEV_SAMP Functions . . . . . . . . . 343 9.13 The BIT_AND, BIT_OR, and BIT_XOR Functions . . . . . . . . 343 9.14 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 x Contents CHAPTER 10 SELECT Statement: The GROUP BY Clause . . . . . . . . 349 10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 10.2 Grouping on One Column . . . . . . . . . . . . . . . . . . . . . . . . . . 350 10.3 Grouping on Two or More Columns . . . . . . . . . . . . . . . . . . 353 10.4 Grouping on Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 10.5 Grouping of Null Values . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 10.6 Grouping with Sorting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 10.7 General Rules for the GROUP BY Clause . . . . . . . . . . . . . . . 359 10.8 The GROUP_CONCAT Function . . . . . . . . . . . . . . . . . . . . . 362 10.9 Complex Examples with GROUP BY. . . . . . . . . . . . . . . . . . . 363 10.10 Grouping with WITH ROLLUP . . . . . . . . . . . . . . . . . . . . . . 369 10.11 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 CHAPTER 11 SELECT Statement: The HAVING Clause . . . . . . . . . . 375 11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 11.2 Examples of the HAVING Clause . . . . . . . . . . . . . . . . . . . . . 376 11.3 A HAVING Clause but not a GROUP BY Clause . . . . . . . . . 378 11.4 General Rule for the HAVING Clause . . . . . . . . . . . . . . . . . . 379 11.5 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381 CHAPTER 12 SELECT Statement: The ORDER BY Clause . . . . . . . . 383 12.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 12.2 Sorting on Column Names . . . . . . . . . . . . . . . . . . . . . . . . . . 383 12.3 Sorting on Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 12.4 Sorting with Sequence Numbers . . . . . . . . . . . . . . . . . . . . . 387 12.5 Sorting in Ascending and Descending Order . . . . . . . . . . . . 389 12.6 Sorting Null Values. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 12.7 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393 CHAPTER 13 SELECT Statement: The LIMIT Clause. . . . . . . . . . . . . 395 13.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 13.2 Get the Top… . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 13.3 Subqueries with a LIMIT Clause . . . . . . . . . . . . . . . . . . . . . . 402 13.4 Limit with an Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 13.5 The Select Option SQL_CALC_FOUND_ROWS . . . . . . . . . 405 13.6 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Contents xi CHAPTER 14 Combining Table Expressions . . . . . . . . . . . . . . . . . . . 409 14.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 14.2 Combining with UNION. . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 14.3 Rules for Using UNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 14.4 Keeping Duplicate Rows. . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 14.5 Set Operators and the Null Value. . . . . . . . . . . . . . . . . . . . . 417 14.6 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 CHAPTER 15 The User Variable and the SET Statement . . . . . . . . . . 421 15.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 15.2 Defining Variables with the SET Statement . . . . . . . . . . . . . 421 15.3 Defining Variables with the SELECT Statement . . . . . . . . . . 423 15.4 Application Areas for User Variables . . . . . . . . . . . . . . . . . . 425 15.5 Life Span of User Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 426 15.6 The DO Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 15.7 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 CHAPTER 16 The HANDLER Statement. . . . . . . . . . . . . . . . . . . . . . 429 16.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 16.2 A Simple Example of the HANDLER Statement . . . . . . . . . . 429 16.3 Opening a Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430 16.4 Browsing the Rows of a Handler . . . . . . . . . . . . . . . . . . . . . 431 16.5 Closing a Handler. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 16.6 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 CHAPTER 17 Updating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 17.2 Inserting New Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 17.3 Populating a Table with Rows from Another Table . . . . . . . 442 17.4 Updating Values in Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 17.5 Updating Values in Multiple Tables . . . . . . . . . . . . . . . . . . . 450 17.6 Substituting Existing Rows . . . . . . . . . . . . . . . . . . . . . . . . . . 452 17.7 Deleting Rows from a Table . . . . . . . . . . . . . . . . . . . . . . . . . 454 17.8 Deleting Rows from Multiple Tables. . . . . . . . . . . . . . . . . . . 456 17.9 The TRUNCATE Statement . . . . . . . . . . . . . . . . . . . . . . . . . 458 17.10 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458 xii Contents CHAPTER 18 Loading and Unloading Data . . . . . . . . . . . . . . . . . . . 461 18.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 18.2 Unloading Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 18.3 Loading Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 CHAPTER 19 Working with XML Documents . . . . . . . . . . . . . . . . . . 471 19.1 XML in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 19.2 Storing XML Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 19.3 Querying XML Documents . . . . . . . . . . . . . . . . . . . . . . . . . . 476 19.4 Querying Using Positions . . . . . . . . . . . . . . . . . . . . . . . . . . . 484 19.5 The Extended Notation of XPath . . . . . . . . . . . . . . . . . . . . . 486 19.6 XPath Expressions with Conditions . . . . . . . . . . . . . . . . . . . 488 19.7 Changing XML Documents. . . . . . . . . . . . . . . . . . . . . . . . . . 489 PART III Creating Database Objects. . . . . . . . . . . . . . . . . 491 CHAPTER 20 Creating Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 20.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 20.2 Creating New Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493 20.3 Data Types of Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 20.4 Adding Data Type Options. . . . . . . . . . . . . . . . . . . . . . . . . . 508 20.5 Creating Temporary Tables . . . . . . . . . . . . . . . . . . . . . . . . . 514 20.6 What If the Table Already Exists? . . . . . . . . . . . . . . . . . . . . . 515 20.7 Copying Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 20.8 Naming Tables and Columns . . . . . . . . . . . . . . . . . . . . . . . . 521 20.9 Column Options: Default and Comment . . . . . . . . . . . . . . . 522 20.10 Table Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 20.11 The CSV Storage Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 20.12 Tables and the Catalog. . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 20.13 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 CHAPTER 21 Specifying Integrity Constraints. . . . . . . . . . . . . . . . . . 539 21.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539 21.2 Primary Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 21.3 Alternate Keys. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 21.4 Foreign Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 21.5 The Referencing Action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550 21.6 Check Integrity Constraints . . . . . . . . . . . . . . . . . . . . . . . . . 553 Contents xiii 21.7 Naming Integrity Constraints . . . . . . . . . . . . . . . . . . . . . . . 556 21.8 Deleting Integrity Constraints. . . . . . . . . . . . . . . . . . . . . . . . 557 21.9 Integrity Constraints and the Catalog . . . . . . . . . . . . . . . . . 557 21.10 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 CHAPTER 22 Character Sets and Collations . . . . . . . . . . . . . . . . . . . 561 22.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561 22.2 Available Character Sets and Collations. . . . . . . . . . . . . . . . 563 22.3 Assigning Character Sets to Columns. . . . . . . . . . . . . . . . . . 564 22.4 Assigning Collations to Columns . . . . . . . . . . . . . . . . . . . . . 566 22.5 Expressions with Character Sets and Collations. . . . . . . . . . 568 22.6 Sorting and Grouping with Collations . . . . . . . . . . . . . . . . . 571 22.7 The Coercibility of Expressions. . . . . . . . . . . . . . . . . . . . . . . 573 22.8 Related System Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 22.9 Character Sets and the Catalog . . . . . . . . . . . . . . . . . . . . . . 576 22.10 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 CHAPTER 23 The ENUM and SET Types . . . . . . . . . . . . . . . . . . . . . 577 23.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577 23.2 The ENUM Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 578 23.3 The SET Data Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582 23.4 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 CHAPTER 24 Changing and Dropping Tables . . . . . . . . . . . . . . . . . . 591 24.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 24.2 Deleting Entire Tables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 24.3 Renaming Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 24.4 Changing the Table Structure . . . . . . . . . . . . . . . . . . . . . . . . 593 24.5 Changing Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 24.6 Changing Integrity Constraints. . . . . . . . . . . . . . . . . . . . . . . 599 24.7 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602 CHAPTER 25 Using Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 25.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 25.2 Rows, Tables, and Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604 25.3 How Does an Index Work?. . . . . . . . . . . . . . . . . . . . . . . . . . 605 25.4 Processing a SELECT Statement: The Steps . . . . . . . . . . . . . 610 25.5 Creating Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614 xiv Contents 25.6 Defining Indexes Together with the Tables . . . . . . . . . . . . . . 617 25.7 Dropping Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 25.8 Indexes and Primary Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 25.9 The Big PLAYERS_XXL Table . . . . . . . . . . . . . . . . . . . . . . . . 620 25.10 Choosing Columns for Indexes. . . . . . . . . . . . . . . . . . . . . . 622 25.11 Indexes and the Catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 25.12 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 CHAPTER 26 Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 26.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 26.2 Creating Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631 26.3 The Column Names of Views . . . . . . . . . . . . . . . . . . . . . . . . 635 26.4 Updating Views: WITH CHECK OPTION. . . . . . . . . . . . . . . 636 26.5 Options of Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 26.6 Deleting Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 26.7 Views and the Catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 26.8 Restrictions on Updating Views . . . . . . . . . . . . . . . . . . . . . . 641 26.9 Processing View Statements . . . . . . . . . . . . . . . . . . . . . . . . . 642 26.10 Application Areas for Views . . . . . . . . . . . . . . . . . . . . . . . . 645 26.11 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 CHAPTER 27 Creating Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . 653 27.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 27.2 Databases and the Catalog. . . . . . . . . . . . . . . . . . . . . . . . . . 653 27.3 Creating Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 27.4 Changing Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 27.5 Dropping Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 CHAPTER 28 Users and Data Security . . . . . . . . . . . . . . . . . . . . . . . 659 28.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 28.2 Adding and Removing Users . . . . . . . . . . . . . . . . . . . . . . . . 660 28.3 Changing the Names of Users . . . . . . . . . . . . . . . . . . . . . . . 662 28.4 Changing Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 28.5 Granting Table and Column Privileges . . . . . . . . . . . . . . . . . 664 28.6 Granting Database Privileges . . . . . . . . . . . . . . . . . . . . . . . . 667 28.7 Granting User Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 28.8 Passing on Privileges: WITH GRANT OPTION . . . . . . . . . . 673 28.9 Restricting Privileges. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 Contents xv 28.10 Recording Privileges in the Catalog . . . . . . . . . . . . . . . . . . 675 28.11 Revoking Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 28.12 Security of and Through Views . . . . . . . . . . . . . . . . . . . . . . 680 28.13 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 CHAPTER 29 Statements for Table Maintenance . . . . . . . . . . . . . . . 683 29.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 29.2 The ANALYZE TABLE Statement . . . . . . . . . . . . . . . . . . . . . 684 29.3 The CHECKSUM TABLE Statement . . . . . . . . . . . . . . . . . . . 685 29.4 The OPTIMIZE TABLE Statement. . . . . . . . . . . . . . . . . . . . . 686 29.5 The CHECK TABLE Statement . . . . . . . . . . . . . . . . . . . . . . . 687 29.6 The REPAIR TABLE Statement . . . . . . . . . . . . . . . . . . . . . . . 689 29.7 The BACKUP TABLE Statement . . . . . . . . . . . . . . . . . . . . . . 690 29.8 The RESTORE TABLE Statement . . . . . . . . . . . . . . . . . . . . . 691 CHAPTER 30 The SHOW, DESCRIBE, and HELP Statements. . . . . . 693 30.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 30.2 Overview of SHOW Statements . . . . . . . . . . . . . . . . . . . . . . 693 30.3 Additional SHOW Statements . . . . . . . . . . . . . . . . . . . . . . . 698 30.4 The DESCRIBE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . 699 30.5 The HELP Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 PART IV Procedural Database Objects. . . . . . . . . . . . . . . 701 CHAPTER 31 Stored Procedures. . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 31.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 31.2 An Example of a Stored Procedure . . . . . . . . . . . . . . . . . . . . 704 31.3 The Parameters of a Stored Procedure . . . . . . . . . . . . . . . . . 706 31.4 The Body of a Stored Procedure. . . . . . . . . . . . . . . . . . . . . . 707 31.5 Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 31.6 The SET Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 31.7 Flow-Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 31.8 Calling Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . 719 31.9 Querying Data with SELECT INTO. . . . . . . . . . . . . . . . . . . . 722 31.10 Error Messages, Handlers, and Conditions . . . . . . . . . . . . 726 31.11 Retrieving Data with a Cursor. . . . . . . . . . . . . . . . . . . . . . . 731 31.12 Including SELECT Statements Without Cursors . . . . . . . . . 736 31.13 Stored Procedures and User Variables . . . . . . . . . . . . . . . . 737 31.14 Characteristics of Stored Procedures . . . . . . . . . . . . . . . . . 737 xvi Contents 31.15 Stored Procedures and the Catalog . . . . . . . . . . . . . . . . . . 740 31.16 Removing Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . 741 31.17 Security with Stored Procedures . . . . . . . . . . . . . . . . . . . . . 742 31.18 Advantages of Stored Procedures. . . . . . . . . . . . . . . . . . . . 743 CHAPTER 32 Stored Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 32.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 32.2 Examples of Stored Functions . . . . . . . . . . . . . . . . . . . . . . . 746 32.3 More on Stored Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 752 32.4 Removing Stored Functions . . . . . . . . . . . . . . . . . . . . . . . . . 753 CHAPTER 33 Triggers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 33.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 33.2 An Example of a Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 33.3 More Complex Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 33.4 Triggers as Integrity Constraints. . . . . . . . . . . . . . . . . . . . . . 763 33.5 Removing Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 33.6 Triggers and the Catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 33.7 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765 CHAPTER 34 Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 34.1 What Is an Event?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767 34.2 Creating Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 34.3 Properties of Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777 34.4 Changing Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778 34.5 Removing Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 34.6 Events and Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 34.7 Events and the Catalog. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780 PART V Programming with SQL . . . . . . . . . . . . . . . . . . . 783 CHAPTER 35 MySQL and PHP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785 35.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785 35.2 Logging On to MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786 35.3 Selecting a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787 35.4 Creating an Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788 35.5 Retrieving Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . 790 35.6 Multiple Connections Within One Session . . . . . . . . . . . . . . 791 35.7 SQL Statements with Parameters . . . . . . . . . . . . . . . . . . . . . 793 35.8 SELECT Statement with One Row . . . . . . . . . . . . . . . . . . . . 794 Contents xvii 35.9 SELECT Statement with Multiple Rows . . . . . . . . . . . . . . . . 796 35.10 SELECT Statement with Null Values . . . . . . . . . . . . . . . . . . 800 35.11 Querying Data About Expressions . . . . . . . . . . . . . . . . . . . 801 35.12 Querying the Catalog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 35.13 Remaining MYSQL Functions . . . . . . . . . . . . . . . . . . . . . . . 805 CHAPTER 36 Dynamic SQL with Prepared Statement. . . . . . . . . . . . 807 36.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 36.2 Working with Prepared SQL Statements . . . . . . . . . . . . . . . 807 36.3 Prepared Statements with User Variables. . . . . . . . . . . . . . . 810 36.4 Prepared Statements with Parameters . . . . . . . . . . . . . . . . . 810 36.5 Prepared Statements in Stored Procedures . . . . . . . . . . . . . 811 CHAPTER 37 Transactions and Multiuser Usage. . . . . . . . . . . . . . . . 815 37.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 37.2 What Is a Transaction? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815 37.3 Starting Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 37.4 Savepoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 37.5 Stored Procedures and Transactions . . . . . . . . . . . . . . . . . . 824 37.6 Problems with Multiuser Usage . . . . . . . . . . . . . . . . . . . . . . 825 37.7 Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 37.8 Deadlocks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830 37.9 The LOCK TABLE and UNLOCK TABLE Statements . . . . . . 830 37.10 The Isolation Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832 37.11 Waiting for a Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 37.12 Moment of Processing Statements . . . . . . . . . . . . . . . . . . . 834 37.13 Working with Application Locks . . . . . . . . . . . . . . . . . . . . . 835 37.14 Answers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837 APPENDIX A Syntax of SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 A.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 A.2 The BNF Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839 A.3 Reserved Words in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 A.4 Syntax Definitions of SQL Statements . . . . . . . . . . . . . . . . . . 845 APPENDIX B Scalar Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903 APPENDIX C System Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 APPENDIX D Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值