《MySQL语法及其他纪要1》由会员分享,可在线阅读,更多相关《MySQL语法及其他纪要1(6页珍藏版)》请在金锄头文库上搜索。
1、Comment z1: 主要针对错误:1175Comment z2: 如果不存在,可省略Comment z3: 检查1MySQL语法及其他纪要-llzhaosanMySQL使用注意事项无效或不可使用的语法Check约束、full join 全链接、select into 备份、alter column修改列名报错:1175Set Sql_safe_updates = 0;Sql_safe_updates=1时,不带 where和 limit条件的 update和 delete操作语句无法执行,即使有 where和 limit条件但不带 key column的 update和 delete也不能
2、执行。如果使用 mysql workbench可使用 editpreferencesSQL EditorSafe Updates选项取消勾选MySQL常用功能教程1. 创建 create创建数据库 create database语法:create database 数据库名制定默认的字符集是 utf8。create database if not exists 库名 default charset utf8 collate utf8_general_ci;创建默认 gbk字符集的数据库create database 库名 default character set gbk collate gb
3、k_chinese_ci;创建表 create table语法:create table 表名 (Comment z4: 自增,可加条件Auto_increment=4(从 4开始自增)SQLServer用 identityComment z5: 效果和主键一样Comment z6: 创建约束名,可省略Comment z7: Mysql不支持 check约束Comment z8: 括号内最后一句不要逗号2列 数据类型 auto_increment primary key,列 数据类型 not null,列 数据类型 unique,列 数据类型 foreign key references 父表
4、(列),列 数据类型 default 默认值 ,constraint 主键名 primary key (列),constraint 约束名 unique(列),constraint 外键名 foreign key (列名) references 父表 (列)on delete restrict on update cascade,constraint 约束名 check (规则);注意:primary key 拥有自动定义的 unique 约束,每个表可以有多个 unique 约束,但只能有一个 primary key 约束数据类型 描述 integer(size) int(size) sma
5、llint(size) tinyint(size)仅容纳整数。在括号内规定数字的最大位数。 而 decimal(size,d) numeric(size,d)容纳带有小数的数字。size 规定数字的最大位数。d 规定小数点右侧的最大位数。char(size) 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。在括号中规定字符串的长度。varchar(size) 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度(不能超过 255)。date(yyyymmdd) 容纳日期。创建索引 create index在不读取整个表的情况下,索引使数据库应用程序可以更快
6、地查找数据。用户无法看到索引,它们只能被用来加速搜索/查询。注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。语法:create index 索引名 on 表名(列名,列名);唯一索引:意味着两个行不能拥有相同的索引值。语法:create unique index 索引名 on 表名(列名,列名);创建视图 create viewComment z9: 插入多条时括号之间用逗号隔开Comment z10: 仅限同行不同列的数据:update 表 set 列 1 =值, 列 2= 值where
7、 列 = 值3视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。注释:数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。语法:create view 视图名 as select 列名 from 表名 where 规则;注释:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。2. 插入 into插入数据 Insert into 语法:insert into 表名称 value
8、s (值 1, 值 2,.)或:insert into表名称(列 1, 列 2,.) values (值 1, 值 2,.)3. 修改数据 update语法:update 表名称 set 列名称 = 新值 where 列名称 = 某值多数据时用逗号隔开4. 删除 delete、truncate、drop删除速度,一般来说: drop truncate deletedelete 用于删除表中的指定的行或数据,表的结构、属性和索引都是完整的语法:delete from 表名称 where 列名称 = 值Truncate用于删除表内的数据,但并不删除表本身语法:truncate table 表名称D
9、rop用于删除索引、表和数据库删除索引:alter table 表名 drop index 索引名删除表:drop table 表名删除库:drop database 库名Comment z11: 放在句尾Comment z12: 不包括,如需显示第一行则为 0或者不输入Comment z13: 百分比。用例:50 percent45. 查询 select去除重复值 distinct语法:select distinct 列名 from 表名where 操作符条件值周围使用的是单引号,数值不需要引号= 等于大于= 大于等于= 小于等于between 在某个范围内like 搜索某种模式and和 o
10、r运算符and 和 or 可在 where 子语句中把两个或多个条件结合起来;如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录;第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录;可以把 and 和 or 结合起来(使用圆括号来组成复杂的表达式) 。排序 order by多条件时用逗号隔开降序使用 DESC 关键字,升序使用 ASC关键字(默认情况下不需要)返回记录数 limit、top、rownum注:并非所有的数据库系统都支持 top 子句MySQL 语法:select 列名 from 表名 limit 开始行, 记录数SQL Server 语法:sele
11、ct top 记录数|percent 列名 from 表名Oracle 语法:select 列名 from 表名 where rownum = 记录数Comment z14: 模式。常用通配符Comment z15: As,使用时可忽略Comment z16: 两张表做交连后里面条件相同的部分记录产生一个记录集Comment z17: 等于 inner join (内链接)Comment z18: 左连接,在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOINComment z19: MySQL不支持 full joinComment z20: 全链接Comment z21
12、: 产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集Comment z22: 默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL5指定模式 like、in 、betweenSQL语法:(模糊查询)select 列名 from 表名 where 列名 like pattern通配符 描述% 替代一个或多个字符_ 仅替代一个字符 字符列中的任何单一字符(不需要间隔)、! 不在字符列中的任何单一字符(不需要间隔)SQL语法:(精确查询)select 列名 from 表名 where 表名 in (value1,value2,.)SQL语法:(区间查询,不
13、同的数据库处理结果会有差异)select 列名 from 表名 where 列名 between value1 and value2别名或代词 alias表的 SQL 语法:select 列名 from 表名 as 表别名select 列名 from 表名 表别名列的 SQL 语法:select 列名 as 列别名 from 表名select 列名 列别名 from 表名多条件时用逗号隔开两表查询 join onjoin: 如果表中有至少一个匹配,则返回行语法:select 列名 from 表 1 join 表 2 on 规则;left join: 从(表 1) 那里返回所有的行,即使在(表
14、2) 中没有匹配的行语法:select 列名 from 表 1 left join 表 2 on 规则;right join: 从(表 2) 那里返回所有的行,即使在(表 1) 中没有匹配的行语法:select 列名 from 表 1 right join 表 2 on 规则;full join: 只要其中一个表中存在匹配,就返回行语法:select 列名 from 表 1 full join 表 2 on 规则;联合查询 union注意:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。UNION 结果
15、集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。语法:select 列名 from 表 1 union select 列名 from 表 2;Comment z23: MySQL不支持该语法Comment z24: 如需要备份到其他库则使用该语法Comment z25: 可使用其他扩展select语法Comment z26: MySQL不支持该语法Comment z27: 某些数据库不支持该语法,MySQL 支持66. 备份 select intoSELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。语法:select * into 新表 in 其他库
16、 from 原表;MySQL 中可用查询结果创建语法:create table 新表(select* from 原表);7. 已有数据的变动 alterAlter 添加主键:alter table 表名 add primary key 键名(列名);alter table 表名 add constraint 键名 primary key 表名(字段);外键:alter table 从表 add constraint 键名 foreign key 从表(字段) references 主表(字段);唯一约束:alter table 表名 add unique key 约束名 (字段);添加列:alter table 表名 add 列