初学数据库mysql

SQl语句不区分大小写

SQL语句可单行或多行书写,以  ;结尾

SQL语句顺序:from—>where--->select--->其他

一个数据库对应一个文件夹,可在硬盘中进行相应的操作

登陆:

        mysql -u用户名 -p密码

退出:quit

mysql -h    服务器

mysql -P    端口号    -->  小写p是密码,大写P是端口号

注释:

    单行注释:--

    多行注释:/*.......*/




命令:

    show databases:显示当前数据库

    drop database 数据库名:删除数据库

    create database 数据库名:创建数据库

    select now():打印当前时间

    create database if not exists 数据库名:如果当前数据库不存在,则创建,如果存在,不进行操作

    show create database 数据库名:查看数据库信息

    character set 编码方式:在创建数据库时,后面加上此命令可改变编码方式

    alter database 数据库名 character set 编码方式:用于创建完数据库之后重新修改编码方式

    use 数据库名:进入当前数据库    --> 进入之后不能退出,可以通过use命令进入其他数据库

    select database():查看当前属于哪个数据库



数据类型:   

    数字类型:

        浮点型:

            float(4,2)      4是全长,  2是小数点后位数

            double(4,2)

        整形:

            TINYINT:   1字节

            SMALLINT:2字节

            MEDUMINT:3字节

            INT:4字节

            BIGINT:8字节

    字符串数据类型:

        utf-8中一个汉字3个字节

            char(3):只能存3个字节的字符串

            varchar(20):最多存20个字节的字符串

            blob:存二进制

            text:文本

    时间数据类型:

            DATE:YYYY-MM-DD类型

            TIME:HH:MM:SS

            YEAR: YYYY

            DATETIME: YYYY-MM-DD HH:MM:SS

            TIMESTAMP:   混合日期和时间值得时间戳




表操作:

    CREATE TABLE 表名(字段名 数据类型[约束条件],下一个):创建表

            ↑↑↑         emm        id       TINYINT primary key    <--主键

    约束条件:

            PRIMARY KEY:主键

            AUTO_INCREMENT:自增

            DEFAULT:默认值

            NOT NULL:不为空

            .....

    create table 表A (select * from 表B):在创建表A时,将表B的全部记录添加进去

    show table;    查看当前数据库内所有表

    desc 表名:   查看表信息

    show create table 表名  :显示创建表时的信息

    alter table 表名 add 字段名 数据类型:在表中新建字段

    alter table 表名 add 字段名 数据类型,add 字段名 数据类型:     可同时添加多个字段

    alter table 表名 drop 字段名:    删除表中字段

    alter table 表名 drop 字段名,drop 字段名:    可同时删除多个字段

    alter table 表名 modify 字段名 数据类型[约束条件][first    或    after 字段名]:   修改表中字段的数据类型位置等等

    alter table 表名 change 原字段名 新字段名 数据类型 [约束条件][位置]:  修改表中的字段名称,数据类型,位置等等

    rename table 原表名 to 新表名:  修改表名

    drop table 表名:删除表


添加表记录:

    insert into 表名 (字段名,字段名)  values (值,值):  为字段增加记录,没有为空约束的可以不填

    insert into 表名(字段名,字段名) vlues (值,值),(值,值):可添加多条记录

    insert into 表名 values (值,值):这种方式添加记录,必须逐条添加所有字段

    insert into 表名 set 字段名=值,字段名=值   :为字段添加记录

修改表记录:

    update 表名 set 字段名=值  :修改一整列的数据,单独修改需用筛选

删除表记录:

    DELETE FROM 表名: 删除表中所有的记录,单独删除需用筛选

    truncate table 表名:删除整个表的记录

查询表记录:

    select 字段名 from 表名  :查询当前字段所有记录,单独查询需用筛选

    select 字段名 ,字段名  from 表名:查询多个字段

    select distinct 字段名 from 表名:去处重复项

    select 字段名 as 别名 from 表名:显示结果时,用别名代替字段名 ,只显示一次,数据库内字段名不改变,as可以省略

    筛选:    

        where 字段名 判断符 值:     where不能用别名

            <  >  =  <=   >=  !=

            between a and b :值在a与b中间

            in(a,b,c)       :值是a或b或c

            like "李%"    %匹配任意的任意个字符

                “李_”    _下划线匹配一个字符

            逻辑运算符:

                        and or not

排序:

    order by 字段名 排序[默认正序,desc是倒序]:  可以用别名

分组:

    group by 字段名/或字段顺序[从左到右,从1开始]:每一组只显示第一条记录

    having:过滤筛选,用于分组后的数据,跟where功能相似,having可以替换where,where不能替换having

    聚合函数:用于分组的数据

        sum(字段名):用于分组是求总和,放在select中

        count(字段名):计数

        avg(字段名):求平均值

        avg(ifnull(字段名,0)):如果字段为空,用0代替计算

        max(字段名):求最大值

        min(字段名):求最小值


limit限制:

    select * from 表名 limit 限制数(n)  :显示前n条记录

    select * from 表名 limit n,y     :从第n条记录开始,向后显示y条记录


正则查询:     REGEXP

        where 字段名 regexp '正则表达式'


外键:被绑定的表是主表,绑定外键的表是从表

    创建表时,创建外键:

                foreign key(字段名)references 表名(字段名)

                                     ↑绑定                       ↑被绑定

                create 表名() ENGINE=INNODB: 外键约束

    给表插入一个外键:

                alter table 表名 add constraint 外键名称 foreign key (字段名) references 表名(字段名)

    删除外键:

                alter table 表名 drop foreign 外键名称

    级联删除:

                foreign key(字段名)references 表名(字段名) on delete cascade

                        ↑↑   创建外建时加上这句,父表内记录删除时,会自动删除子表的绑定记录

                foreign key (字段名) references 表迷(字段名) on delete set null

                        ↑↑   创建外键时加上这句,父表内记录删除时,会自动将字表的绑定记录改为null


多表查询:

    连接查询:   

        内连接:inner join

        外连接:left join  , right join

        全连接:full join 

   内连接:显示两个表中都能匹配到的记录

            select * from tableA,tableB where tableA.id=tableB.aid;

    外连接:

            left join:以左表为主,在左表中有,但右表中没有匹配到的也会显示,对应值为null

            right join:以右表为主

    全连接:

            full join: mysql中不支持,但可以用



多表查询筛选

                select * from tableB left join tableA on    :用on筛选

多表查询之子查询:

        in关键字:

                select * from 表A where 字段1 in (select 字段2 from 表B):查询字段1在表B中的字段2中的所有记录



EXISTS关键字:返回TRUE或者是FALSE

            select * from 表A  where EXISTS (select 字段2 from 表B where 条件):

                      ↑↑如果括号内的查询有数据,则EXISTS返回TRUE,执行 select * from 表A ,否则不执行

索引:

    普通索引

    唯一索引

    全文索引

    多列索引

    .......

        

        create table 表名(字段A 类型,字段B 类型,index|key [索引名称] 字段A)

                ↑↑ index或key命令创建普通索引,将字段A作为普通索引

            在index前面加上[    unique  |        fulltext        |     spatial ]  创建各种索引

                                        ↑唯一索引        全文索引            空间索引

            多列索引:

                    index [索引名称] (字段A,字段B):多个字段创建索引

SQ1L语句顺序:from—>where--->select--->其他

猜你喜欢

转载自blog.csdn.net/qq_41823953/article/details/80346596