Mysql数据库3
- SQL常用语法
- 显示表结构操作
- 语法:describe 表名; desc 表名;
- 叙述:用于显示表的创建结构。
- 删除表操作
- 语法:drop table [if exists] tab_name [,tab_name]...
- 叙述:从数据库中删除给定的表。如果给出if exists 子句,则删除不存在的表不会出错。
- 删除数据库操作
- 语法:drop database [if exists] db_name
- 叙述:删除给定的数据库。在删除一个数据库后,它就永远没有了,因此要特别小心。如果给出if exists 子句,则删除不存在的数据库不会出错。
- 语法:alter table 表名 action;
- 说明:action 可以是如下语句:
- add 列名 建表语句 [first | after 列名]
- 可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
- add primary key (列名)
- 为表添加一个主键,如果主键已经存在,则出现错误
- add foreign key(列名) references 表名(列名)
- 为表添加一个外键
- alter 列名 set default 默认值
- 可以更改指定列默认值
- add 列名 建表语句 [first | after 列名]
- change 旧列名 新列名 <建表语句> [first | after 列名]
- 可以更改列类型和列名称,如果原列的名字和新列的名字相同
- modify 列名 <建表语句> [first | after 列名]
- 和change的作用相同 但可以没有新列名
- drop 列名
- 可以删除一列
- drop primary key
- 可以删除主键(no)
- engine 类型名
- 可以改变表类型
- rename as 新表名
- 可以将表名更改
- 算数运算符
- 用字符串表示的数字在任何可能便于计算的地方都被自动地转换为数字。当执行转换时,MySQL遵循两个基本规则:
- 如果第一位是数字的字符串被用于一个算数运算中,那么它被转换为这个数字的值。
- 如果一个包含字符和数字混合的字符串不能被正确的转换为数字,那么它被转换成0。
- 用字符串表示的数字在任何可能便于计算的地方都被自动地转换为数字。当执行转换时,MySQL遵循两个基本规则:
- 比较运算符
- 比较运算符允许我们对表达式的左边和右边进行比较。一个比较运算符的结果总是1(真),0(假),或是为NULL(不能确定)。
- 比较运算符可以用于比较数字和字符串。数字作为浮点值比较,而字符串以不区分大小写的方式进行比较(除非使用特殊的BINARY二进制关键字)
- 对于<>运算符,如果表达式两边不相等返回真值,相等返回假值。还可以比较字符串
- BETWEEN运算符 用于检验一个值(或者一个求值表达式)是否存在一个指定的范围内:
- IN运算符用于检验一个值(或者一个求值表达式)是否包含在一个指定的值集合中。
- null值比较
- 可以使用IS NULL或者IS NOT NULL运算符来测定是否为空。
- 可以使用特殊的<=>运算符,MySQL称为”NULL安全的等于”运算符。这意味着即使当包含在比较运算符中的表达式含有一个NULL值时,MySQL也会为比较运算符返回一个真值或假值。
- 如果想执行通配符数据搜索,应该使用LIKE运算符。它通过在表达式中允许使用专门的通配字符,可以找出与指定搜索字符串全部或部分匹配的记录。
- 默认情况下,比较是不区分大小写的方式执行的。然而,以前我们注意到,可以添加BINARY关键字让MySQL执行区分大小写的比较。
- 示例代码:select binary 'x'= 'X';
- 逻辑运算符
- 逻辑与:两真为真,一假为假。
- 逻辑或:两假为假,一真为真。
- 逻辑异或:奇数个操作数非零,则求值为1,否则返回0
- 位运算符
- ~表示按位取反
- ^表示异或
- &位与运算
- |位或运算
- <<左位移
- >>右位移
- DISTINCT关键字的作用
- 查询结果去重复
- Sql语法结构
-
SELECT [DISTINCT | DISTINCTROW | ALL] select_expression,... [FROM table_references [WHERE where_definition] [GROUP BY col_name,...] [HAVING where_definition] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] rows] [PROCEDURE procedure_name] ]
-
- from子句:指定查询数据的表
- where子句:查询数据的过滤条件
- group by子句:对匹配where子句的查询结果进行分组
- having子句:对分组后的结果进行条件限制
- order by子句:对查询结果进行排序,后面跟desc降序或asc升序(默认)。
- limit子句:对查询的显示结果限制数目
- procedure子句:查询存储过程返回的结果集数据
- SQL提供的统计函数称为集函数.
- 主要的集函数:
- 记数函数: count(列名) 计算元素的个数
- 求和函数: sum(列名) 对某一列的值求和,但属性必须是整型
- 计算平均值:avg(列名) 对某一列的值计算平均值
- 求最大值: max(列名) 找出某一列的最大值
- 求最小值: min(列名) 找出某一列的最小值
- 在WHERE子句中使用谓词 :
- BETWEEN AND :
- 在两数之间
- NOT BETWEEN AND:
- 不在两数之间
- IN <值表> :
- 是否在特定的集合里(枚举)
- NOT IN <值表> :
- 与上面相反
- LIKE:
- 是否匹配于一个模式
- IS NULL(为空的)或 IS NOT NULL(不为空的):
- 检查一个值是否匹配一个常规表达式。
- BETWEEN AND :
- 语法:SELECT... FROM <表名> WHERE …GROUP BY…HAVING…
- WHERE子句:用来过滤 FROM 子句中指定的操作所产生的行
- GROUP BY子句:用来分组 WHERE 子句的输出
- HAVING子句:用来从分组的结果中筛选行
- 连接查询
- 同时涉及多个表的查询称为连接查询
- 用来连接两个表的条件称为连接条件
- 内连接(INNER JOIN)
- 外连接
- ——左外联结 (LEFT JOIN)
- ——右外联结 (RIGHT JOIN)
- 外连接与普通连接的区别
- 普通连接操作只输出满足连接条件的元组
- 外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出:
- 多表联查
-
-- 显示学生的学号,姓名,课程名,成绩 SELECT t1.`scode`, t1.`sname`, t3.`cname`, t2.`score` FROM students t1, sc t2, course t3 WHERE t1.`scode` = t2.`scode` AND t2.`cid` = t3.`cid` ;
-
- 子查询:
- 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为子查询。一个SELECT-FROM-WHERE语句称为一个查询块
- 例如:
- select sname from student where sno in (select studentid from sc where courseid=2);
- 表的复制
- 将一个表的所有数据+表结构都复制
- Create table t1 select * from student;
- 只复制表结构
- Create table t2 select * from student where 1<>1;
- 复制过去的表中没有主外键。
- 将一个表的所有数据+表结构都复制
- TRUNCATE
- 关键字的使用
- TRUNCATE 表名称
- 作用:清除表数据,包括表中的主键计数器。
- 关键字的使用