SQL:结构化查询语言,(Structure Query Language),专门用来操作/访问数据库的通用语言。
DDL语句:数据定义语句(Data Define Language),例如:创建(create),修改(alter),删除(drop)等
DML语句:数据操作语句,例如:增(insert),删(delete),改(update),查(select)
因为查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类,DQL(数据查询语言),DR(获取)L
DCL语句:数据控制语句,例如:grant,commit,rollback等
其他语句:USE语句,SHOW语句,SET语句等。这类的官方文档中一般称为命令。
(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脚本中如何加注释
单行注释:#注释内容(mysql特有的)
单行注释:--空格注释内容 其中--后面的空格必须有
多行注释:/* 注释内容 */
create table tt(
id int, #编号
`name` varchar(20), -- 姓名
gender enum('男','女')
/*
性别只能从男或女中选择一个,
不能两个都选,或者选择男和女之外的
*/
);
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)
本文为范骏原创文章,转载无需和我联系,但请注明来自范骏博客https://fjun.org
最新评论