zoukankan      html  css  js  c++  java
  • MySQL入门命令

    SQL(Structured Query Language)

    SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库

    • SQL语句主要分为:
      • DQL:数据查询语言,用于对数据进行查询,如select
      • DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
      • TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
      • DCL:数据控制语言,进行授权与权限回收,如grant、revoke
      • DDL:数据定义语言,进行数据库、表的管理等,如create、drop
      • CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
    • 对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
    • SQL 是一门特殊的语言,专门用来操作关系数据库
    • SQL语句对不区分大小写.

    -- 数据库的操作
    
        -- 链接数据库
        mysql -uroot -p
        mysql -uroot -pmysql
    
        -- 退出数据库
        exit/quit/ctrl+d
        
    
        -- sql语句最后需要有分号;结尾
        -- 显示数据库版本
        select version();
    
        -- 显示时间
        select now();
    
        -- 查看所有数据库
        show databases;
        
    
        -- 创建数据库
        -- create database 数据库名 charset=utf8;
        create database python04;
        create database python04new charset=utf8;
    
    
        -- 查看创建数据库的语句
        -- show crate database ....
        show create database python04;
        
    
        -- 查看当前使用的数据库
        select database();
    
        -- 使用数据库
        -- use 数据库的名字
        use python04new;
    
        -- 删除数据库
        -- drop database 数据库名;
        drop database python04;
    
    
    -- 数据表的操作
    
        -- 查看当前数据库中所有表
        show tables;
        
    
        -- 创建表
        -- auto_increment表示自动增长
        -- not null 表示不能为空
        -- primary key 表示主键
        -- default 默认值
        -- create table 数据表名字 (字段 类型 约束[, 字段 类型 约束]);
        create table xxxxx(id int, name varchar(30));
        create table yyyyy(id int primary key not null auto_increment, name varchar(30));
        create table zzzzz(
            id int primary key not null auto_increment,
            name varchar(30)
        );
    
        -- 查看表结构
        -- desc 数据表的名字;
        desc xxxxx;
    
        -- 创建students表(id、name、age、high、gender、cls_id)
        create table students(
            id int unsigned not null auto_increment primary key,
            name varchar(30),
            age tinyint unsigned default 0,
            high decimal(5,2),
            gender enum("男", "女", "中性", "保密") default "保密",
            cls_id int unsigned
        );
    
        insert into students values(0, "老王", 18, 188.88, "男", 0);
        select * from students;
    
        -- 创建classes表(id、name)
        create table classes(
            id int unsigned not null auto_increment primary key,
            name varchar(30)
        );
    
        insert into classes values(0, "python04大神");
        select * from classes;
        
        -- insert的时候用1,2,3代替"男","女","保密".  bit 相当于bit(1), 可以insert 0,1. bit(2)就是可以存值0,1,2,3.
        -- insert中对应的默认值约束的字段, 如果采用默认值, 只能写 default占位, 不能写default的值,如 gender字段写"保密"(只是是插入一个字符串"保密",软件没有当做默认值). 而主键字段插入的时候用0,null,default占位都行.
        create table students(
            gender enum("男","女","保密") default "保密", 
            is_delete bit default 0 
        );
        
        -- 将分组结果写入到goods_cates数据表:
            insert into goods_cates (name) select cate_name from goods group by cate_name;
    
        -- 查看表的创建语句
        -- show create table 表名字;
        show create table students;
    
    
        -- 修改表-添加字段
        -- alter table 表名 add 列名 类型;
        alter table students add birthday datetime;
        
    
        -- 修改表-修改字段:不重命名版
        -- alter table 表名 modify 列名 类型及约束;
        alter table students modify birthday date;
    
    
        -- 修改表-修改字段:重命名版
        -- alter table 表名 change 原名 新名 类型及约束;
        alter table students change birthday birth date default "2000-01-01";
    
    
        -- 修改表-删除字段
        -- alter table 表名 drop 列名;
        alter table students drop high;
    
    
        -- 删除表
        -- drop table 表名;
        -- drop database 数据库;
        -- drop table 数据表;
        drop table xxxxx;
    
        
    -- 增删改查(curd)
    
        -- 增加
            -- 全列插入
            -- insert [into] 表名 values(...)
            -- 主键字段 可以用 0  null   default 来占位
            -- 向classes表中插入 一个班级
            insert into classes values(0, "菜鸟班");
    
    
            +--------+-------------------------------------+------+-----+------------+----------------+
            | Field  | Type                                | Null | Key | Default    | Extra          |
            +--------+-------------------------------------+------+-----+------------+----------------+
            | id     | int(10) unsigned                    | NO   | PRI | NULL       | auto_increment |
            | name   | varchar(30)                         | YES  |     | NULL       |                |
            | age    | tinyint(3) unsigned                 | YES  |     | 0          |                |
            | gender | enum('男','女','中性','保密')       | YES  |     | 保密       |                |
            | cls_id | int(10) unsigned                    | YES  |     | NULL       |                |
            | birth  | date                                | YES  |     | 2000-01-01 |                |
            +--------+-------------------------------------+------+-----+------------+----------------+
    
            -- 向students表插入 一个学生信息
            insert into students values(0, "小李飞刀", 20, "女", 1, "1990-01-01");
            insert into students values(null, "小李飞刀", 20, "女", 1, "1990-01-01");
            insert into students values(default, "小李飞刀", 20, "女", 1, "1990-01-01");
    
            -- 失败
            -- insert into students values(default, "小李飞刀", 20, "第4性别", 1, "1990-02-01");
    
            -- 枚举中 的 下标从1 开始 1---“男” 2--->"女"....
            insert into students values(default, "小李飞刀", 20, 1, 1, "1990-02-01");
    
            -- 部分插入
            -- insert into 表名(列1,...) values(值1,...)
            insert into students (name, gender) values ("小乔", 2);
    
    
            -- 多行插入
            insert into students (name, gender) values ("大乔", 2),("貂蝉", 2);
            insert into students values(default, "西施", 20, "女", 1, "1990-01-01"), (default, "王昭君", 20, "女", 1, "1990-01-01");
    
    
        -- 修改
        -- update 表名 set 列1=值1,列2=值2... where 条件;
            update students set gender=1; -- 全部都改
            update students set gender=1 where name="小李飞刀"; -- 只要name是小李飞刀的 全部的修改
            update students set gender=1 where id=3; -- 只要id为3的 进行修改
            update students set age=22, gender=1 where id=3; -- 只要id为3的 进行修改
        
        -- 查询基本使用
            -- 查询所有列
            -- select * from 表名;
            select * from students;
    
            ---定条件查询
            select * from students where name="小李飞刀"; -- 查询 name为小李飞刀的所有信息
            select * from students where id>3; -- 查询 name为小李飞刀的所有信息
    
    
            -- 查询指定列
            -- select 列1,列2,... from 表名;
            select name,gender from students;
    
    
            -- 可以使用as为列或表指定别名
            -- select 字段[as 别名] , 字段[as 别名] from 数据表 where ....;
            select name as 姓名,gender as 性别 from students;
    
    
            -- 字段的顺序
            select id as 序号, gender as 性别, name as 姓名 from students;
            
            -- 使用正则匹配
            select name from stu where name rlike "^周.*轮$";
            select * from a where id regexp '[0-9][^a]..*';
    
        -- 删除
            -- 物理删除
            -- delete from 表名 where 条件
            delete from students; -- 整个数据表中的所有数据全部删除
            delete from students where name="小李飞刀";
    
            -- 逻辑删除
            -- 用一个字段来表示 这条信息是否已经不能再使用了
            -- 给students表添加一个is_delete字段 bit 类型
            alter table students add is_delete bit default 0;
            update students set is_delete=1 where id=6;
    
    

    mysql添加外键注意事项

    1.确保主键和外键字段类型、大小、编码一致; 
    2.确保表引擎一致; 
    3.确保主表中的数据副表中有对应的值; 
    4.确保外键名不重复;

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/carlous/p/10567646.html
Copyright © 2011-2022 走看看