zoukankan      html  css  js  c++  java
  • MySQL-----表操作

    select查询

    1 简单查询
    select * from employee;
    select name,salary from employee;
    
    2 where条件
    select name,salary from employee where salary > 10000;
    select name,salary from employee where salary > 10000 and salary < 20000;
    select name,salary from employee where salary between 10000 and 20000;
    select name,salary from employee where salary not between 10000 and 20000;
    
    select name,salary from employee where salary = 10000 or salary = 20000 or salary = 30000;
    select name,salary from employee where salary in (10000,20000,30000);
    
    
    select * from employee where salary = 10000 or age = 18 or sex='male';
    
    select * from employee where post_comment is Null;
    select * from employee where post_comment = Null;
    select * from employee where post_comment is not Null;
    
     select * from employee where name like '%n%';
    
    select * from employee where name like 'e__n';
    
    3 group by分组
    mysql> select depart_id,group_concat(name)  from employee group by depart_id;
    +-----------+--------------------------------------------------------------+
    | depart_id | group_concat(name)                                           |
    +-----------+--------------------------------------------------------------+
    |         1 | egon,alex,wupeiqi,yuanhao,liwenzhou,jingliyang,jinxin,成龙   |
    |         2 | 歪歪,丫丫,丁丁,星星,格格                                     |
    |         3 | 张野,程咬金,程咬银,程咬铜,程咬铁                             |
    +-----------+--------------------------------------------------------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,count(id)  from employee group by depart_id;
    +-----------+-----------+
    | depart_id | count(id) |
    +-----------+-----------+
    |         1 |         8 |
    |         2 |         5 |
    |         3 |         5 |
    +-----------+-----------+
    3 rows in set (0.01 sec)
    
    mysql> select depart_id,group_concat(id)  from employee group by depart_id;
    +-----------+------------------+
    | depart_id | group_concat(id) |
    +-----------+------------------+
    |         1 | 1,2,3,4,5,6,7,8  |
    |         2 | 9,10,11,12,13    |
    |         3 | 14,15,16,17,18   |
    +-----------+------------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,count(id)  from employee group by depart_id;
    +-----------+-----------+
    | depart_id | count(id) |
    +-----------+-----------+
    |         1 |         8 |
    |         2 |         5 |
    |         3 |         5 |
    +-----------+-----------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,max(salary) from employee group by depart_id;
    +-----------+-------------+
    | depart_id | max(salary) |
    +-----------+-------------+
    |         1 |  1000000.31 |
    |         2 |     4000.33 |
    |         3 |    20000.00 |
    +-----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,min(salary) from employee group by depart_id;
    +-----------+-------------+
    | depart_id | min(salary) |
    +-----------+-------------+
    |         1 |     2100.00 |
    |         2 |     1000.37 |
    |         3 |    10000.13 |
    +-----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,sum(salary) from employee group by depart_id;
    +-----------+-------------+
    | depart_id | sum(salary) |
    +-----------+-------------+
    |         1 |  1070200.64 |
    |         2 |    13001.47 |
    |         3 |    84000.13 |
    +-----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> select depart_id,avg(salary) from employee group by depart_id;
    +-----------+---------------+
    | depart_id | avg(salary)   |
    +-----------+---------------+
    |         1 | 133775.080000 |
    |         2 |   2600.294000 |
    |         3 |  16800.026000 |
    +-----------+---------------+
    3 rows in set (0.00 sec)

    建立表之间的关系

    创建表
    语法:
    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );
    注意:
    1. 在同一张表中,字段名是不能相同
    2. 宽度和约束条件可选
    3. 字段名和类型是必须的
    
    永久解决编码问题
    #1. 修改配置文件
    [mysqld]
    default-character-set=utf8
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    
    #mysql5.5以上:修改方式有所改动
        [mysqld]
        character-set-server=utf8
        collation-server=utf8_general_ci
        [client]
        default-character-set=utf8
        [mysql]
        default-character-set=utf8
    
    #2. 重启服务
    #3. 查看修改结果:
    s
    show variables like '%char%'
    注意注意注意:表中的最后一个字段不要加逗号
    
    
    
    
    1 多对一:左边表的多条记录对应右面表的唯一一条记录
    create table dep(
    id int primary key auto_increment, #被关联的字段必须保证是唯一的
    name varchar(20),
    comment varchar(50)
    );
    
    
    create table emp(
    id int primary key auto_increment,
    name varchar(20),
    dep_id int, #关联的字段,一定要保证是可以重复的
    constraint fk_depid_id foreign key(dep_id)  references dep(id)
    on update cascade
    on delete cascade
    );
    
    建立多对一的关系需要注意
    1 先建立被关联的表,被关联的字段必须保证是唯一的
    2 再创建关联的表,关联的字段,一定要保证是可以重复的
    ps:关联的字段一定是来自于表关联的表对应字段的值
    
    
    2 一对一的关系:
    create table user(
    uid int primary key auto_increment,
    name varchar(15)
    );
    insert into user(name) values
    ('egon1'),
    ('egon2'),
    ('egon3'),
    ('egon4'),
    ('egon5'),
    ('egon6');
    
    
    
    create table admin(
    id int primary key auto_increment,
    user_id int unique,
    password varchar(20),
    foreign key(user_id) references user(uid)
    on update cascade
    on delete cascade
    );
    
    
    insert into admin(user_id,password) values
    (3,'alex3714'),
    (5,'alex371asdf4');

    乱乱的练习

    create table class(
    cid int primary key auto_increment,
    caption varchar(20)
    );
    
    create table student(
    sid int primary key auto_increment,
    sname varchar(20),
    gender varchar(20),
    class_id int,
    foreign key(class_id) references class(cid)
    on delete cascade
    on update cascade
    )engine=innodb;
    
    create table teacher(
    tid int primary key auto_increment,
    tname varchar(20)
    );
    
    create table course(
    cid int primary key auto_increment,
    cname varchar(10),
    teacher_id int,
    foreign key(teacher_id) references teacher(tid)
    on delete cascade
    on update cascade
    )engine=innodb;
    
    create table score(
    sid int primary key auto_increment,
    student_id int not null,
    corse_id int not null,
    number int
    );
    insert into class(caption) values('三年二班'),('一年三班'),('三年一班');
    insert into student(sname,gender,class_id) values('钢蛋','',1),
    ('铁锤','',1),
    ('山炮','',2);
    insert into teacher(tname) values('刘老师'),('田老师'),('林老师');
    insert into course(cname,teacher_id) values('生物',1),('体育',1),('物理',2);
    insert into score values(1,1,1,60),(2,1,2,59),(3,2,2,100);
    
    
    
    
    
    练习:账号信息表,用户组,主机表,主机组
    
    
    复制代码
    #用户表
    create table user(
    id int not null unique auto_increment,
    username varchar(20) not null,
    password varchar(50) not null,
    primary key(username,password)
    );
    
    insert into user(username,password) values
    ('root','123'),
    ('egon','456'),
    ('alex','alex3714')
    ;
    
    
    #用户组表
    create table usergroup(
    id int primary key auto_increment,
    groupname varchar(20) not null unique
    );
    
    insert into usergroup(groupname) values
    ('IT'),
    ('Sale'),
    ('Finance'),
    ('boss')
    ;
    
    
    #主机表
    create table host(
    id int primary key auto_increment,
    ip char(15) not null unique default '127.0.0.1'
    );
    
    insert into host(ip) values
    ('172.16.45.2'),
    ('172.16.31.10'),
    ('172.16.45.3'),
    ('172.16.31.11'),
    ('172.10.45.3'),
    ('172.10.45.4'),
    ('172.10.45.5'),
    ('192.168.1.20'),
    ('192.168.1.21'),
    ('192.168.1.22'),
    ('192.168.2.23'),
    ('192.168.2.223'),
    ('192.168.2.24'),
    ('192.168.3.22'),
    ('192.168.3.23'),
    ('192.168.3.24')
    ;
    
    
    #业务线表
    create table business(
    id int primary key auto_increment,
    business varchar(20) not null unique
    );
    insert into business(business) values
    ('轻松贷'),
    ('随便花'),
    ('大富翁'),
    ('穷一生')
    ;
    
    
    #建关系:user与usergroup
    
    create table user2usergroup(
    id int not null unique auto_increment,
    user_id int not null,
    group_id int not null,
    primary key(user_id,group_id),
    foreign key(user_id) references user(id),
    foreign key(group_id) references usergroup(id)
    );
    
    insert into user2usergroup(user_id,group_id) values
    (1,1),
    (1,2),
    (1,3),
    (1,4),
    (2,3),
    (2,4),
    (3,4)
    ;
    
    
    
    #建关系:host与business
    
    create table host2business(
    id int not null unique auto_increment,
    host_id int not null,
    business_id int not null,
    primary key(host_id,business_id),
    foreign key(host_id) references host(id),
    foreign key(business_id) references business(id)
    );
    
    insert into host2business(host_id,business_id) values
    (1,1),
    (1,2),
    (1,3),
    (2,2),
    (2,3),
    (3,4)
    ;
    
    #建关系:user与host
    
    create table user2host(
    id int not null unique auto_increment,
    user_id int not null,
    host_id int not null,
    primary key(user_id,host_id),
    foreign key(user_id) references user(id),
    foreign key(host_id) references host(id)
    );
    
    insert into user2host(user_id,host_id) values
    (1,1),
    (1,2),
    (1,3),
    (1,4),
    (1,5),
    (1,6),
    (1,7),
    (1,8),
    (1,9),
    (1,10),
    (1,11),
    (1,12),
    (1,13),
    (1,14),
    (1,15),
    (1,16),
    (2,2),
    (2,3),
    (2,4),
    (2,5),
    (3,10),
    (3,11),
    (3,12)
    
    
    
    
    
    
    
    
    
    
    
    
    employee 表
    create table employee(
    id int not null unique auto_increment,
    name varchar(20) not null,
    sex enum('male','female') not null default 'male', #大部分是男的
    age int(3) unsigned not null default 28,
    hire_date date not null,
    post varchar(50),
    post_comment varchar(100),
    salary double(15,2),
    office int, #一个部门一个屋子
    depart_id int
    );
    
    insert into employee(name,sex,age,hire_date,post,salary,office,depart_id) values
    ('egon','male',18,'20170301','老男孩驻沙河办事处外交大使',7300.33,401,1), #以下是教学部
    ('alex','male',78,'20150302','teacher',1000000.31,401,1),
    ('wupeiqi','male',81,'20130305','teacher',8300,401,1),
    ('yuanhao','male',73,'20140701','teacher',3500,401,1),
    ('liwenzhou','male',28,'20121101','teacher',2100,401,1),
    ('jingliyang','female',18,'20110211','teacher',9000,401,1),
    ('jinxin','male',18,'19000301','teacher',30000,401,1),
    ('成龙','male',48,'20101111','teacher',10000,401,1),
    
    ('歪歪','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门
    ('丫丫','female',38,'20101101','sale',2000.35,402,2),
    ('丁丁','female',18,'20110312','sale',1000.37,402,2),
    ('星星','female',18,'20160513','sale',3000.29,402,2),
    ('格格','female',28,'20170127','sale',4000.33,402,2),
    
    ('张野','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门
    ('程咬金','male',18,'19970312','operation',20000,403,3),
    ('程咬银','female',18,'20130311','operation',19000,403,3),
    ('程咬铜','male',18,'20150411','operation',18000,403,3),
    ('程咬铁','female',18,'20140512','operation',17000,403,3)
    ;
  • 相关阅读:
    Qt禁止调整窗口的大小
    CentOS 6.2修改主机名
    怎么培养新人
    软件的质量控制
    如何留住骨干
    物化视图索引引发的问题
    Oracle查询脚本优化
    Oracle视图编译错误解决办法
    spring切面配置,代理用jdk和cglib的区别
    Tomcat起了一个测试桩,调用该测试桩无响应
  • 原文地址:https://www.cnblogs.com/1996-11-01-614lb/p/7510306.html
Copyright © 2011-2022 走看看