mysql基本命令1

-- 第一个mysql自带有个问题
-- mysql默认的编码集是latin1,修改成utf8mb
use shujia;
-- 建表语句
-- create table 表名(
--     字段名字 字段类型,
--     字段2,
--      ....
--      字段n
-- )
-- 字段定义属性时,必须给上长度,int比较特殊 不需要给默认长度为11
-- create table students(
--     id int(11),
--     name VARCHAR(255),
--     age int
-- );
-- drop table if exists students;


-- create table 表名(
--     字段名字 字段类型 字段属性,
--     字段2,
--      ....
--      字段n
-- )
-- 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
-- AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
-- PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔
-- 自增只能加给数值
-- drop table student;
-- create table student(
--     id int(11) AUTO_INCREMENT,
--   name varchar(255) AUTO_INCREMENT,
--     PRIMARY KEY(id)
-- )ENGINE=INNODB default charset=utf8;


-- sex
-- enum类型 所修饰的字段 有固定的值
-- 字段名字 enum('值1','值2')
-- enum类型 所修饰的字段 有固定的值通常 这些值用数字表示
-- drop table student;
-- create table student(
--     id int AUTO_INCREMENT,
--     name VARCHAR(255) not null,
--     age INT,
--     sex enum('0','1','2'), -- sex 男 女 未知
--     PRIMARY KEY(id)
-- );
-- drop table student;
-- create table student(
--     id int,
--     name varchar(255),
--     age int not null DEFAULT 18
-- );

-- 1500100001,施笑槐,22,女,文科六班
create table students(
    id int(11) not null AUTO_INCREMENT,
    name VARCHAR(255) not null,
    age int DEFAULT 18,
  sex enum('0','1','2') default '2',
    clazz enum('文1','文2','理1','理2'),
  PRIMARY KEY(id)
);

set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
然后关闭连接重新打开

关系型:以行作为记录,列数相同
非关系型:以列作为记录,行数随便

服务器->数据库->表(行列组成的二维表格)->行
client操作服务器通过命令登录操作:mysql -u用户名(默认root) -p密码

SQL语句:每个命令执行结束加分号结束
    查询所有数据库:show databases;
    切换数据库:use 库命名;
    创建数据库:create database [IF NOT EXISTS] 库名;
    删除数据库:drop database [IF EXISTS] 库名;
    查询数据库创建:show 建库语句;
    指定数据库采用的字符集:CHARACTER SET
    注意:不要修改mysql服务器的编码集,表的编码集默认和库一致

#### 修改MySQL编码

