当前位置 博文首页 > 用心编码:mysql数据库基础(一)

    用心编码:mysql数据库基础(一)

    作者:[db:作者] 时间:2021-09-07 13:26

    一、 表操作

     1.创建数据库
       CREATE DATABASE mydb CHARACTER SET utf8;
     2.创建数据表
       CREATE TABLE IF NOT EXISTS person(
        person_id SMALLINT UNSIGNED,
        fname VARCHAR(30),
        lname VARCHAR(20),
        genter ENUM('M','f'),
        CONSTRAINT pk_person PRIMARY KEY(person_id));
    
       CREATE TABLE IF NOT EXISTS favorate_food(
        person_id SMALLINT UNSIGNED,
        food VARCHAR(30),
        CONSTRAINT pk_per_food PRIMARY KEY(person_id,food),
        CONSTRAINT fk_food_fav_per FOREIGN KEY (person_id) REFERENCES person(person_id));
    
        例如:
    
        mysql> CREATE TABLE IF NOT EXISTS transaction(
      -> txn_id INTEGER UNSIGNED,
      -> txn_date DATETIME,
      -> account_id INTEGER UNSIGNED,
      -> txn_type_cd VARCHAR(10),
      -> amount DOUBLE(10,2),
      -> teller_emp_id SMALLINT UNSIGNED,
      -> execution_branch_id SMALLINT UNSIGNED,
      -> funds_avail_date DATETIME,
      -> CONSTRAINT PRIMARY KEY(txn_id),
      -> FOREIGN KEY(account_id) REFERENCES account(account_id),
      -> FOREIGN KEY(teller_emp_id) REFERENCES employee(emp_id),
      -> FOREIGN KEY(execution_branch_id) REFERENCES branch(branch_id));
     Query OK, 0 rows affected (0.04 sec)       
    
     3.修改表字段
       ALTER TABLE person MOFIDY person_id SMALLINT UNSIGNED AUTO_INCREMENT;
      4.删除表
       DROP TABLE person;
    

    二、约束(constraint)

     1.主键约束(PRIMARY KEY)
       CONSTRAINT pk_person PRIMARY KEY(person_id)
     2.外键约束(FOREIGN KEY(...) REFERENCES table(...))
       CONSTRAINT fk_fav_per FOREIGN KEY(person_id) REFERENCES person(person_id);
     3.检查约束之枚举(ENUM)
       genter ENUM('M','F')
    

    三、数据操作

     1.插入
      INSERT INTO person(person_id,fname,lname,genter) 
      VALUES(null,'Smis','Zh','F');
     2.更新
      UPDATE person SET fname = 'SSS',lname='miei' WHERE person_id = 1;
     3.删除
        DELETE FROM person WHERE person_id = 1;
     4.查询
    

    四、查询入门

    1.查询机制
    每当查询被发送到服务器端时,服务器在执行语句之前会进行如下检查:
    (1)用户是否有权限执行该语句
    (2)用户是否有权限访问目标数据库
    (3)语句语法是否正确
    如果通过了检查,语句就会被传递给查询优化器,它负责为查询找到最有效率的执行方式。
    当服务器执行完查询后,就会向调用程序返回一个结果集。
    
    2.查询语句
    字句:select,from,where,group by,having,order by.
    (1)select : select 字句中可以加入 字符、表达式、函数等。
    (2)distinct : 可以去除重复的行。
    (3)from : from字句定义了查询中使用的表,以及连接这些表的方式。
    1].临时表:
    select e.emp_id ,e.fname from (select * from employee) e where e.emp_id > 2;
    (4)where : 对结果集进行筛选。
    (5)group by : 根据列值对数据进行分组。
    (6)having : 对分组数据进行过滤。
    (7)order by: 对结果集中的原始列数据或是根据列值数据计算的表达式结果进行排序。默认为升序(ASC),降序为(DESC)。还可以根据表达式排序。

    五、表的分类

    1. 永久表

      永久表:采用 create table 来创建的表
    2. 临时表

      临时表:子查询返回的表
    3. 虚拟表
    虚拟表:使用 create view 创建的视图,它的行为表现得像一个表,但实际上并不拥有任何数据,当发出一个对视图的查询时,该查询会被绑定到视图定义上,以产生最终被执行的查询。
    
    创建虚拟表:
    create view employee_vw as select emp_id,fname,lname, YEAR(start_date) start_year from employee;
    使用虚拟表:
    select emp_id,start_year from employee_vw;
    cs
    下一篇:没有了