mysql数据库基础知识

来源:互联网 发布:可以看亚丝娜本子软件 编辑:程序博客网 时间:2024/04/30 16:19

登陆
mysql -u roor(账号) -p(密码)123
创建数据库
CREATE DATABASE  csdn
查看所有的数据库
SHOW DATABASES;
切换和使用用数据库  删除数据库  修改数据的字符集
USE csdn; DROP csdn; ALTER DATABASE csdn  CHARACTER SET gbk;
查看当前使用的数据库
SELECT DATABASE(); 
---------------------------------------------------上面属于DDL语句------------------------------------------------------------
创建表   id 主键非空唯一 NAME  唯一  age  不为空 DOUBLE(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
CREATE TABLE USER (id INT PRIMARY KEY ,NAME VARCHAR(20) UNIQUE,age INT NOT NULL , money DOUBLE(5,2),hirdate DATE  )
查看数据库中的表
SHOW TABLES;  DESC USER;

创建表   id 主键非空唯一 NAME  唯一  age  不为空 DOUBLE(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
CREATE TABLE USER (id INT PRIMARY KEY ,NAME VARCHAR(20) UNIQUE,age INT NOT NULL , money DOUBLE(5,2),hirdate DATE  )
查看数据库中的表 看表头的约束 表结构详细信息
SHOW TABLES;    DESC USER;
修改表    ADD 添加 MODIFY 修改  CHANGE 改字段名 DROP 删除
ALTER TABLE USER  ADD xxx CHAR(4) ;
ALTER TABLE USER MODIFY xxx VARCHAR(20); DESC USER
ALTER TABLE USER CHANGE xxx  hhh TEXT  
ALTER TABLE USER DROP hhh
修改表名  RENAME TABLE USER TO myuser
插入记录 INSERT INTO myuser VALUES(1,'zhang3',19,999.99,'1990-09-09'); 插入部分 INSERT INTO myuser (id,age) VALUES(2,14);
SELECT * FROM myuser;查询所有
修改记录 UPDATE 表名 SET 字段名 = 值,字段名=值 [WHERE 条件];
UPDATE myuser SET age = 10 ,NAME = 'lisi', hirdate='1990-08-09' , money=88.88 WHERE id=2;
删除记录 * DELETE FROM 表名 [WHERE 条件];  删除所有记录 DELETE FROM myuser; 支持回滚 TRUNCATE TABLE myuser; 事务上不可回滚
DELETE  FROM myuser  WHERE id= 2;
--------------查询语句..----------
* SELECT *|列名,列名 FROM 表名 WHERE 条件;
SELECT * FROM myuser;
USE exam;
SHOW TABLES;
SELECT ename,deptno FROM emp WHERE deptno IN(20,30)  IN包含的意思

SELECT * FROM emp WHERE ename LIKE '__' 2个下划线 代表名字是2个字的

SELECT * FROM emp WHERE ename LIKE '张%' 名字是张开头的  LIKE '%三%' 名字包含 三

IS NULL  是空 AND 并且 , OR 或者  ,NOT 不是

*select * from where条件 order by列名 asc/desc; ---asc:代表排序的时候按照升序排序.desc:代表排序的时候按照降序排序.默认值:asc:升序.

聚合函数

* select count(*|列名)from表名; 统计个数

* select sum(列名)from exam; 求和

* select avg(列名)from表名; 求平均数

 * select max(列名)from表名; 最大值* select min(列名)from表名;最小值


* select * from where条件group by列名;分组

having:----分组后的条件过滤.用于group by 进行条件过滤.having后面可以跟聚集函数

* select *|列名 from表名 where条件 groupby列名 having分组条件过滤 order by 列名字

-------------------------------------属于DQL---------------------------------------------------------------------------------

查询表


ELECT * FROM emp


检索出奖金多于基本工资50%的员工信息。

SELECT * FROM emp WHERE comm>sal*0.5;

找出10部门的经理、20部门的职员 的员工信息。

SELECT * FROM emp WHERE deptno=10 AND job='经理' OR deptno=20;

找出10部门的经理、20部门的职员 或者既不是经理也不是文员但是工资高于2000元的员工信息。

SELECT * FROM emp WHERE (deptno=10 AND job ='经理' OR deptno =20)OR (job !='经理' AND job != '文员' AND sal>20000 );

计算员工的日薪(按30天)最高的的人。

SELECT  ename,MAX(sal/30) FROM emp;

查询出文员的姓名和部门名称
SELECT e.ename ,e.job, d.dname  FROM  emp e ,dept d WHERE e.deptno=d.deptno AND job='文员'

SELECT e.deptno, e.ename,d.dname FROM emp e INNER JOIN dept d ON e.deptno=d.deptno WHERE e.job='文员'

列出所有员工的姓名及其直接上级的姓名。

SELECT e.ename ,m.ename FROM emp e ,emp m WHERE m.empno=e.mgr;

SELECT e.ename,m.ename FROM emp e LEFT JOIN emp m ON m.empno=e.mgr;(包含左边的)

列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
 
SELECT e.empno,e.ename, d.dname FROM emp e JOIN dept d ON e.deptno=d.deptno JOIN emp m ON m.empno= e.mgr WHERE e.hiredate<m.hiredate

SELECT e.empno,e.ename,d.dname
FROM emp e
INNER JOIN emp m ON e.mgr=m.empno
INNER JOIN dept d ON e.deptno=d.deptno
WHERE e.hiredate<m.hiredate

查询表中所有学生的信息。
mysql>select * from STUDENT;
查询表中所有学生的姓名和对应的英语成绩。
mysql>select NAME,ENGLISH from STUDENT;
过滤表中重复数据。
mysql>select distinct ENGLISH from STUDENT;
在所有学生数学分数上加10分特长分。
mysql>select NAME,MATH+10 from STUDENT;
统计每个学生的总分。
mysql>select NAME,CHINESE+ENGLISH+MATH from STUDENT;
使用别名表示学生分数
mysql>select NAME as 姓名,CHINESE+ENGLISH+MATH 总分 from STUDENT;
查询姓名为wu的学生成绩
mysql>select * from STUDENT where NAME='王五';
查询英语成绩大于90分的同学
mysql>select * from STUDENT where ENGLISH>90;
查询总分大于200分的所有同学(where 语句中支持表达式)
mysql>select * from STUDENT where (CHINESE+ENGLISH+MATH)>200;
查询英语分数在 80-90之间的同学。
mysql>select * from STUDENT where ENGLISH<=90 and ENGLISH>=80;
mysql>select * from STUDENT where ENGLISH between80 and 90;
查询数学分数为89,90,91的同学。
mysql>select * from STUDENT where MATH in (89,90,91);
查询所有姓李的学生成绩。
mysql>select * from STUDENT where NAME like '李%';
查询数学分>80,语文分>80的同学。
mysql>select * from STUDENT where MATH>80 and CHINESE>80;
对数学成绩排序后输出。
mysql>select NAME,MATH from STUDENT order by MATH;
对总分排序后输出,然后再按从高到低的顺序输出
mysql>select NAME,CHINESE+ENGLISH+MATH 总分 from STUDENT order by 总分 desc;
对姓李的学生成绩排序输出
mysql>select NAME,CHINESE+ENGLISH+MATH 总分 from STUDENT where NAME like '李%' order by 总分;








0 0