您的位置:新葡亰496net > 网络数据库 > mysql学习的笔记A,MySql命令行命令和SQL语句

mysql学习的笔记A,MySql命令行命令和SQL语句

发布时间:2019-12-10 14:09编辑:网络数据库浏览(64)

    1.安装mysql客户端流程:

    1.检验是否安装成功
    命令台 services.msc 找到mysql服务
    cmd path 是否有 mysql的bin目录
    2.启动和停止mysql服务
    net stop mysql
    net start mysql
    3.登陆mysql
    mysql -u root -p caocao
    4.其它命令
    h,?,q exit, quit status use
    5.创建数据库
    create database db_name;
    6.查看数据库
    show databases;
    show create database db_name;
    7.删除数据库
    drop database db_name;
    8.选择数据库
    use db_name;
    查看当前使用的数据库
    select database();
    9.创建表
    create table table_name
    ( field1 datatype,
    field1 datatype,
    field1 datatype
    )
    10.查看表
    show tables;
    查看表结构
    desc table_name;
    查看建表语句
    show create table table_name;
    11.修改数据表
    增加列
    alter table table_name add colum datatype;
    修改列
    alter table table_name modify colum datatype;
    删除列
    alter table table_name drop colum;
    修改表名
    rename table table_name to new_table_name;
    修改列名
    alter table table_name change colum_name new_colum_name datatype;
    12.删除表
    Drop table table_name;
    13.约束条件 说明
    primary key 主键约束,用于唯一标识对应的记录
    foreign key 外键约束
    not null 非空约束
    unique 唯一性约束
    default 默认值约束,用于设置字段的默认值
    13.1 主键约束
    每个数据库最多只能有一个主键约束,不能重复,不能为空,
    字段名 数据类型 primary key;
    13.2 非空约束
    字段名 数据类型 not null;(可以有多个)
    13.3 唯一约束
    字段名 数据类型 unique;
    13.4 默认约束
    字段名 数据类型 default 默认值;
    13.5设置表的字段值自动增加
    auto_increment
    字段名 数据类型 auto_increment;
    14.为表中所有字段添加数据
    insert into table_name
    values(value1,value2...)
    为表指定字段添加数据
    insert into table_name (colum1, colum2...)
    values(value1, value2...)
    同时添加多条记录
    insert into employee
    values(value1, value2..),
    (value1, value2..),
    (value1, value2..);
    15.更新数据
    update table_name
    set col_name=expr1,...
    [where where_definition]
    16.删除数据
    delete from table_name
    [where where_definition];
    truncate table_name;(与不带where的delete相同,但是他的速度更快)
    drop table(删除表本身)
    17.单表查询
    select [distinct] * {colum1, colum2...} from rable_name;
    查询所有字段
    select * from table_name;
    查询指定字段
    select colum1,colum2...from table_name;
    18.按条件查询
    带关系运算符的查询
    select * from table_name where expr;
    between .. and
    in(set)
    like ‘x%’;
    is null
    and or not
    19.高级查询
    聚合函数
    count() 返回某行的列数
    sum() 返回某列值得和
    AVG() 返回某列的平均值
    MAX()
    MIN()

    mysql学习的笔记A

    一.常用mysql命令行命令

    新葡亰496net 1

      -  登录navicat官网下载

    1. limit限制查询结果的数量
      select colum1 ,colum2,...
      from 表名
      limit [offset]记录数
      21.为表和字段取别名
      为表取别名
      select 表别名.id, 表别名.name ... from 表名 as 表别名
      where 表别名.id = 2...
      为字段取别名
      select 字段名 [as] 别名 [字段名 [as] 别名,...] from 表名;
      22.多表操作
      为表添加外键约束
      CREATE TABLE department(
      id INT PRIMARY KEY auto_increment,
      name VARCHAR(20) NOT NULL
      );
      CREATE TABLE employee(
      id INT PRIMARY KEY auto_increment,
      name VARCHAR(20) NOT NULL,
      dept_id INT,
      FOREIGN KEY (id) REFERENCES department(id)
      );
      表已存在,通过修改表的语句增加外键
      alter table 表名 add constraint 外键名 foreign key(外键字段名)
      references 外表表名(主键字段名);
      删除外键约束
      alter table 表名 drop foreign key 外键名;

    新葡亰496net, 

      1.启动MYSQL服务 net start mysql

    mysql

      -  将压缩包拷贝ubuntu中进行解压,解压命令:tar zxvf navicat.tar.gz

      新葡亰496net 2 

    Mysql和SQL的语法差不多是一样的,分为以下几个大类。

       停止MYSQL服务 net stop mysql

    内容简介

      -  进入解压目录,运行命令./start_navicatt

      新葡亰496net 3

      新葡亰496net 4

     

      2.netstat -na|findstr 3306 查看被监听的端口,findstr用于查找后面的端口是否存在

    mysql学习的笔记A,MySql命令行命令和SQL语句。  数据库是当前应用非常广泛的一款关系型数据库

      -  如果试用是灰色的则进行下一步

    1、  数据定义语言(DDL):create , alter ,drop 等

      3.在命令行中登录MYSQL控制台,即使用MYSQL COMMEND LINE TOOL

      主要的知识点包括

      -  删除 .navicat64/ 隐藏文件,再次运行即可

      新葡亰496net 5      

      新葡亰496net 6

     

        语法格式 mysql -user=root  -password=123456  db_name

        数据库与表的操作

      -  如果试用界面是乱码的则修改配置文件,改成如下形式(vim常用操作请查看我的另一篇随记):

       新葡亰496net 7

      新葡亰496net 8

    2、  数据操作语言(DML):如插入,修改,删除等

        或者简写格式  mysql -uroot -p123456 db_name

        数据的增加 修改 删除

      -  再次执行第三步操作即可,试用到期可再次删除那个隐藏文件

     

        或者可以不写密码,不写数据库,像这样 mysql -uroot -p (输入这个命令,会提示你输入密码,密码是不可见的,登录之后,根据需要再选择数据库)

        数据的查询(重点)

    2.ubuntu下安装mysql服务端

    3、  数据控制语言(DCL):grant,revoke等

      4.进入MYSQL命令行工具后,使用 status;或/s查看运行环境信息。

        与python交互

      -  sudo apt-get install mysql-server

     

      5.切换连接数据库的语法:use new_dbname;

    创建库与表章简介

    3.验证安装结果

    我们通过控制台的mysql进行数据库操作,mysql语句的结束符是 ';'

      6.显示所有数据库:show databases;

      主要的知识点包括

      -  命令:ps aux|grep mysql,跟下图一样则说明安装成功

      新葡亰496net 9

     

      7.显示数据库中的所有表:show tables;

        能够与mysql建立连接

    4.mysql数据库运行状态

    当我们进入到mysql的控制台之后,可以查看有几个数据库

      8.显示某个表创建时的全部信息:show create table table_name;

        创建数据库、表,分别从图形界面与脚本界面两个方面讲解

      - 4.1  sudo service mysql status  查看数据库运行状态

     

      9.查看表的具体属性信息及表中各字段的描述

      相关的知识点包括:

        - 绿点 正在运行  

        新葡亰496net 10

    数据库操作:

        Describe table_name;简写形式:desc table_name;

        E-R关系模型

        - 白点 停止运行

        新葡亰496net 11

     

    二.MYSQL中的SQL语句

        数据库的3范式,

      - 4.2  sudo service mysql start   启动数据库服务

    显示所有数据库:show databases ;

      1.数据库创建:create database db_name;

        mysql中数据字段的类型,字段约束

       新葡亰496net 12

     

         数据库删除:drop database db_name;删除时可以先判断是否存在,写成:drop database if exits db_name;

      数据库的操作主要包括:

      - 4.3  sudo service mysql stop    停止数据库服务

    删除数据库:drop databases dbname ;

      2.创建数据表:语法------>> create table table_name(字段1 数据类型,字段2 数据类型);

        数据库的操作,包括创建、删除

       新葡亰496net 13

     

                  例子:create table test(id int,username varchar(20);

        表的操作,包括创建、修改、删除

      - 4.4  sudo service mysql restart 重启数据库服务

      新葡亰496net 14

    创建数据库:create database [if not exists] dbname ;

       删除数据表:语法------>> drop table table_name;

        数据的操作,包括增加、修改、删除、查询,简称crud

     5. 登录数据库

     

                  例子:drop table test;

    安装

      - 5.1  通过客户端软件登录,详见步骤1

    切换数据库:use dbname ;

      3.添加数据: 语法------>> insert into 表名[(字段1,字段2....)] values(值1,值2,.....);

      sudo apt-get install mysql-server mysql-client

      - 5.2  通过命令登录

     

                   如果向表中的每个字段都插入一个值,那么前面[]括号内字段名可写可不写

      启动

          - 登录远程主机:mysql [-h 192.168.205.129 –P 3306] –uroot -p

    表操作:

                  例子:insert into test(id,username) values(1,'zhangsan');

        service mysql start

        - h 连接服务端数据库的IP地址

     

                   如果想向表中插入某个字段,则只需要将某个字段在[]括号内写出,然后values中值一一对应即可

      停止

        - P(大写) 连接的端口号,一般为3306

    显示当前使用数据库所有的表对象:show tables;

      4.查询语句: 语法------->> select * from table_name;

        service mysql stop

        - u 用户权限

     

              查询指定字段的数据:select 字段1,字段2 from table_name;

      重启

        - p(小写) 输入密码,一般为mysql

    显示表结构:desc tablename ;   (desc -->describe)

              例子:select id,username from test where id = 1 order by desc;

        service mysql restart

        登陆成功:  

         新葡亰496net 15

     

      5.更新指定数据,更新某一个字段的数据(注意,不是更新字段的名字)

      远程连接

    6. 退出数据库客户端

    创建一张表:

            语法------>> update table_name set 字段名 = '新值'[,字段2 = '新值',.......][where id = id_num][order by 字段 顺序]

        找到mysql配置文件并修改

      -  exit、quit、ctrl d

     

              例子:update test set username = 'lisi' where id = 1;

            sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 将 bind-address=127.0.0.1 注释掉

    7. 配置msyql服务允许远程登录访问

               create table student(

      6.Order语句是查询的顺序,如:order by id desc(或asc),顺序有两种:desc倒叙(100--1)  asc升序(1--100)

      登录

      - 7.1 数据文件夹:

     

        Where和order语句也可以用于查询select 与 删除delete

        mysql -hlocalhost -uroot -p

              新葡亰496net 16

                      uid int,

      7.删除表中的信息:

    数据完整性

       

     

        语法------>> 删除整个表中的信息:delete from table_name;

      一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中

        

                      uname varchar(20),

                删除表中指定的信息:delete from table_name where 条件语句;条件语句如:id = 3;

       在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束

     

     

      8.创建数据库用户

    字段类型

      - 7.2 数据库配置文件:

                      uscore float

        语法------->> create user username1 identified by 'password',username2 identified by 'password'....

      数字型

    新葡亰496net 17

     

               一次可以创建多个数据库用户

        tinyint

      - 7.3 关闭防火墙

               ) ;

      9.用户权限的控制:

            很小的整数

        - sudo apt-get install ufw 安装防火墙

     

       语法------>> grant all on db_name.table_name to user_name[identified by 'password'];

                    1个字节

        - sudo ufw enable 打开防火墙

    子查询的建表方式:注意,新表的列名要与子查询的列明要对应,类型也要一样。

      10.表结构的修改

        int

        - sudo ufw status 查看防火墙状态

     

        1)增加一个字段格式: alter table table_name add column(字段名 字段类型);----此方法带括号

            普通大小的整数

        - sudo ufw disable 关闭防火墙

               create table somestudents(

           指定字段插入的位置:alter table table_name add column 字段名 字段类型 after 某字段名;

                    4个字节

      - 7.4 更改配置文件的bind-address

     

        2)删除一个字段格式: alter table table_name drop 字段名;

        decimal

        - 进入配置文件

                      uid int ,

        3)修改字段名称/类型: alter table talbe_name change 旧字段名 新字段名 新字段的类型;

            压缩的严格的定点数

         新葡亰496net 18

     

        4)改表的名字: alter table table_name rename to new_table_name;

                    M 2个字节

        - 修改mysqld.cnf中的bind-addres,首先给用户可执行权限

                      uname varchat(20)

        5)一次性清空表中的所有数据:truncate table table_name;此方法也会使表中的取号器从1开始

      字符串

         新葡亰496net 19

     

      11.增加主键,外键,约束,索引。。。

        char

        - 再次使用vim修改bind-address

               )

        1)约束 (主键primary key,唯一性unique,非空not null)

            固定长度非二进制字符串

         新葡亰496net 20

     

        2)自动增长 auto_increment

        varchar

        - 修改成功

               as

        3)外键foreign key----与reference table_name(col_name)配合使用,建表时单独使用

            变长非二进制字符串

        - 再把文件权限改回去

        新葡亰496net 21

     

        4)删除多个表中有关联的数据----设置foreign key 为 set null ----具体设置参考帮助文档

        text

      -7.5 修改权限

               select uid,uname from student ;

      12.查看数据库当前引擎

            小的非二进制字符串

        - 权限 update `user` set host=”%” where user=”root”

     

        语法------>>show create table table_name;

      日期

        - 允许指定用户访问:

    复制(备份)表:

        修改数据库引擎

        datetime

        GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.10.11.12' IDENTIFIED BY 'FEFJay' WITH GRANT OPTION;     flush privileges;(IP这里,可以使用%来表示所有IP)

     

          alter table table_name engine=myisam|innodb;

      布尔

        - 重启服务即可

               create table student2          

        BIT

    8. 创建数据库

     

    约束

      - 8.1 使用客户端软件创建数据库

               as

      主键 primary key

      - 8.2 使用命令创建数据库

     

      非空not null

        -  create database 数据库名

               select * from student ;

      唯一 unique

        -  create database 数据库名 character set utf8

     

      默认 default

        -  show create database 数据库名

    删除表:drop table tablename ;

      外键 foreign key

      - 8.3 修改数据库编码

     

    使用命令连接

        -  alter database 数据库名 character set utf8

    清空表里面的数据:truncate table tablename ; 与drop from tablename 相似。

      打开终端

      - 8.4 删除数据库

     

        mysql -uroot -p

        -  drop database 数据库名

    重命名表:alter table student rename to students ;

      退出

      - 8.5 切换、使用数据库

     

        quit exit

         -  use 数据库名

    字段操作:

      查看版本

      - 8.6 显示当前数据库

     

        select version()

        -  select database()

    添加一个表字段:alter table student add addr varchar(20) default ‘abcdefg’ ;

      显示当前时间

      - 8.7 展示所有数据库

     

        select now()

        -  show databases

    (--在mysql中是不区分大小写的,也不区分双引号或单引号--)

    远程连接

    9. 创建数据表

     

      mysql -h ip地址 -uroot -p

      - 9.1 使用命令创建数据表

    添加多个表字段:

      -h后面是连接主机ip地址

        -  create table 表名

     

      -u后面是连接的用户名

        (

                   alter table student

      -p回车后写密码

        字段1 字段类型,

     

    数据库的操作

        字段2 字段类型,

                    add (

      创建数据库

        字段3 字段类型……

     

        create database 数据库名字 charset=utf8

        )

                    phone1 varchar(8) default  ‘12345678’

      删除数据库

      - 9.2 常用数据字段类型

     

        drop database 数据库名

        - 整数

         新葡亰496net 22

                    phone2 varchat(11) default  ‘0000000000’

      切换数据库

        - 小数

         新葡亰496net 23

     

        use 数据库名

        - 字符串

         新葡亰496net 24

                    ) ;

      查看当前选择的数据库

        - 日期时间类型

         新葡亰496net 25

        新葡亰496net 26

     

        select database()

        - 枚举

    修改表字段:将phone1的长度扩展到9位,设置默认值,并设置为表的第一列。

    表操作

    10.查询

     

      查看当前数据库中所有表

      - 10.1 查询数据表中全部的行和列

                  alter table student modify phone1varchar(9)  default ‘123456789’  first ;

        show tables;

        - select col1,col2,col3….from table

     

      创建表

        - select * from table

    将phone2设置在phone1字段后面

        create table 表名(列及类型)

      - 10.2 查询表的部分列

     

            auto_increment 表示自增长

        - select col1,col2,col3…from table

                  alter table student modify phone2varchar(11) after phone1 ;

       修改表

      - 10.3 给查询出来的数据列设置别名

     

        修改列名字

        - select col1 as “别名1”,col2 as ‘别名2’…from table

    修改多个字段:mysql中alter modify不允许一次修改多个列(就像insert一样,一个insert可以插入多个行),但是oracle可以,但是mysql中可以通过多个modify来修改多个列。

            alter table 表名 add|change|drop 列名 类型;

        - select col1 ‘别名1’,col2 ‘别名2’….from table

     

        修改数据段落的数据类型

        - 注意多表查询重名问题

                  alter table student

            alter table 表名 modify 属性名 数据类型

      - 10.4 DISTINCT关键字的使用

     

        修改字段名

        - 作用:消除结果集中的重复数据

                  modify phone2 varchar(11) default ‘12345678999’,

            alter table 表名 change 旧属性名 心新属性名

        - 语法:select distinct col from table

     

        增加字段

        - 注意:要求所有的字段都相同才会去重

                  modify phone1 varchar(9) default ‘987654321’ ;

            alter table 表名 add 表名 属性名1 数据类型

      - 10.5 LIMIT关键字的使用

     

        删除字段

        - 作用:指定结果的显示范围

    删除指定字段:alter table student drop phone1 ;

            alter table 表名 deop 属性名

        - 语法:

     

        指定的位置插入

        -  select * from table limit m,n

    字段重命名:如果需要改变列名,建议使用change,如果只需要改变数据类型和显示位置用modify。

            alter table 表名 add 属性名 数据类型 atfer(之后)/first(头部)

          m:起始的位置

     

      删除表

          n:显示的数量

                 alter table student change uname name varchar(20) ;

        drop table 表名

        -  select * from table limit m

     

      查看表结构

          m:从第一条开始共显示m条数据 

    约束:

        desc 表名

    11. 插入数据

     

      更改表的名称

      - 11.1 所有列都插入值

    not null :某列的值不能为空

        rename table 原名字 to 新表名

        - 语法:insert into table values(v1,v2,v3….)

     

      查看表的创建语句

        - 特点:列值同数,列值同序

    unique: 唯一约束,不能重复,可以为空。

        show create table 表名

      - 11.2 为指定列插入值

     

    数据的操作

        - 语法:insert into table(col1,col2,col3) values(v1,v2,v3)

    primary key :主见约束,不能重复,不能为空,

      查询

        - 特点:指定顺序,列值对应

     

        select * from 表名

      - 11.3 一次性插入多条记录

    foreign key :外键,

      增加

        - 语法:insert into table(co1,col2,col3…)values

     

        全列插入

            (v1,v2,v3),

    check: 指定一个表达式,用于检查指定数据。(mysql不支持,但是可以写。)

            insert into 表名 values(...)

            (v1,v2,v3),

     

        缺省插入

            (v1,v3,v3)…..

    向表中某一字段添加约束:

            insert into 表名(列1,...) values(值1,...)、

    12.修改数据

     

        同时插入多条数据:

      - 12.1 修改指定数据

    非空约束:

            insert into 表名 values(...),(...)...;

        - 语法:update table set {col1=value1}[…n]where expressioin

     

      修改

      - 12.2 修改全部数据

    添加非空约束:alter table student modify uage int not null ;

        update 表名 set 列1=值1,... where 条件

        - 语法:update table set {col1=value1}[…n]

     

            例如:update 表名 set name='123' where id=1

    13. 删除数据

    取消非空约束:alter table student modify uage int null ;

      删除

      - 13.1 使用delete命令删除数据

     

        delete from 表名 where 条件

        - 语法:delete from table where expression

    添加默认约束:alter table student modify uage int default ‘20’  not null ;

    数据的恢复

      - 13.2 逻辑删除

     

      数据恢复

      - 13.3 使用truncate命令删除数据

    唯一约束:

        连接mysql,创建数据库

        - truncate table

     

        退出连接,执行命令

      - 13.4 区别

    添加唯一约束:alter table student add unique (name ,psw) ;用户名和密码不能重复。

            mysql -uroot- p 数据库名>~/desktop/备份文件.sql

        - Delete语句删除数据,自动编号没有恢复到默认值。但是truncate重新设置了自动编号

     

      数据备份

        - 通过truncate语句删除数据表数据,不能根据条件删除,而是一次性删除,delete语句可以根据条件进行删除

                                alter table student modify name varchar(23) unique ;

        进入超级管理员

        - truncate在清空表中数据的时候,速度要比delete语句快的多

     

            sudo -s

    14. 对列进行增删改查

    删除唯一约束:alter table student drop index name ;去掉name列的唯一约束。

        进入mysql目录

      - 14.1  增加一列

     

            cd/var/lib/mysql

        - alter table tablename add 列名 数据类型

    主键约束:

        运行命令

      - 14.2  删除一列

     

            mysql dump -uroot - p 数据库名>~/desktop/备份文件.sql

        - alter table tablename drop column 列名

    添加一个主键约束:alter table student modify uid int primary key ;

    查询

      - 14.3 修改列的数据类型

     

      简介

        - alter table tablename modify 列名 数据类型

    删除主键约束:        alter table student drop primary key ; 去除表中所有主键约束。

        基本用法

      -14.4 修改列的数据类型并且改名

     

            select * from 表名;

        - alter table tablename change old_colname new_colname 数据类型

    添加多个主键约束:alter table student add primary key(uid,uname) ;

        消除重复行

    15. 约束

     

            select distinct 字段名 from 表名;

      - 问题1:数据冗余

      新葡亰496net 27

    将主键设置为递增:alter table student modify uid int auto_increment ;

      条件 语法

      - 问题2:失去了完整性

       新葡亰496net 28

     

            select * from 表名 where 条件;

      - 问题3:数据缺少唯一标识

      新葡亰496net 29

    外键约束:

        比较运算法

      - 问题4:失去了实体完整性

      新葡亰496net 30

     

            等于

      - 问题5:失去了引用完整性

      新葡亰496net 31

    增加外键约束:alter table student add foreign key(phone,addr)

                    =

      - 问题6:失去了域完整性

      新葡亰496net 32

     

            大于

      - 15.1 约束概念:限定数据库中数据的一套规则

                                references class(phone,addr) ;

                    >

      - 15.2 约束作用:保证数据的准确性、完整性、可靠性、联动性

     

            小于

      - 15.3 数据库常用约束:

    删除外键约束:alter table student drop foreign key phone ;

                    <

        - 主键约束

     

            大于等于

          - 作用:让数据具有唯一标识

                                alter table student drop foreign key addr ;

                    >=

          - 语法:

     

            小于等于

              create table table_primarykey

    注意:当主表的记录被从表依赖时,主表的记录不允许被删除,除非从表解除这中依赖关系。

                    <=

              (

     

            不等于

              id int primary key

    check约束:

                    <> !=

              )

     

        逻辑运算符

          - 特点:自动设置非空约束

                    create table temp(

            且

        - 自动增长

     

                    and

          - 作用:使数据自动增长,一般给主键设置

                    id int primary key ,

            或

          - 语法:

     

                    or

              create table table_autoincrement

                    age int ,

            不

              (

     

                    not

              id int primary key auto_increment

                   check (age > 20 )

        模糊查询

              )

     

            语法

        - 唯一约束

                    ) ;

                    select * from 表名 where 查询名 like '' '';

          - 作用:保证数据的准确性

     

                    %表示任意多个字符

          - 语法:

    这里的约束age>20实际上是不会产生作用的。

                    _表示一任意字符

              create table table_unique

     

        范围查询

              (

    索引:

            in 表示在一个非连续的范围内

              qqnumber int unique

     

                    select * from 表名 where id in(1,2,6,8);

              )

    创建索引方式:

            between......and...表示一个连续的范围内

          - 特点:可以为多列设置唯一约束

     

                    select * from 表名 where id between 1and5;

        - 非空约束

    自动:当表上定义主键约束、唯一、外键约束时,该表会被系统自动添加上索引。

        空判断

          - 作用:保证数据不为空

     

            判空

          - 语法:

    手动:手动在相关表或列上增加索引,提高查询速度。

                    is null;

              create table table_notnull

     

            判 非空 is not null;

              (

    删除索引方式:

        优先级

              name varchar(30) not null

     

            小括号,not,比较 运算符,逻辑运算符

              )

    自动:当表对象被删除时,该表上的索引自动被删除

            and比or先运算,如果同时出现并希望先算or 下需要结合()使用

        - 默认约束

     

        集合

          - 作用:给字段设置默认值

    手动:手动删除指定表对象的相关列上的索引

            count(*) 表示计算子总行数,括号中写(*/列名) 结果是一样的

          - 语法:

     

            max(列名) 表示求此列的最大值

              create table table_default

    索引类似于书籍的目录,可以快速定位到相关的数据,一个表可以有多个索引。

            max(列名) 表示求此列的最大值

              (

     

            min(列名) 表示求此列的最小值

              sex char(2) default ‘男’

     

            sum(列名) 表示求此列的和

              )

     

            avg(列名) 表示求此列的平均值

        - 检查约束

    创建索引:create index indexname on student(uid,uname) ;

        分组

          - 作用:检查数据的完整性

     

            按照字段分组,表示此字段相同的数据会被放到一个组中

          - 语法:

    删除索引:drop index indexname on student ;

             分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中 可以对分组后的数据进行统计,做聚合

              create table table_check

     

            语法

              (

     

                     select 列1,列2,聚合... from 表名 group by 列1,列2,列3...

              sex char(2) check(‘男’ or ‘女’)

     

                    例:select gender as 性别,count(*)from studentsgroup by gender;

              )

    视图:

                    select 列1,列2,聚合... from 表名group by 列1,列2,列3...having 列1,...聚合...

              create table table_enum

     

                    select gender as 性别,count(*)from studentsgroup by genderhaving gender=1;

              (

    视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据。

                    select count(*)from studentswhere gender=1;

              sex enum(‘男’,’女’) 

     

            对比

              )

    视图的作用、优点:

                    where是对from后面指定的表进行数据筛选,属于对原始数据的筛选

        - 外键约束

     

                    having是对group by的结果进行筛选

          - 作用:让两表之间产生联动关系

    限制对数据的访问

        排序

          - 语法:

     

            select * from 表名order by 列1 asc|desc,列2 asc|desc,...

              create table class

    让复杂查询变得简单

                    例:select * from students where gender=1 and isdelete=0order by id desc;

              (

     

        分页

              id int primary key auto_increment,

    提供数据的独立性

            select * from 表名limit start,count

              classname varchar(30) not null

     

                    从start开始,获取count条数据 start索引从0开始

              ) 

    可以完成对相同数据的不同显示

              create table score

     

              (

    创建视图:

              id int primary key auto_increment,

     

              chinese_score int not null,

                    create view viewname

              foreign key(id) references class(id)

     

              )

                    as

          - 要想删除class表和score表,首先要删除score表

     

    16. 为数据增补约束

                    select uid,uname from student;

      - 16.1 添加/删除主键约束

     

        - 添加主键约束

    通常我们不对view做修改操作,我们可以加上with check option      

          - 语法:alter table table_name add constrain con_name primary key(col_name)

     

        - 删除主键约束

                    create view viewname

      - 16.2 外键约束

     

        - 添加外键约束

                    as

          - 语法:alter table table_name add constrain con_name foreign key(col_name) references table(col_name)

     

        - 删除外键约束 

                    select uid,uname from student

      - 16.3 检查约束

     

        - 添加检查约束

                    with check option ;

          - 语法:alter table table_name add constraint con_name check(expression)

     

        - 删除检查约束

    删除视图:drop view viewname ;

      - 16.4 默认约束

     

        - 添加默认约束

     

          - 语法:alter table table_name alter col_name default value

     

        - 删除默认约束

    数据操作:

      - 16.5 自动增长

     

        - 添加自动增长

    插入语句:

          - 语法:alter table table_name modify column col_name type auto_increment

     

        - 删除自动增长

              insert into 插入:

    17. 条件查询

     

      - 17.1 普通条件查询

              insert into student(uid,uname) vaules(1,’dxd’) ;指定列插入

        - 语法:select * from table where expression

     

        - where:将查询到的数据,通过where后的expression一条一条的进行筛选,符合要求则显示,不符合要求则去除。

              insert into student values(2,’dd’,xx,xxx,xxxxx) ;完全列插入

        新葡亰496net 33

        新葡亰496net 34

     

      - 17.2 模糊查询

              insert into student values(3,’gg’,xxx,xxx,xxxxx),

        - 语法:

     

          -  between….and….

                                                   (4,’dg’,xxx,xxx,xxxxx),

          -  范围查询  in 、or

     

          -  like 通配符 %和_

                                                   (5,’tg’,xxx,xxx,xxxxx) ;多个记录插入。

      - 17.3 查询空值的运算符

     

        - is null

              set插入:

    18. 数据排序

     

      - 作用:对查询出的数据进行升序或降序排列

                        insert into student set uid=6 , uname=’hh’ ;

      - 语法:select col11,col2,col3…from table order by order_by_collist[asc/desc]

     

      - 18.1 多列排序:

    更新数据:

        - 关注点:升序、降序、优先级

        新葡亰496net 35

                        update student set uname=jdk where uid = 4 ;

     19. 数据分组

     

      - 语法:select col1..col2.. from table Group by col分组配合排序

                        update student set sscore = sscore 10 ;

      - 注意:如果使用了group by分组,那么select不允许出现其他列,除非这些列包含在分组中

     

    20. 聚合函数

    删除数据:

      - 作用:对多条数据做统计功能

     

      - 注意:在使用聚合函数后,select后不允许出现其他列,除非这些列包含在分组中或者聚合函数中

       新葡亰496net 36

                       delete from student ;删除全部数据,和truncate一样。

      - 20.1 常用聚合函数

      新葡亰496net 37

     

      - 20.2 聚合函数与Group by语句配合使用

       新葡亰496net 38

                       delete from student where uid = 3 ;

    21. Having by语句

     

      - 作用:having by为group by之后得到数据进行进一步的筛选

    select查询:

      - 类似于select 和 where的关系。Where为select后的数据进行进一步的筛选。

     

        - Having by 为group by后的数据进行筛选

                      查询表中所有信息:select * from student ;

    22. Limit关键字的使用

     

      - 语法:

                      查询指定列和条件的数据:

        select * from table limit m

     

        select * from table limit m,n

                                select uid,uname from student

    23. sql语句执行顺序

     

      — from 表名

                                where uid > 3 ;

      — where

     

      — group by

                      as对列重命名

      — select distinct *

     

      — having

                               select uid ad id from student ;

      — order by

     

      — limit

                      常量查询:select 9 1 ;

    24. 连接查询

     

      - 当查询结果的数据来自多张表的时候,需要将多张表连接成一个大的数据集,再选择合适的列进行返回。

      新葡亰496net 39

      新葡亰496net 40

      新葡亰496net 41

                      去掉重复查询:distinct

      - 24.1 内连接:选择两种表中交叉的数据进行返回

     

      - 24.2 左连接:选择左表全部数据以及右边中和左表相同的数据

                     where查询:比较,and,or,in,like,between and , order by,

      - 24.3 右连接:选择右表全部数据以及左表中和右表相同的数据

     

      - 24.4 笛卡尔积:两张表数据行的乘积

                                       is null ,is not null , not , not in ,

    25. 自关联

     

      - 概念:让某张表自己和自己进行连接。

    Mysql和SQL的语法差不多是一样的,分为以下几个大类。 1、 数据定义语言(DDL):create , alter ,drop 等 2、 数据操作语言(DML):如插...

    26. 子查询

      - 概念:将一个查询结果在另一个查询中使用,称之为子查询。

      - 语法:select * from (select col1,col2,col3 from table) as t

      - 26.1 子查询分类

        - 独立子查询:

          - 子查询可以独立运行

        - 相关子查询:

          - 子查询中引用了父查询的结果或者父查询中引用了子查询的结果,子查询和父查询都不可以独立运行

      -26.2 子查询注意点:

        - 如果主查询使用到子查询的数据,则必须给子查询起一个表名。

        - 在子查询使用关系运算符的时候要注意,因为子查询有可能返回多个值。

    ps:由于这篇随笔有几段代码写的不严谨,故续写了一下常用的SQL代码总结,双手奉上:

     

    本文由新葡亰496net发布于网络数据库,转载请注明出处:mysql学习的笔记A,MySql命令行命令和SQL语句

    关键词: