一、含义
结构化查询语言,针对所有关系型数据库进行操作的语法
每一种数据库操作语法都存在不同的地方,操作相同的其实就是SQL语法,不同语法称之为该数据库操作软件的"方言"
二、通用语法
(1)mysql的sql语法不区分大小写
A:数据库的表中的数据是否区分大小写。这个的话要看表格的字段的数据类型、编码方式以及校对规则。
ci(大小写不敏感),cs(大小写敏感),_bin(二元,即比较是基于字符编码的值而与language无关,区分大小写)
B:sql中的关键字,比如:create,insert等,不区分大小写。但是大家习惯上把关键字都“大写”。
(2)命名时:尽量使用26个英文字母大小写,数字0-9,下划线,不要使用其他符号
(3)建议不要使用mysql的关键字等来作为表名、字段名、数据库名等,如果不小心使用,请在SQL语句中使用`(飘号)引起来
(4)数据库和表名、字段名等对象名中间不要包含空格
create database my atguigu;
ERROR 1064 (42000): 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 'atguigu' at line 1
(5)同一个mysql软件中,数据库不能同名,同一个库中,表不能重名,同一个表中,字段不能重名
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| atguigudb |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> create database atguigudb;
ERROR 1007 (HY000): Can't create database 'atguigudb'; database exists
mysql> show tables;
+---------------------+
| Tables_in_atguigudb |
+---------------------+
| student |
| temp |
+---------------------+
2 rows in set (0.00 sec)
mysql> create table temp(id int);
ERROR 1050 (42S01): Table 'temp' already exists
mysql> create table tt(
-> id int,
-> id int
-> );
ERROR 1060 (42S21): Duplicate(重复) column name 'id'
三、 SQL语法的分类
DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
关键字:create、drop,alter等DML: 数据操作语言,用来对数据库表中的数据进行增删改
关键字:insert、delete、updateDQL: 数据查询语言,用来查询数据库中表的记录(数据)
关键字:select where等DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限
关键字:GRANT,REVOKE等事务控制语言(TCL-Transactional Control Language)
代表关键字:commit ,rollback;
四、表结构描述
五、常用命令
1)查看MySQL版本
- MySQL程序选项具有以下两种通用形式:
- 长选项,由单词之前加两个减号组成
- 短选项,由单个字母之前加一个减号组成
C:\Users\Administrator>mysql --version
mysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)
C:\Users\Administrator>mysql -V
mysql Ver 14.14 Distrib 5.5.36, for Win32 (x86)
2)创建数据库
- create database 数据库名称;
create database bjpowernode;
- use 数据库名称
use bjpowernode;
3)查询当前使用的数据库
select database();
查询数据库版本也可以使用
select version();
4)终止一条语句
如果想要终止一条正在编写的语句,可键入\c。
5)退出MySQL
可使用\q、QUIT或EXIT:
如:
mysql> \q (ctrl+c)
6)如何加注释
8)MySQL脚本中的标点符号
mysql脚本中标点符号的要求如下:
本身成对的标点符号必须成对,例如:(),'',""。
所有标点符号必须英文状态下半角输入方式下输入。
几个特殊的标点符号:
小括号():在创建表、添加数据、函数使用、子查询、计算表达式等等会用()表示某个部分是一个整体结构。
单引号'':字符串和日期类型的数据值使用单引号''引起来,数值类型的不需要加标点符号。
双引号"":列的别名可以使用双引号"",给表名取别名==不要使用==双引号。
create table tt(
id int
;
ERROR 1064 (42000): 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 '' at line 2
create table temp(
c char
);
insert into temp values('尚) ; #缺一半单引号
insert into temp values(‘尚’) ; #标点符号是中文
mysql> select * from student;
+------+------+
| id | name |
+------+------+
| 1 | 张三 |
| 2 | 李四 |
+------+------+
2 rows in set (0.00 sec)
mysql> select id "学号",name "姓名" from student;
+------+------+
| 学号 | 姓名 |
+------+------+
| 1 | 张三 |
| 2 | 李四 |
+------+------+
2 rows in set (0.00 sec)
9)查看设置变量(以及全局变量)
-- 1.1、查看全局变量(503)
show GLOBAL VARIABLES
-- 1.2、查看所有变量(517)
SHOW VARIABLES
-- 2.1、查看单个变量(两种方式,结果不同)
show GLOBAL VARIABLES like 'autocommit'; -- 结果:autocommit OFF
SELECT @@autocommit; -- 结果:1
-- 3.1、设置全局变量(两种方式,即其他会话连接都会修改该变量值,但是设置时其他原本就连接session的不会生效。本session要重新连接才会生效)
set @@GLOBAL.autocommit = 1
set GLOBAL autocommit = 0
-- 3.2、设置变量(只对本次session会话有效)
set autocommit = 1
六、查看“演示数据”的表结构
1)查看和指定现有的数据库
2)指定当前缺省数据库
3)查看当前使用的库
4)查看当前库中的表
5)查看其它库中的表
6)查看表结构
desc <table name>;
如:
7)查看表的创建语句
show create table <table name>;
如: