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的组合索引