* 编辑配置文件:```vim /etc/my.cnf``
    [client]
    default-character-set = utf8mb4
    [mysqld]
    character-set-server = utf8mb4
    collation-server = utf8mb4_general_ci

* 重启MySQL
    systemctl restart mysqld


* 登录并查看MySQL编码
  # 123456需替换为自己的密码
  mysql -uroot -p123456
  
  # 需在MySQL的shell中执行
  show variables like "%char%";    


建表
    格式:
        create table [if exists] 表名(
            字段1 数据类型 字段属性,
            字段2 数据类型 字段属性,
            ...
            字段N 数据类型 字段属性
        )engine=引擎 default charset=编码集;
    查看当前数据库:select database();
    查看建表语句:show create table 表名;
    查看表结构:desc 表名;
    删除:drop table [if exists] 表名;

    字段属性:
        
        not null:没给值数据为默认值(varchar默认值为空)
        AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
        PRIMARY KEY关键字用于定义列为主键,您可以使用多列来定义主键,列间以逗号分隔
        ENGINE 设置存储引擎,CHARSET 设置编码
        default null:没给值数据就是null
        default 值:设置字段的默认值
    注意:主键不重复的列

修改表结构:alter table
alter 类型(库、表字段)
alter table 表名 character set gbk;--编码改为gbk
    1、修改表名:alter table  旧表名 rename to 新表名;
eg、alter table student rename to students;--把表student改名为students
    2、添加字段:alter table 表名 add 字段 字段数据类型 属性;
eg、alter table students add baidu varchar(255);--添加baidu字段
    3、删除字段:alter table 表名 drop 字段名;
        alter table students drop baidu;--删除baidu字段
    3、(1)修改字段:alter table 表名 change 旧字段 新字段 数据类型 属性;
eg、alter table students change age ages int;--把表students中age改名为ages
                       (2)修改字段:alter table 表名 modify 字段 数据类型 属性;(在原字段修改,不能修改字段名称)
eg、alter table students modify age int;--把表students中age类型改为int;
    注意:
        change:修改所有(字段名,数据类型,属性)
        modify:修改一部分(数据类型,属性)
        修改数据类型时,varchar->int元数据会变为0

增删改查:字符串全部使用''包起来
(字段用反引号,值用单引号在数据库中只需在是字符串类型的加引号即可)
注意:
最好在值一栏无论什么类型都用单引号括起来。--(为了方便与其他语言的使用)
添加时字段和值的数量和位置都要一一对应
并且一定要有值、字段可以不按照顺序给
    增:
        格式:
            insert into 表名(字段1,字段2...字段n) values('值'),('值')...('值');
        例如:
            insert into stduent(name) values('zs');
            insert into stduent(name) values('zs'),('ls');
            insert into `students` (`id`,`name`,`age`,`sex`) values('1005','t','18','0');
    删
        格式:
            delete from 表名 where 子句;
        eg/.           delete from students where id='1007';
            delete from students where sex='0';
            delete from students where name like 't%';--模糊查询删除名字以t开头的所有字段
            
    改
        格式:
            update 表名 set 字段1=值1,字段2=值2...字段N=值N where 子句;
            update students set name='z',age=19,sex='1' where id=1002;--在id=1002行中name改为z,age=19,sex=1

    查
        格式:
            select 字段 from 表名 where 子句;
            select age as '年龄',name as '姓名' from students;(as 可以不写)
        注意:
            *表示所有字段
            select * from students;
            先走from获取所有数据,然后select进行显示
            select name,age from students;

as起别名
    格式:
        字段 as 名称
    注意:
        as 也加可不加
where子句:
    >   <   <=   >=   =    <>    大于、小于、大于(小于)等于、不等于
    between  ...and...    显示在某一区间的值(含头含尾)
         eg.1 select * from students where age between 18 and 23;
    in(set)    显示在in列表中的值,例:in(100,200)只能匹配100或200
         eg.2    select * from students where age in(18,22);--查询表students中年龄18和22的
    like '张_'    模糊查询  使用% 和 _(%表示匹配所有 _匹配一个)
         eg.3     select * from students where name like 'zs';--表中查询名字zs
    select * from students where name like 'z%';--表中查询所有名字以z开头的
    select * from students where name like 'z_';--表中查询一个的所有
    (如果表中含有zs,zss ,zx)z%--都显示,z_--只显示zs,zx,z__--只显示zss
    Is null    判断是否为空
         eg.4 select * from students where name is null;

    and    多个条件同时成立
    or    多个条件任一成立
    not    不成立,例:where not(expection>10000);
    select * from students where age >=18 or age<=22;
    select * from students where age >=18 and age<=22;
    select * from students where not (age>18);
    select * from students where name is not null;
    
limit分页
    格式:
        语句 limit 开始下标,长度;
    注意:
        如果数据量不够,显示全部
    例如:从下标为0开始显示10条
        select * from stduents limit 0,10;    

去重
    格式:
        DISTINCT 字段1,字段2...字段N
        select distinct age,name from student;
    注意:
        字段不能在DISTINCT之前,只能在DISTINCT后面
        DISTINCT之后有多个字段,按照所有字段进行去重
拼接    
    格式    CONCAT(str1,str2,...)
        CONCAT_WS(sparactor,str1,str2,...)
        select *,concat(s,'--',city) from test;--表中s和city用--拼接 
        select * ,concat_ws('-',s,city) from test;
        

聚合函数:
    count(字段):求多少行数据
        select count(age) from student;--求age的个数,为null不计
        select count(*) from student;--求数据有多少行
    sum(字段):求和
    avg(字段):平均数
        select avg(age) from student;
    max(字段):最大值
        SELECT max(name) from student;
    min(字段):最小值
        select min(age) from student;
    注意:
        varchar能比较大小(字母排序),不能获取avg(没有任何意义)
        如果值为Null不参与计算
        sum和avg字段的数据不是数值,结果都是0
针对浮点类型的计算
ROUND(X,D) D表示保留几位小数 只会对所保留的数据最后一位进行四舍五入
ROUND(X)   一个参数 只会对小数点后一位数进行四舍五入
FLOOR(X) 10.2 --10 (向下取整)
CEIL(X)      10.2 --11(向上取整)
RAND() 随机产生0-1的小数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值