Mysql(1)_ 基本sql语句
TRUNCATE TABLE rdrssit_4.pysbig_table1; DELETE from rdrssit_5.test_table01 where userid>=1 and userid<=200;
truncate语句只是清空表中的数据,delete语句如果后面不带where条件,也会清空表中的数据。
DDL语句是Data Definition Language 的缩写,这些语句定义了不同的数据段,数据库,表,索引和对象。包括create,drop,以及alter等!drop在上次研究院的还面试过!
-- 新建数据库 create DATABASE test01; -- 查询数据库 show DATABASES; -- 选择数据库 use test01; -- 查看数据库的表 show tables; -- CREATE TABLE emp( ename VARCHAR(10), hiredate DATE, sal DECIMAL, -- 注意最后一个字段后面没有分号,并且分好在括号外面! deptno INT(2) ); -- 查看表的定义 DESC emp; -- 在表中增加一个字段 alter table emp add COLUMN age INT(3); -- 删除字段 alter TABLE emp DROP COLUMN age; -- 修改表字段的定义 ALTER table emp MODIFY ename VARCHAR(20); -- 字段改名 ALTER TABLE emp CHANGE age age1 INT(5); -- 修改字段排列顺序 ALTER TABLE emp add birth DATE AFTER hiredate; -- 修改age,把它放在最前面 ALTER TABLE emp MODIFY age1 INT(5) FIRST; -- 更改表名 ALTER TABLE emp1 rename emp; -- 删除表 drop table emp; -- 删除数据库 drop DATABASE test01;
DML语句
INSERT INTO emp(ename,hiredate,sal,deptno) values('bowen2','2001-09-01','2900',2); -- 也可以不指定字段,但是values后面的值要和字段一一对应 insert INTO emp VALUES('bowen2','2012-09-11',2121,1); -- 只插入指定字段值 insert INTO emp(ename,sal) VALUES('bowen3',1000); -- 插入多条数据 insert into dept VALUES(1,'tech'),(2,'sale'),(3,'fin');
UPDATE emp set sal = 5000 where ename = 'bowen1'; -- 同时更新多个表中的数据,多表更新多用于根据一个表的字段来动态更新另外一个表的字段 UPDATE emp a,dept b set a.sal=a.sal*2,b.deptname=a.ename where a.deptno=b.deptno;
DELETE from emp where ename = 'bowen3'; -- 把dept表和emp表deptno为3的数据删除,不管是单表还是多表,不加where条件的会把表的记录都删除 DELETE a, b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;
SELECT DISTINCT deptno from emp; -- 条件查询 select * from emp where deptno=1; -- 排序和限制 SELECT * from emp order BY sal; SELECT * FROM emp ORDER BY deptno; -- 按部门排序后,再按薪水排序 SELECT * from emp ORDER BY deptno,sal DESC; -- 对排序后,只显示一部分而不是全部. SELECT * from emp ORDER by sal DESC LIMIT 3; -- 如果要显示emp表按照sal排序后从第二条记录开始的3条记录,可如下 -- LIMIT 经常和orderby一起配合使用,进行记录的分页显示 SELECT * from emp ORDER BY sal DESC LIMIT 1,3; -- 聚合 -- 在emp表中查找公司的总人数 select COUNT(1) from emp; -- 在此基础上统计各个部门的人数 select deptno,COUNT(1) from emp GROUP BY deptno; -- 既要统计各部门人数,又要统计总人数 select deptno,COUNT(1) from emp GROUP BY deptno with ROLLUP; -- 统计大于一的人数部门 SELECT deptno,COUNT(1) FROM emp GROUP BY deptno HAVING COUNT(1)>1; -- SELECT SUM(sal),max(sal),MIN(sal) from emp; -- 显示雇员名字和所在部门名称 SELECT ename,deptname from emp,dept WHERE emp.deptno=dept.deptno;
-- 记录联合 select deptno from emp UNION ALL SELECT deptno from dept; -- 记录联合去重 SELECT deptno from emp UNION SELECT deptno from dept;