zoukankan      html  css  js  c++  java
  • MySQL

    1.创建数据库:
    create database 数据库名;
    eg:create database mydb;
    2.选择数据库
    use 数据库名称;
    eg:use mydb;
    3.查看该数据库下的所有表;
    show tables;
    4.查看表结构
    desc 表名;
    eg: desc dept
    5.创建表的语句。
    create table 表名
    {
    列名 数据类型 [约束],
    列名2 数据类型2 [约束],
    .....
    }
    eg:
    create table dept
    (
    deptId int primary key auto_increment,
    deptName varchar(20),
    deptNum int,
    deptDesc varchar(200)
    );
    create table employee
    (
    empId int primary key auto_increment,
    empName varchar(20),
    empSalary numeric(10,2),
    empAdress varchar(20),
    deptId int,
    foreign key(deptId) references dept(deptId)
    );

    6.插入语句:
    语法:insert into 表名(列名1,列名2....) values(值1,值2...)
    如果主键自增,不需要给主键插入值。
    eg:insert into dept(deptName,deptNum,deptDesc) values('test',2,'test info');
    MySQL中可以一次性插入多行记录
    insert into 表名(列名1,列名2...) values(值1,值2...),(值1,值2...),(值1,值2...)
    eg:insert into dept(deptName,deptNum,deptDesc) values('test',2,'test info'),
    ('test2',3,'test2 info'),('test3',2,'test3 info');

    7.修改语句:
    语法:Lupdate 表名 set 列名1=值1,列名2=值2..... [where 条件]
    如果没有where条件,将修改当前表中所有的记录,经常会用主键作为where的条件
    eg:update dept set deptName='test4',deptNum=1 where deptId=2;

    8.删除语句
    语法:delete from 表名 [where 条件];
    如果没有where条件,将删除当前表中所有的记录,经常会用主键作为where的条件


    9.查询语句
    语法: select 列名1,列名2... from 表名 [where 条件] limit 起始位置,显示条目

    a.查询所有列可以使用*代替所有列.
    select * from dept;
    ===> select deptId,deptName,deptNum,deptDesc from dept;
    b.查询部分列: select 列名1,列名2... from 表名
    select deptId,deptName from dept;

    c.条件查询
    精确查找:
    eg:
    select * from dept where deptId=3;
    select * from dept where deptName='test3';
    范围查找: >,>=,<,<=,<>不等于,=
    eg:
    select deptName,deptNum from dept where deptNum>=0 and deptNum<=2;

    between...and用于替代>=和<=
    select deptName,deptNum from dept where deptNum between 0 and 2;

    模糊查找: like
    通配符:%代表任何长度任意字符。
    _代表任意一个字符。

    select * from dept where deptName like 't%';--部门名称以t开头的
    select * from dept where deptName like 't_';--部门名称为两个字符并且以t开头
    select * from dept where deptName like '_t_';--部门名称为三个字符并且中间为t
    select * from dept where deptName like '%t%';--部门名称中包含t

    --连接查询
    --内连接:inner join ,显示两个表中相关联的数据。
    select 列名1,列名2... from 表名1 inner join 表名2 on(表名1.外键=表名2.主键)
    查看员工姓名,薪水和所属部门名称
    select empName,empSalary,deptName from employee inner join dept on(employee.deptId=dept.deptId);
    查看薪水高于5000的员工姓名,薪水和所属部门名称
    select empName,empSalary,deptName from employee inner join dept on(employee.deptId=dept.deptId) where empSalary>5000;

    --左外连接:left join:以左边的表为主,左边表中记录全部展现,右边只展现与其相关联的记录。
    select 列名1,列名2... from 表名1 left join 表名2 on(表名1.外键=表名2.主键)
    select empName,empSalary,deptName from employee left join dept on(employee.deptId=dept.deptId);

    --右外连接:right join:以右边的表为主,右边表中记录全部展现,左边只展现与其相关联的记录。
    select 列名1,列名2... from 表名1 left join 表名2 on(表名1.外键=表名2.主键)
    select empName,empSalary,deptName from employee right join dept on(employee.deptId=dept.deptId);

    --聚合函数(统计函数):count():计数/sum():求和/avg():求平均值/max():求最大值/min():求最小值;
    select count(*) from employee;
    select sum(empSalary) from employee;
    select avg(empSalary) from employee;
    select max(empSalary) from employee;
    select min(empSalary) from employee;


    --排序: order by 列名1,列名2 asc|desc
    select * from employee order by empSalary asc;--升序
    select * from employee order by empSalary desc;--降序

    --分组: group by
    查询部门平均工资和部门名称
    select deptName,avg(empSalary) from dept inner join employee on(dept.dep
    tId=employee.deptId) group by employee.deptId;

    --having 用于过滤分组后的内容
    查询平均工资大于6000的部门平均工资和部门名称
    select deptName,avg(empSalary) from dept inner join employee on(dept.dep
    tId=employee.deptId) group by employee.deptId having avg(empSalary)>6000;


    子查询:一个查询语句作为另一个查询语句的条件。所有用连接查询能做的事情,子查询都可以实现。

    --查询部门名称为test的所有员工信息
    通过连接查询实现
    mysql> select employee.* from employee inner join dept on(employee.deptId=dept.deptId) where dept.deptName='test';
    通过子查询实现:
    select deptId from dept where deptName='test';
    select * from employee where deptId=1;

    select * from employee where deptId=(select deptId from dept where deptName='test');

    --查询工资大于6000的部门名称,部门人数
    a.查询平均工资大于6000的部门编号
    select deptId from employee group by deptId having avg(emp
    Salary)>6000;

    select * from dept where deptId in(select deptId from employee group by deptId having avg(empSalary)>6000)

  • 相关阅读:
    7.$a = 'abcdef'; 请取出$a的值并打印出第一个字母
    8.PHP可以和sql server/oracle等数据库连接吗?
    6.能够使HTML和PHP分离开使用的模板
    4.用PHP打印出前一天的时间格式是2006-5-10 22:21:21
    5.echo(),print(),print_r()的区别
    3.数据库中的事务是什么?
    spring中配置quartz调用两次及项目日志log4j不能每天生成日志解决方法
    tomcat7性能调优与配置(以windows版为例)
    eclipse中maven下载不了私服上面的第三方包问题
    birt4.6部署到tomcat及启动服务报错解决方法
  • 原文地址:https://www.cnblogs.com/seePoppy/p/6901034.html
Copyright © 2011-2022 走看看