目录
ROUND(column|expression, n) 函数
TRUNCATE(column|expression,n) 函数
唯一索引(当为一个表分配了唯一性约束时,这个表就自带唯一索引了)
MySQL中的DDL操作
一、创建表与删除表
1,创建表
CREATE TABLE 表名(列名 类型,列名 类型......);
2,查看已创建的表。
show tables;
3,删除表
DROP TABLE 表名;
二、修改表
1,修改表名
ALTER TABLE 旧表名 RENAME 新表名;
2,修改列名
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
3,修改列类型
ALTER TABLE 表名 MODIFY 列名 新类型;
4,添加新列
ALTER TABLE 表名 ADD COLUMN 新列名 类型;
5,删除指定列
ALTER TABLE 表名 DROP COLUMN 列名;
三、MySQL的约束
1,修改表添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
2,删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
注意: 删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后再删除主键。
3,修改表添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名FOREIGN KEY(列名)
REFERENCES 参照的表名(参照的列名);
4,删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
5,修改表添加唯一性约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名);
6,删除唯一性约束
ALTER TABLE 表名 DROP KEY 约束名;
7,修改表添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
8,删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL;
9,查询表中的约束信息
SHOW KEYS FROM 表名;
10,创建表时添加约束
示例:创建 depts 表包含 department_id 该列为主键且自动增长, department_name 列不 允许重复,location_id 列不允含有空值。
create table depts(department_id int primary key auto_increment,
department_name varchar(30) unique,
location_id int not null);
MySQL中DML操作
一、添加数据(INSERT)
1,选择插入:
INSERT INTO 表名(列名 1 ,列名 2 ,列名 3.....) VALUES(值 1 ,值 2 ,值 3......);
2,完全插入:
INSERT INTO 表名 VALUES(值 1 ,值 2 ,值 3......);
注意: 如果主键是自动增长,需要使用 default 或者 null 或者 0 占 位。
3,创建表时指定列的默认值(DEFAULT)
CREATE TABLE 表名(列名 类型 default 默认值,......);
在 MySQL 中可以使用 DEFAULT 为列设定一个默认值。如果在插入 数据时并未指定该列的值,那么 MySQL 会将默认值添加到该列 中。
4,修改表添加新列并指定默认值
ALTER TABLE 表名 ADD COLUMN 列名 类型 DEFAULT 默认值;
示例: 修改 emp3 表,添加job_id 该列默认值为 0。
二、插入数据时的默认值处理
如果在插入数据时并未指定该列的值,那么MySQL 会将默认值添加 到该列中。如果是 完全项插入需要使用 default 来占位。
三、更新数据(UPDATE)
UPDATE 表名 SET 列名=值,列名=值 WHERE 条件;
注意: 更新语句中一定要给定更新条件,否则表中的所有数据都会被 更新。
四、删除数据(DELETE)
1,DELETE删除数据
DELETE FROM 表名 WHERE 条件;
注意: 在DELETE语句中,如果没有给定删除条件则会删除表中的所有 数据。
2,TRUNCATE清空表
TRUNCATE TABLE 表名;
清空表时DELETE与 TRUNCATE 区别:
- truncate 是整体删除(速度较快), delete 是逐条删除(速度较慢);
- truncate 不写服务器 log,delete 写服务器 log,也就是 truncate 效率比 delete 高的原因;
- truncate 是会重置自增值相当于自增列会被置为初始值,又重新从 1 开始记录,而不是接着原 来的值。
- delete 删除以后, 自增值仍然会继续累加。
MySQL查询数据
SELECT基本查询
1,查询中的列选择
选择所有列
选择指定列
用 SELECT 语句来显示表的指定列,指定列名之间用逗号分隔。
2,查询中的算术运算符
如果算术表达式包含有一个以上的运算,乘法和除法先计算。如果 在一个表达式中的运算符优先级相同,计算从左到右进行。可以用圆括号强制其中 的表达式先计算。
3,MySQL中定义空值
0 是一个数字,而空格是一个字符。包含空值的算术表达式计算结果为空。
4,MySQL中的别名
使用列别名
SELECT 列名 AS 列别名 FROM 表名 WHERE 条件;
使用表别名
SELECT 表别名.列名 FROM 表名 as 表别名 WHERE 条件;
5,除去相同的行
SELECT DISTINCT 列名 FROM 表名;
6,用选择限制行
SELECT * | 投影列 FROM 表名 WHERE 选择条件;
7,MySQL中的比较条件
符号 != 也能够表示 不等于条件。
8,其他比较条件
a) 使用BETWEEN条件
可以用 BETWEEN 范围条件显示基于一个值范围的行。指定的范围包含一个下限和一个上限。
包含上限和下限,是闭区间。
b) 使用IN条件
c) 使用LIKE条件
d) 使用NULL条件
NULL 条件,包括 IS NULL 条件和 IS NOT NULL 条件。
IS NULL 条件用于空值测试。空值的意思是难以获得的、未指定 的、未知的或者不适用的。因此,你不能用 = ,因为 null 不能等于 或不等于任何值。
9,逻辑条件
10,优先规则
可使用圆括号改变优先规则。
11,使用 ORDER BY 排序
如果使用了 ORDER BY 子句,它必须位于 SQL 语句的最后。
SELECT 语句的执行顺序如下:
- FROM 子句
- WHERE 子句
- SELECT 子句
- ORDER BY 子句
12,使用别名排序
13,多列排序
也可以排序一个不在select列表中的列。
SQL函数
单行函数
1,字符函数
2,数字函数
举例:
ROUND(column|expression, n) 函数
SELECT ROUND(45.923,-1);--->50
SELECT ROUND(45.923,-2);--->0
SELECT ROUND(55.923,-2);--->100
TRUNCATE(column|expression,n) 函数
SELECT TRUNCATE(45.923,0);--->45
SELECT TRUNCATE(45.923,-1);--->40
SELECT TRUNCATE(45.923,-2);--->0
SELECT TRUNCATE(345.923,-2);--->300
SELECT TRUNCATE(345.923,-3);--->0
3,日期函数
在MySQL中允许直接使用字符串表示日期,但是要求字符串的日期 格式必须为:‘YYYY-MM-DD HH:MI:SS’ 或者‘YYYY/MM/DD HH:MI:SS’。