zoukankan      html  css  js  c++  java
  • 数据库2

    1.约束的补充

    show databases; 查看库的数量

    select database() 查看当前当前所在库

    对于mysql来说,数据与数据之间相等就是重复.但是在使用unique后,我们可以重复插入null(空),因为null不能使用'='判断.

    1.联合唯一 unique(列名,列名)

    联合唯一,即只有两个或者多个插入的值完全一样才会报错不能插入,类似于and的效果.

    create table t2(
        id int primary key,
        servername char(12) not null,
        ip char(15),
        port int,
        unique(ip,port)
     );
    insert into t2 values(1,'输入法皮肤','10.10.3.1',8800);
    insert into t2 values(2,'mysql','10.10.2.4',3306);
    insert into t2 values(3,'mysql','10.10.2.5',3306);
    insert into t2 values(4,'输入法推荐','10.10.3.1',8802);
    

    2.自增的 auto_increment

    第一 只能操作数字
    第二 自带非空属性
    第三 只能对unique字段进行设置
    第四 不受删除影响的

    添加auto_increment后,表就有了记忆功能,添加数据时,会按照顺序自动曾加序号,如1234.如果删除了一行甚至多行,继续添加数据,序号不会填补,而是从原来的位置继续增加.相当于记忆功能.

    create table t3(
        id int unique auto_increment,
        name char(12) not null
     );
    insert into t3(name) values('alex'),('hahah'),('tiabai');
    

    3.联合主键 primary key(列名,列名)

    联合主键可以理解为联合 非空唯一,即只有两个或者多个插入的值完全一样才会报错不能插入,类似于and的效果,它只多了一个非空.

    create table t5(
        family_name char(4) not null,
        name char(12) not null,
        primary key(family_name,name)
    );
    

    4.外键约束 foreign key 对应外表中的字段至少是unique的,推荐使用主键作为关联字段.

    create table class3(
      id int primary ,
      cname char(12) not null unique,
      start_date date,
      period char(12),
      course char(12),
      teacher char(12)
    );
    create table student3(
      id int primary key auto_increment,
      name char(12) not null,
      gender enum('male','female'),
      cid int,
      foreign key(cid) references class3(id) on delete cascade on update cascade
    );
    

    2.单表查询---select

    select 筛选列

    select user();
    select database();
    select now();

    select * from 表名;
    select 字段名 from 表名;
    select 字段名,字段名,字段名 from 表名;

    select distinct 字段 from 表; (对查出来的字段进行去重)

    select emp_name,salary*12 from 表; (字段salary参与了四则运算)

    select concat(字段,'字符串2',字段) from 表 (拼接)
    select concat(emp_name,' : ',salary) as info from employee;
    select concat(emp_name,' : ',salary) info from employee;
    select concat_ws('分隔符',字符串,字段1,字段2) info from employee;
    select concat_ws('|','信息',emp_name,salary) info from employee; (信息 |emp_name|salary)

    select(
        case
        when emp_name = 'alex' then
            concat(emp_name,'BIGSB')
        when emp_name = 'jingliyang' then
            emp_name
        else
           concat(emp_name,'sb')
        end
        ) as new_name
    from employee;
    

    3.单表查询---where

    where 筛选行

    select * from 表 where 条件
    

    ​ 一.范围运算

    1. 比较运算符:> < >= <= <> !=

    2. between 80 and 100 值在80到100之间

    3. in(80,90,100) 值是80或90或100

      二.模糊查询

    4. like 'e%'
      通配符可以是%或_,
      %表示任意多字符
      _表示一个字符

      三.;逻辑运算

    5. 逻辑运算符:

      在多个条件直接可以使用逻辑运算符 and or not

    #1:单条件查询
        SELECT emp_name FROM employee
            WHERE post='sale';
            
    #2:多条件查询
        SELECT emp_name,salary FROM employee
            WHERE post='teacher' AND salary>10000;
    
    #3:关键字BETWEEN AND
        SELECT emp_name,salary FROM employee 
            WHERE salary BETWEEN 10000 AND 20000;
    
        SELECT emp_name,salary FROM employee 
            WHERE salary NOT BETWEEN 10000 AND 20000;
        
    #4:关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS)
        SELECT emp_name,post_comment FROM employee 
            WHERE post_comment IS NULL;
    
        SELECT emp_name,post_comment FROM employee 
            WHERE post_comment IS NOT NULL;
            
        SELECT emp_name,post_comment FROM employee 
            WHERE post_comment=''; 注意''是空字符串,不是null
        ps:
            执行
            update employee set post_comment='' where id=2;
            再用上条查看,就会有结果了
    
    #5:关键字IN集合查询
        SELECT emp_name,salary FROM employee 
            WHERE salary=3000 OR salary=3500 OR salary=4000 OR salary=9000 ;
        
        SELECT emp_name,salary FROM employee 
            WHERE salary IN (3000,3500,4000,9000) ;
    
        SELECT emp_name,salary FROM employee 
            WHERE salary NOT IN (3000,3500,4000,9000) ;
    
    #6:关键字LIKE模糊查询
        通配符’%’
        SELECT * FROM employee 
                WHERE emp_name LIKE 'eg%';
    
        通配符’_’
        SELECT * FROM employee 
                WHERE emp_name LIKE 'al__';
    
  • 相关阅读:
    python_way day16 DOM
    python_way day15 HTML-DAY2、 回顾HTML-CSS 标签(css强制生效),JS(数据类型,时间处理,作用域)
    预习 jQuary
    python_way day14 CSS,莫泰对话框
    python_way day14 HTML
    php 连接mysql的问题
    python_way day13 paramiko
    List源码学习之LinkedList
    List源码学习之ArrayList
    Jasper之table报表
  • 原文地址:https://www.cnblogs.com/hql1117/p/11278967.html
Copyright © 2011-2022 走看看