mysql学习笔记

来源:互联网 发布:金山恢复数据在哪里 编辑:程序博客网 时间:2024/06/05 10:43
SQL语言的分类:  DDL:数据定义语句    create / drop / alter  DML:数据操作语句    insert / delete / update / truncate  DCL:数据控制语句  DQL:数据查询语句    select / showSQL基础:一、数据库操作增:    创建数据库:create database dbname;删:    删除数据库:drop database dbname;改:    修改字符库数据集: alter database dbname default character set gbk;查:    查询所有数据库:show databases    查看数据库默认字符集:show create database dbname    选择数据库:use databse二、表操作增—创建表:create table tablename(column_name column_type constraints,…);删—删除表:drop table tablename;改—修改表:    1、修改表类型      alter table tablename modify name varchar(10);    2、增加表字段      alter table tablename add column age int(3) ; 例如:增加字段age,类型为int(3)    3、删除表字段      alter table tablename drop column age;例如:删除字段age    4、字段改名      alter table tablename change age age1 int(4); 例如:将age改名为age1,同时修改字段类型为int(4)    5、修改字段排列顺序      alter table tablename add birth date after name;    6、表改名      alter table emp rename emp1查—查看表:    查看指定表结构:desc tablename    查看所有表:show tables三、数据操作增—增加数据:    insert into emp (ename, hiredate) values(‘wangqi’, ‘1992-09-20’);    insert into emp values(‘wangqi’, ‘1992-09-20’);    insert into emp values(‘wangqi’, ‘1992-09-20’), (‘zhouqianqian’, ‘1993-02-09’);删—删除数据:    delete from emp where ename = ‘wangqi’; 把emp中‘wangqi’的记录全部删除    将两个表中‘wangqi’字段都删除    Delete a, b from emp a, dept b where a.ename=b.ename and a.ename=’wangqi’;    truncate table emp;   不能带条件删除改—修改数据:    update emp set sal=15000 where ename = ‘wangqi’; 将wangqi的薪水改为15000    update emp a, dept b set a.sal = a.sal*b.deptno, b.deptname=a.name where a.deptno = b.deptno; 同时更新表emp中的sal和表dept中的deptname查—查询数据:    查询所有列    select * from emp;    查询指定列   select ename, hiredate, sal from emp;    查询不重复记录   select distinct deptno from emp;    条件查询   select * from emp where deptno = 1;               select * from emp where deptno = 1 and sal < 3000;               select * from emp where ename like ‘王_’;    模糊查询  王X    查询排序和限制  select * from emp order by sal;   按sal升序排列                    如果deptno相同的记录有多条,sal按降序排列                    select * from emp order by deptno, sal desc;                      对于排序后的记录,如果只要求显示一部分                    select * from emp order by sal limit 3;    聚合排序  select count(*) 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;          ---统计人数大于1的部门          select max(sal), sum(sal), min(sal) from emp;    表连接(多表查询)    1、内连接         例如,查询出所有雇员的名字和所在部门名称,因为雇员名称和部门分别存放在表emp 和      dept 中,因此,需要使用表连接来进行查询:      select ename, deptno from emp, dept where emp.deptno = dept.deptno;    2、外连接    外连接分为左连接和右连接      左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录      右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录      select ename, deptname from emp left join dept on emp.deptno = dept.deptno;      select ename, deptname from dept right join emp on dept.deptno = emp.deptno;    3、子查询      select * from emp where deptno = (select deptno from dept);    4、记录联合      select deptno from emp      union all      select deptno from dept;四、mysql支持的数据类型    略五、mysql中的运算符    略六、mysql常用函数    1、字符串函数    cancat(s1, s2,..., sn)   连接s1,s2,...sn为一个字符串    insert(str, x, y, instr)   将字符串str从第x位置开始,y个字符串长度的字串替换成字符串instr    left(str, x)   返回字符串str最左边的x个字符    right(str, x)   返回字符串str最右边的x个字符    lpad(str, n, pad)   用字符串pad对str最左边进行填充,直到长度为n个字符长度    rpad(str, n, pad)   用字符串pad对str最右边进行填充,直到长度为n个字符长度    ltrim(str)   去掉字符串str左侧的空格    rtrim(str)   去掉字符串str右侧的空格    trim(str)     去掉字符串行头和行尾的空格    repeat(str, x)   返回str重复x次的结果    replace(str, a, b)   用字符串b替换字符串str中出现的字符串a    strcmp(s1, s2)   比较字符串s1和s2    substring(str, x, y)   返回从字符串str x 位置起y个字符长度的字串    2、数值函数    abs(x)   返回x的绝对值    rand()   返回0到1内的随机值    ......    3、时间和日期函数    curdate()   返回当前日期    curtime()   返回当前时间    now()       返回当前的日期和时间    ......    4、流程函数    if(value, t, f) 如果value是真,返回t,否则返回f    ......    5、其他常用函数    database()   返回当前数据库名    user()       返回当前登录用户名

原创粉丝点击