1 # Mysql增删查改
2
3 # 删除表中的全部数据
4 delete from 表名;
5
6 # 删除表中某一条数据
7 delete from 表名 where id =1;
8
9 update ...set...
10 # 修改某条数据 update 表名 set 字段名='值' where id=8;
11
12 alter...modify...
13 # 修改字段属性 alter table 表名 modify 字段名 varchar(30);
14
15 alter...change...
16 # 修改字段名称 alter table 表名 change 旧字段名 新字段名 varchar(11);
17
18 alter...add...
19 # 添加字段 alter table 表名 add 字段名int(11);
20
21 alter...drop...
22 # 删除字段 alter table 表名 drop 字段名int(11);
23
24 CONSTRAINT fk_dept FOREIGN KEY (deptId) REFERENCES tb_dept1(id)
25 # 创建外键deptId关联tb_dept1表的主键id,fk_dept是外键关联名称
26
27 SELECT s_id,f_name, f_price from fruits where s_id in ('101','102') order by f_name,f_price;
28 # in(101,102)表示选取区间范围;order by 表示先以f_name排序,再以f_price排序。(默认是升序)
29
30 SELECT f_name, f_price FROM fruits ORDER BY f_price DESC;
31 # DESC 降序
32
33 SELECT s_id,f_name, f_price FROM fruits WHERE s_id NOT IN(101,102) ORDER BY f_name;
34 # not in()
35
36 SELECT f_name, f_price FROM fruits WHERE f_price BETWEEN 2.00 AND 10.20;
37 # between ... and ...
38
39 SELECT f_name, f_price FROM fruits WHERE f_price NOT BETWEEN 2.00 AND 10.20;
40 # not between ... and ...
41
42 SELECT f_id, f_name FROM fruits WHERE f_name LIKE '%g%';
43 # like 近似匹配, % 表示任意字符串
44
45 select * from customers where c_email is null;
46 # is null 为空
47
48 SELECT c_id, c_name,c_email FROM customers WHERE c_email IS NOT NULL;
49 # is not null 不为空
50
51 SELECT DISTINCT s_id FROM fruits;
52 # DISTINCT 去重复
53
54 select s_id,count(*) as total, GROUP_CONCAT(f_name) as names from fruits group by s_id having count(f_name) > 1;
55 # GROUP_CONCAT() 组合成一行
56 # 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用
57
58 SELECT s_id, COUNT(*) AS Total FROM fruits GROUP BY s_id WITH ROLLUP;
59 # WITH ROLLUP 显示记录数量
60
61 SELECT * From fruits LIMIT 4;
62 # limit 限制显示行数
63
64 SELECT * From fruits LIMIT 4, 3;
65 # 返回从第5个记录开始的,行数长度为3的记录
66
67 select suppliers.s_id, s_name,f_name,f_price from suppliers,fruits where suppliers.s_id=fruits.s_id;
68 # 内连接查询,fruits表和suppliers表中都有相同数据类型的字段s_id,两个表通过s_id字段建立联系
69
70 SELECT customers.c_id, orders.o_num FROM customers LEFT OUTER JOIN orders ON customers.c_id = orders.c_id;
71 # 左连接查询
72
73 SELECT customers.c_id, orders.o_num FROM customers RIGHT OUTER JOIN orders ON customers.c_id = orders.c_id;
74 # 右连接查询
75
76 SELECT num1 FROM tbl1 WHERE num1 > ANY (SELECT num2 FROM tbl2);
77 # ANY和SOME允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。
78
79 SELECT * FROM fruits WHERE EXISTS (SELECT s_name FROM suppliers WHERE s_id = 107);
80 # 判断是否存在
81
82 SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0 UNION ALL SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
83 # 使用 UNION ALL 连接查询结果
84
85 SELECT * FROM fruits WHERE f_name REGEXP 'ba{1,3}';
86 # REGEXP 匹配字符串'ba'最少1次,最多3次的记录
87
88 UNIQUE INDEX UniqIdx(id)
89 # 使用 UNIQUE 关键字创建唯一索引
90
91 INDEX SingleIdx(name(20))
92 # 创建单列索引
93
94 INDEX MultiIdx(id, name, age)
95 # 创建组合索引
96 # 组合索引遵从“最左前缀”:利用索引中最左边的列集来匹配行,这样的列集称为最左前缀。例如这里由id、name和age 3个字段构成的索引,索引行中按id/name/age的顺序存放,索引可以搜索下面字段组合:(id, name, age)、(id, name)或者id。如果列不构成索引最左面的前缀,MySQL不能使用局部索引,如(age)或者(name,age)组合则不能使用索引查询
97
98 FULLTEXT INDEX FullTxtIdx(info)
99 # FULLTEXT全文索引可以用于全文搜索。只有MyISAM存储引擎支持FULLTEXT索引,并且只为CHAR、VARCHAR和TEXT列。索引总是对整个列进行,不支持局部(前缀)索引。
100
101 SPATIAL INDEX spatIdx(g)
102 # 空间索引必须在MyISAM类型的表中创建,且空间类型的字段必须为非空。
103
104 DROP INDEX Panisme ON book
105 # 删除book表中名称为Panisme的组合索引